roa*_*r10 1 java google-sheets-api
使用 Google Sheets API v4 更新 Google 电子表格上的 30 列时出现此错误。
使用日期值作为字符串更新谷歌电子表格列标题的代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd");
Calendar calendar = new GregorianCalendar(2017, 10, 01);
// # of days
for (int i = 0; i < 30; i++) {
String varDate = sdf.format(calendar.getTime());
System.out.println("Date : " + varDate);
calendar.add(Calendar.DAY_OF_MONTH, 1);
values.add(new CellData().setUserEnteredValue(new ExtendedValue().setStringValue(varDate)));
requests.add(new Request().setUpdateCells(new UpdateCellsRequest()
.setStart(new GridCoordinate().setSheetId(0).setRowIndex(0).setColumnIndex(i))
.setRows(Arrays.asList(new RowData().setValues(values))).setFields("*")));
}
BatchUpdateSpreadsheetRequest batchUpdateRequest = new BatchUpdateSpreadsheetRequest().setRequests(requests);
service.spreadsheets().batchUpdate(spreadsheetID, batchUpdateRequest).execute();
Run Code Online (Sandbox Code Playgroud)
错误日志:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Invalid requests[0].updateCells: Attempting to write column: 26, beyond the last requested column of: 25",
"reason" : "badRequest"
} ],
"message" : "Invalid requests[0].updateCells: Attempting to write column: 26, beyond the last requested column of: 25",
"status" : "INVALID_ARGUMENT"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at main.java.Quickstart.fillRowAndColumnHeadings(Quickstart.java:143)
at main.java.Main.main(Main.java:15)
Run Code Online (Sandbox Code Playgroud)
我不确定是否为 Google 表格设置了任何默认列数,如果是,我该如何覆盖默认值?基本上我想创建一个谷歌电子表格,列作为一个月的日期(在上面的例子中,11 月的日期),行作为小时时间戳。这个问题的任何输入/指针?提前致谢。
小智 5
您必须使用“appendDimension”API 扩展列数。
请参阅此处的文档(https://developers.google.com/sheets/api/samples/rowcolumn#append_empty_rows_or_columns)
Request request = new Request();
AppendDimensionRequest appendRequest = new AppendDimensionRequest();
appendRequest .setDimension("COLUMNS");
appendRequest .setLength(50);
request .setAppendDimension(appendRequest );
BatchUpdateSpreadsheetRequest request = new BatchUpdateSpreadsheetRequest().setRequests(Arrays.asList((request ));
BatchUpdateSpreadsheetResponse response = sheetsService.spreadsheets()
.batchUpdate(sheetId, request)
.execute();
Run Code Online (Sandbox Code Playgroud)