我遇到与用户相同的困难:this link中的所有问题 - 当我提交以下请求添加一行时,我收到以下错误。
{“errorCode”:1008,“message”:“无法解析请求。发生以下错误:请求正文必须是JSON对象或JSON数组。”}
我相信数据格式正确,我已在jsonformatter.curiousconcept.com验证它是有效的JSON。
var params = {
"headers":{
"authorization":"Bearer <<removed for public posting>>"
},
"contentType":"application/json",
"method":"PUT",
"body":[
{
"toBottom":true,
"cells":[
{
"columnId":4209581015492484,
"value":"New row"
}
]
}
]
}
var response = UrlFetchApp.fetch("https://api.smartsheet.com/2.0/sheets/<<sheet key removed>>/rows", params)
提供给它的好处的答案是问题是由于API 1.1端点的错误而2.0将解决它。但是,我正在使用API 2.0端点并仍然收到错误。
如果有人可以帮助解决这个谜题,我将非常感激!
答案 0 :(得分:1)
使用Postman,Chrome Advanced Rest Client或cUrl等交互式工具进行测试要容易得多。我不确定你的脚本实际上是通过网络发送的。
几点意见
UrlFetch docs示例包括从JS对象到JSON字符串的显式转换:
var data = { ... }
var params = {
'method' : 'post',
'contentType': 'application/json',
// Convert the JavaScript object to a JSON string.
'payload' : JSON.stringify(data)
};
另请注意,在设置params.payload
params.body
此外,PUT /sheets/{sheetId}/rows
用于更新一个或多个现有行。因此,有效负载中的每个行对象都需要行Id。请参阅docs中的示例
或者,您可以POST添加新行。
答案 1 :(得分:0)
这是一个完整的例子:
function addRow(){
var url ="https://api.smartsheet.com/2.0/sheets/5670346721388420/rows";
var data ={
"toBottom": true,
"cells": [
{
"value": "New data",
"columnId": 5759377954105220
}
]
};
var options ={
"headers": {
"authorization": "Bearer ll352u9jujauoqz4fstvsae05"
},
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(data)
};
Logger.log("About to call: " + url);
var response = UrlFetchApp.fetch(url, options);
Logger.log("Response: " + response);
}