"Invalid requests[0].updateCells: Invalid field" 在 googlespreadsheet 上使用 barchUpdate 时 API

"Invalid requests[0].updateCells: Invalid field" when using barchUpdate on googlespreadsheet API

$range1 = new Google_Service_Sheets_GridRange();
$range1->setStartRowIndex(92);
$range1->setEndRowIndex(92);
$range1->setStartColumnIndex(4);
$range1->setEndColumnIndex(4);
$range1->setSheetId(1433074761);

$range2 = new Google_Service_Sheets_GridRange();
$range2->setStartRowIndex(92);
$range2->setEndRowIndex(92);
$range2->setStartColumnIndex(2);
$range2->setEndColumnIndex(2);
$range2->setSheetId(1433074761);

$request1 = new Google_Service_Sheets_UpdateCellsRequest();
$request1->setFields('aaaaaaaaaaaaaaaaaaaaaaaaaaaa');
$request1->setRange($range1);
$body1 = new Google_Service_Sheets_Request();
$body1->setUpdateCells($request1);



$request2 = new Google_Service_Sheets_UpdateCellsRequest();
$request2->setFields('aaaaaaaaaaaaaaaaaaaaaaaaaaa');
$request2->setRange($range2);
$body2 = new Google_Service_Sheets_Request();
$body2->setUpdateCells($request2);

$batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
$batchUpdateRequest->setRequests([$body1, $body2]);

所以我能够修复我遇到的错误,但现在我收到通过 setFields 方法输入的字段的错误。我以为你可以放任何字符串,但似乎根本不是这样。文档似乎没有提供可能的问题。

我收到错误:

Fatal error: Uncaught Google\Service\Exception: {
  "error": {
    "code": 400,
    "message": "Invalid requests[0].updateCells: Invalid field: aaaaaaaaaaaaaaaa
aaaaaaaaaaaa",
    "errors": [
      {
        "message": "Invalid requests[0].updateCells: Invalid field: aaaaaaaaaaaa
aaaaaaaaaaaaaaaa",
        "domain": "global",
        "reason": "badRequest"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }
}

https://developers.google.com/resources/api-libraries/documentation/sheets/v4/php/latest/class-Google_Service_Sheets_GridRange.html

文档本身说参数可以混合,所以可以是任何东西,但它似乎不起作用。

https://php.watch/versions/8.0/mixed-type

尽管参数的类型是混合的。这并不意味着价值可以是任何东西。需要在参考文档中查看。

UpdateCellsRequest,

fields - string ( FieldMask format)

The fields of CellData that should be updated. At least one field must be specified. The root is the CellData; 'row.values.' should not be specified. A single "*" can be used as short-hand for listing every field.

查看 CellData 的可用字段 here


关于您的代码,我担心的是,您打算使用 UpdateCellsRequest,但没有提供要使用的 rowData(要写入的数据)。您刚刚提供了一个网格范围(写入数据的范围)。