【发布时间】:2021-05-26 21:21:19
【问题描述】:
尝试通过 Google Sheets API 和 BatchUpdate 方法向 Google Sheet 添加数据,但出现此错误(不知道它指的是什么)
> PHP Fatal error: Uncaught Google\Service\Exception: { "error": {
> "code": 400,
> "message": "Invalid JSON payload received. Unknown name \"\": Root element must be a message.",
> "errors": [
> {
> "message": "Invalid JSON payload received. Unknown name \"\": Root element must be a message.",
> "reason": "invalid"
> }
> ],
> "status": "INVALID_ARGUMENT" } }
这是我的新代码:
$spreadsheetId = 'myspreadsheetid';
$client = new Google_Client();
$client->setAuthConfig('mycredntials.json');
$client->setApplicationName('Sheet Automation');
$client->setScopes(Google_Service_Sheets::SPREADSHEETS);
$service = new Google_Service_Sheets($client);
$range = 'A2:L';
$valueInputOption = 'USER_ENTERED';
$body = new Google_Service_Sheets_ValueRange([
'values' => $row1
]);
$params = [
'valueInputOption' => $valueInputOption
];
$result = $service->spreadsheets_values->append($spreadsheetId, $range, $body, $params);
编辑:
我从数据库中获取的数据被放入一个数组 ($row1) 中,回显时如下所示:
(
[cdr_id] => myid
[calldate] => 2021-05-27
[src] => mysource
[accountcode] => myaccountcode
[userfield] => disposition
[ivr_std_txn_full] =>
)
然后我获取该信息并使用 implode 将其全部放在一行中(这可能是问题所在)
echo $line1 = implode(',', $row1)
我尝试将值设置为附加到 $row1 和 $line1,但仍然遇到有效负载问题。
【问题讨论】:
-
关于你的请求体,我认为需要修改。但是,不幸的是,我无法从您的问题和脚本中了解您的目标。因此,我无法提出修改后的脚本。我为此道歉。我可以问你目标的细节吗?
-
@Tanaike 是的,基本上我是从数据库中抓取数据以输入到 Google 表格中。这部分代码没有在这里显示,但 $line1 是包含我从数据库中获得的数据的数组。对于请求正文,我想做两件事:将数据附加到新行并将 F 列中新附加的数据拆分为单独的列,因为它是一条长线,数据用逗号分隔,我需要从那里获取一些数据所以是最好的选择
-
感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,我无法从您的回复中想象出您的目标。但我想试着理解它。当我能正确理解它时,我想考虑解决方案。非常抱歉,我无法尽快解决您的问题。
-
你好@UzZzi!该错误声明 JSON 不满足所需的格式。要丢弃配置错误的 JSON,您能否测试一个有效的已知 JSON 并查看它是否会产生错误?
-
嘿@Jacques-GuzelHeron 因此,在稍微更改我的代码以开始简单并找到问题之后,我的目标就是追加新数据。即便如此,它仍然给我同样的问题,所以有效载荷问题是我的数据格式不正确。我与代码一起编辑了我的问题,并添加了更多关于请求中发送的数据的信息。希望它有助于识别问题。感谢您的帮助
标签: php google-sheets-api