我使用Google表格跟踪我网站上的最近订单。我想将每个新订单的详细信息添加到Google电子表格中,并将最新的订单详细信息显示在工作表的顶部,而较旧的条目显示在底部。
我知道我可以在最后一行之后添加新行而不知道/使用以下代码向Google提供行号:
// INSERTS NEW DATA AFTER LAST ROW
ValueRange body = new ValueRange().setValues(writeData);
AppendValuesResponse appendValuesResponse =
service.spreadsheets().values().append(spreadsheetId, range, body)
.setValueInputOption(valueInputOption)
.execute();
但是,这意味着较新的条目会添加到工作表的底部而不是顶部。我的要求恰恰相反。我需要在工作表顶部添加/附加较新的条目,并将较旧的条目移到底部。
有没有办法使用API本地完成此操作?
答案 0 :(得分:0)
没有直接的方法。您最接近操作工作表中数据顺序的机会是Sort a range with multiple sorting specifications或者使数据从底部添加到工作表(如A + ctr到A + ctr)使用递减变量计数器10-1 )。
答案 1 :(得分:0)
我有一个非常相似的需求,我正在分享我是如何解决它的。
我知道要在顶部插入的行数。我在标题下方的顶部插入了空白行。我根据行数设置 startIndex
和 endIndex
,并在电子表格上请求 BatchUpdate。然后用值更新范围(在这次调用之后现在是空白的)。
log.trace("Inserting Blank Row At the Top of Sheet");
DimensionRange dimensionRange = new DimensionRange();
dimensionRange.setDimension("ROWS");
dimensionRange.setStartIndex(1); // depends on your requirement
dimensionRange.setEndIndex(10); // depends on your requirement
InsertDimensionRequest insertDimension = new InsertDimensionRequest();
insertDimension.setRange(dimensionRange);
Request insertionRequest = new Request();
insertionRequest.setInsertDimension(insertDimension);
BatchUpdateSpreadsheetRequest batchUpdateSpreadsheetRequest = new BatchUpdateSpreadsheetRequest();
batchUpdateSpreadsheetRequest.setRequests(Arrays.asList(insertionRequest));
try {
BatchUpdateSpreadsheetResponse execute = sheets.spreadsheets()
.batchUpdate(spreadsheetId, batchUpdateSpreadsheetRequest)
.execute();
} catch (IOException e) {
log.error("Exception Occurred While Inserting Blank Row - Details: {}", e.getMessage());
e.printStackTrace();
}
Google 参考文档:InsertDimensionRequest - Sheets API Reference
注意:C# 的这个答案帮助我找到了这个 Java 解决方案:https://stackoverflow.com/a/53587428/7878602