使用Google API写入Google表格时出现400错误的排查求助
排查Google Sheets API写入数据的400错误
我来帮你定位这个Invalid JSON payload错误的原因,核心问题出在数据结构与目标单元格范围不匹配,结合你的代码具体分析:
核心问题:数据维度和指定范围不兼容
你代码里指定的写入范围是Sheet1!A1:A4,这代表4行1列的单元格区域;但你准备的values是[ ['value1','value2','value3'] ],这是1行3列的数据。Google Sheets API会因为数据的行列数和目标范围不匹配,判定为无效的JSON payload,从而抛出400错误。
修正方案(二选一即可)
根据你的实际需求调整数据或范围:
- 如果你想把3个值写入同一行的A1:C1:
修改range为Sheet1!A1:C1,保持values不变,代码如下:var values = [ [ 'value1','value2','value3' ] ]; var body = { values: values }; gapi.client.sheets.spreadsheets.values.update({ spreadsheetId: '1Lofhq9R7X5wzGvO7fMViN8D8q1W3fiNxO5jjP7XL_s0', range: 'Sheet1!A1:C1', // 调整为1行3列的范围 valueInputOption:'RAW', resource: body }).then((response) => { var result = response.result; console.log(`${result.updatedCells} cells updated.`); }); - 如果你想把3个值写入A1:A3(纵向排列):
修改values为每行一个值的二维数组,保持range为Sheet1!A1:A3(对应3行1列),代码如下:var values = [ ['value1'], ['value2'], ['value3'] ]; // 调整为3行1列的数据 var body = { values: values }; gapi.client.sheets.spreadsheets.values.update({ spreadsheetId: '1Lofhq9R7X5wzGvO7fMViN8D8q1W3fiNxO5jjP7XL_s0', range: 'Sheet1!A1:A3', // 匹配数据的3行1列范围 valueInputOption:'RAW', resource: body }).then((response) => { var result = response.result; console.log(`${result.updatedCells} cells updated.`); });
额外检查项
如果调整后仍有错误,可以排查这两点:
- 确认
spreadsheetId完全正确,没有多余的空格或字符; - 确保代码中的引号、括号都是英文半角符号,中文符号会导致JSON解析失败。
内容的提问来源于stack exchange,提问作者Jasmine
相关产品推荐
相关产品推荐

