调用Google Sheets API V4追加数据返回Invalid JSON payload错误
问题原因
- 端点使用错误:追加工作表数据需要调用专门的
values:append接口,你当前使用的普通资源路径不支持POST提交数据新增操作。 - 请求格式错误:你指定了
dataType: jsonp,JSONP仅支持GET请求,所有提交参数会被自动拼接至URL查询参数中,而Google Sheets API要求values、majorDimension这类业务参数必须放在请求体中传递,因此API无法在请求报文中识别到对应字段,直接触发你收到的报错。 - 权限配置错误:仅使用API key仅拥有公共表格的只读权限,要执行数据追加这类写操作,必须配置OAuth 2.0授权,获取对应表格的编辑权限。
- 参数格式错误:
values字段要求传入二维数组格式,你当前传入的是字符串'32',不符合接口要求。
解决方法
修正后的代码示例如下:
// 注意:执行前需先完成OAuth 2.0授权,获取合法的access_token $.ajax({ url: 'https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEETID/values/TAB:append?valueInputOption=USER_ENTERED', type: 'POST', headers: { 'Authorization': 'Bearer 你的有效access_token', 'Content-Type': 'application/json' }, data: JSON.stringify({ majorDimension: 'ROWS', values: [['32']] }), success: function (data) { console.log(data); }, error: function (err) { console.error(err); } });
调整要点如下:
- 替换请求端点为
values:append格式,同时在查询参数中新增valueInputOption,可选择USER_ENTERED(按用户输入格式解析内容)或RAW(纯文本格式存储)。 - 移除
dataType: jsonp配置,添加请求头Content-Type: application/json,同时将提交的参数用JSON.stringify()转为JSON字符串放在请求体中。 - 完成OAuth 2.0授权流程获取
access_token,添加到请求头的Authorization字段中,确保授权账号拥有对应表格的编辑权限。 - 修正
values参数格式为二维数组,每一个内层数组对应一行数据,数组内的每个元素对应一个单元格的内容。
内容的提问来源于stack exchange,提问作者Guillermo Oramas R.
相关产品推荐
相关产品推荐

