使用Google表格API v4在Google电子表格中更新30列时出现此错误。
更新Google电子表格列标题的代码,日期值为字符串:
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();
错误日志:
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)
我不确定是否为Google表格设置了默认的列数,如果是,我该如何覆盖默认值?基本上我想创建一个谷歌电子表格,其中列为一个月的日期(在上例中,为11月的日期),行为小时时间戳。这个问题的任何输入/指针?提前致谢。
答案 0 :(得分:0)
调试了一下 - 我认为这是用户错误和混合的一个组合。服务器错误。服务器错误是我们似乎在输入大小> 1的情况下给出错误的错误消息。 1,额外的输入超出了网格的边缘。用户错误是您似乎正在将values
收集到其生命周期在循环之外的var中,但是在循环中的每个请求中重复使用它,导致后续请求写入超出预期。有两种可能的解决方案:
1)每次循环时创建一个新的values
var,而不是将新值附加到先前的&amp;重写它们。
或2)附加到values
var,但只生成一个Request
,其值是您要编写的每列的组合值。
答案 1 :(得分:0)
你必须使用&#34; appendDimension&#34;来扩展列数。 API。
请参阅此处的文档(https://developers.google.com/sheets/api/samples/rowcolumn#append_empty_rows_or_columns)
from flask import request
def get(self, address):
# How do I know what get path was called?
print(request.full_path)