使用google电子表格api v4批量更新单个单元格?


$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。

字段:

BATCHUPDATEBATCHUPDATE2不是fields的有效值。field应该引用应该更新的CellData字段之一(例如,userEnteredValue;如果您想更新所有字段,可以将其设置为*)。

有关更多信息,请参见UpdateCellsRequest和FieldMask格式中关于fields的说明。

相关内容

  • 没有找到相关文章

最新更新