当前位置: 首页 > 知识库问答 >
问题:

使用Google Sheets API写入工作表

衡泰
2023-03-14

我想写数据到我的工作表:

$spreadsheetId = 'xxx';
$range = 'Test!A1:D5';

$values = [
  'range' => "A1",
  'majorDimension' => 'DIMENSION_UNSPECIFIED',
  'values' => [
    ["Item", "Cost", "Stocked", "Ship Date"],
    ["Wheel", "$20.50", "4", "3/1/2016"],
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "30/20/2016"],
  ],
];

$body = new Google_Service_Sheets_ValueRange(array(
  'values' => $values
));
$params = array(
  'valueInputOption' => 'RAW'
);
$result = $service->spreadsheets_values->update($spreadsheetId, $range, $body, $params);

但在日志中我看到:

PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message '{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"range\" at 'data.values': Cannot find field.\nInvalid JSON payload received. Unknown name \"major_dimension\" at 'data.values': Cannot find field.",
    "errors": [
      {
        "message": "Invalid JSON payload received. Unknown name \"range\" at 'data.values': Cannot find field.\nInvalid JSON payload received. Unknown name \"major_dimension\" at 'data.values': Cannot find field.",
        "domain": "global",
        "reason": "badRequest"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }
}

我做错了什么?我将非常感谢为您提供的示例代码:)

在例子中没有足够的信息(https://developers.google.com/sheets/api/guides/values#writing_to_a_single_range)

共有3个答案

堵毅然
2023-03-14

这里的情况并非如此,但我通过从values数组中的项中删除NULL值,解决了类似的问题。

谷歌的PHP库似乎很难解析这些值,最终生成了一个无效的JSON有效载荷。

袁波
2023-03-14

试试这个:

$spreadsheetId = 'xxx';
$range = 'Test!A1:D5';

$values = [
    ["Item", "Cost", "Stocked", "Ship Date"],
    ["Wheel", "$20.50", "4", "3/1/2016"],
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "30/20/2016"],
];

$updateBody = new Google_Service_Sheets_ValueRange([
    'range' => $range,
    'majorDimension' => 'ROWS',
    'values' => $values,
]);

$valueInputOption = 'USER_ENTERED'; // Or RAW       

$params = [
  'valueInputOption' => $valueInputOption
];

$result = $this->sheetsService->spreadsheets_values->update(
    $spreadsheetID,
    $updateRange,
    $updateBody,
    $params
); 
况浩邈
2023-03-14

你快到了。不要忘记包括图纸名称

 "range": "Sheet1!A1:D5"

查看基本写作指南以了解更多示例。

 类似资料:
  • GoogleSheets文档可以包含一些表单。第一个是默认值和“0”。一般情况下,任何工作表都有如下地址: https://docs.google.com/spreadsheets/d/(spreadsheetId)/编辑#gid=(sheetId) 同时具有和。 但是在API文档中没有提到如何使用。我只能读取和编辑给定的默认表格。 如果在来自示例性链接中显示的代码,我添加了属性,我得到错误:

  • 如果我想发布Google Sheets电子表格,以便将其嵌入iframe中的页面,我会手动执行以下操作: 导航到谷歌驱动器 打开一个电子表格 文件 如何在前端使用JavaScript通过GoogleSheetsAPI编程实现上述功能?我正在应用程序中动态生成电子表格,并希望在创建后立即将其嵌入页面。 创建工作表后,我可以使用必要的属性(工作表ID等)动态创建iframe元素。这是一个错误。从这个问

  • 我一直在寻找一个答案或一个例子。我开始使用GoogleAPI sheets v4,并找到了将数据附加到电子表格的答案,其中的问题在这个堆栈问题中 尽管该解决方案是功能性的,但它不可伸缩,它以增量方式向工作表中添加值,而不检查标题。我真正想做的是为标题行“Defect”=“x”标题行“Date”=y等添加hashmap之类的值。 有没有人有一个解决这个问题的示例,或者你能告诉我一个可以用来回答这个问

  • 我正在使用谷歌工作表来保存共享项目的数据。我使用Google的Sheets API访问数据,用python处理数据,并尝试在function writer中使用batchUpdate更新Sheets文件。 如果我将此函数数据作为列表传递,它将按预期工作 GoogleapClient。错误。HttpError: 任何指点都将不胜感激。

  • 问题内容: 我有一个很少设置参数的jenkins作业,并且在工作区中有一个JSON文件,该文件必须使用通过jenkins传递的参数进行更新。 例: 我有以下参数,我将从触发作业的用户那里获取输入: 环境(考虑用户选择“ ENV2”) 文件名(考虑用户保留默认值) 我的工作空间中有一个json文件,位于run / job.json下,内容如下: 现在,用户在触发作业之前给定的任何值都必须在job.j

  • 我正在尝试使用Spark-CSV(https://github.com/databricks/Spark-CSV)将DataFrame写成CSV文件 而不是 伦敦 哥本哈根 莫斯科