[英]Insert New Data to Top of Google Spreadsheet using Google Sheets API v4
我正在使用 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 本地完成此操作?
對此沒有直接的方法。 操作工作表中數據順序的最接近機會是對具有多個排序規范的范圍進行排序,或者使數據從底部添加到工作表中(例如使用遞減變量計數器 10 從 A+ctr 到 A+ctr -1).
我有一個非常相似的要求,我正在分享我是如何解決它的。
我知道要在頂部插入的行數。 我在標題下方的頂部插入了空白行。 我根據行數設置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 參考
注意:C# 的這個答案幫助我找到了這個 Java 解決方案: https : //stackoverflow.com/a/53587428/7878602
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.