如何批量更新电子表格在谷歌表格java api中请求特定的工作表标签?



在谷歌表格java api中,我正在做一个BatchUpdateSpreadsheetRequest,它正在更新工作表中单元格的文本和颜色,但它似乎忽略了我的范围请求,告诉它更新第二个工作表而不是第一个工作表。

当我使用如下所示的字符串列表为整个电子表格设置文本时,我让它工作

service.spreadsheets().values().update(spreadsheetId, "Sheet2", body).execute();

但这并不能处理更改单元格的颜色。 因此,我尝试使用 CellData 对象列表进行批量更新,该列表适用于第一个工作表选项卡,但拒绝遵守告诉每个请求在第二个工作表上工作的范围。 它总是只更新工作表 1 而不是工作表 2。

//for every row, do an update request updating that row 
List<Request> requests = new ArrayList<>();
List<String> ranges = new ArrayList<>();
int row=0;
while(row < values.size())
{
//add the request that will update the rows text and cell colors
requests.add(new Request()
.setUpdateCells(new UpdateCellsRequest()
.setStart(new GridCoordinate().setRowIndex(row).setColumnIndex(0))
.setRows(Arrays.asList(new RowData().setValues(values.get(row))))
.setFields("userEnteredValue,userEnteredFormat.backgroundColor")));
//add the range specifying that this update should be applied to the second sheet
ranges.add("Sheet2");
row++;
}
//Do tha batch update we just defined
BatchUpdateSpreadsheetRequest batchUpdateRequest = new BatchUpdateSpreadsheetRequest()
.setResponseRanges(ranges)  //all ranges are set to "Sheet2" so why are the requests still updating "Sheet1"??
.setRequests(requests);
service.spreadsheets().batchUpdate(spreadsheetId, batchUpdateRequest)
.execute();

如何让它将更新应用于 Sheet2?

在 .NET API 中,有一个具有SheetId属性的GridRange类。

看起来您的GridCoordinate类是相似的,并且具有setSheetId()方法,如Google Sheets API v4文档所示

最新更新