【问题标题】:Updating single cells in batch using googlespreadsheet api v4?使用googlespreadsheet api v4批量更新单个单元格?
【发布时间】:2026-02-22 11:45:01
【问题描述】:
$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 Google\Service\Exception: {
  "error": {
    "code": 500,
    "message": "Internal error encountered.",
    "errors": [
      {
        "message": "Internal error encountered.",
        "domain": "global",
        "reason": "backendError"
      }
    ],
    "status": "INTERNAL"
  }
}

我真的需要打几个电话而不是批处理吗?我正在尝试批量更新单个单元格,而不是多次调用更新调用。

【问题讨论】:

    标签: php google-sheets google-sheets-api


    【解决方案1】:

    您可以在一个batchRequest 中更新多个单元格,但这些单元格应构成一个连续的范围,因为每种类型的Request 每次调用只能提供一次,并且每个UpdateCellsRequest 只能用于更新单个范围。

    因此,为了更新多个不连续的范围,您应该多次调用batchUpdate

    除此之外,您提供的其他字段也存在问题:

    行数据:

    您没有为您的请求设置RowData。没有这个,您将无法将新数据设置为所需的范围。

    setRows和对应的Class Google_Service_Sheets_RowData

    字段:

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

    更多信息请参见UpdateCellsRequestFieldMask格式的fields说明。

    【讨论】:

      最近更新 更多