$range1 = new Google_Service_Sheets_GridRange();
$range1->setStartRowIndex(1);
$range1->setEndRowIndex(1);
$range1->setStartColumnIndex(92);
$range1->setEndColumnIndex(92);
$range2 = new Google_Service_Sheets_GridRange();
$range2->setStartRowIndex(5);
$range2->setEndRowIndex(5);
$range2->setStartColumnIndex(92);
$range2->setEndColumnIndex(92);
$request1 = new Google_Service_Sheets_UpdateCellsRequest();
$request1->setFields('BATCHUPDATE');
$request1->setRange($range1);
$body1 = new Google_Service_Sheets_Request();
$body1->setUpdateCells($request1);
$request2 = new Google_Service_Sheets_UpdateCellsRequest();
$request2->setFields('BATCHUPDATE2');
$request2->setRange($range2);
$body2 = new Google_Service_Sheets_Request();
$body2->setUpdateCells($request2);
$batchUpdateRequest = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
$batchUpdateRequest->setRequests([$body1, $body2]);
文档令人困惑,因为我尝试了几种方法,但都不起作用,这种方法也不起作用。
https://developers.google.cn/sheets/api/reference/rest/v4/spreadsheets/request?hl=zh-cn UpdateCellsRequest
没有其他更新单个单元格的请求,我这样做的方式似乎不起作用。
Fatal error: Uncaught GoogleServiceException: {
"error": {
"code": 500,
"message": "Internal error encountered.",
"errors": [
{
"message": "Internal error encountered.",
"domain": "global",
"reason": "backendError"
}
],
"status": "INTERNAL"
}
}
我真的需要打几个电话而不是批量调用吗?我正在尝试批量更新单个单元格,而不是多次调用更新调用。
您可以在一个batchRequest中更新多个单元格,但是这些单元格应该构成一个单一的、连续的范围,因为每种类型的请求在每次调用中只能提供一次,并且每个UpdateCellsRequest只能用于更新单个范围。
因此,为了更新多个不连续的范围,你应该多次调用batchUpdate
。
除此之外,您提供的其他字段也存在问题:
构成了RowData:您没有为请求设置RowData。否则,您将无法将新数据设置为所需的范围。
参见setRows和相应的类Google_Service_Sheets_RowData。
字段:
BATCHUPDATE
和BATCHUPDATE2
不是fields
的有效值。field
应该引用应该更新的CellData字段之一(例如,userEnteredValue
;如果您想更新所有字段,可以将其设置为*
)。
有关更多信息,请参见UpdateCellsRequest和FieldMask格式中关于fields
的说明。