google 应用脚本 post 大本营
google apps script post basecamp
我正在尝试通过 Google Apps 脚本调用 Basecamp 的新 API。 GET,我能做到。 POST,没那么多。
从路径开始
https://basecamp.com/xxxxxxx/api/v1/projects/xxxxxxx/todolists.json
我的代码:
var headers = {
'User-Agent' : BCuseragent,
'Authorization' : 'Basic ' + Utilities.base64Encode(BCuser + ':' + BCpass),
'Content-Type' : 'application/json',
'Accept' : 'application/json',
'validateHttpsCertificates' : false
}
function getBC(path) {
var url = BCurl + path;
var opt = {
'headers' : headers,
'method' : "GET"
};
var response = UrlFetchApp.fetch(url, opt);
return response;
}
function postBC(path, payload) {
var url = BCurl + path;
var opt = {
'headers' : headers,
'method' : "POST",
'payload' : JSON.stringify(payload)
};
var response = UrlFetchApp.fetch(url, opt);
return response;
}
我作为参数传递的负载:
{name: "foo", description: "bar"}
getBC
函数有效(200 OK
),postBC
函数 returns 出现 403
错误。然而我是该项目的所有者,我已经使用 curl 和一个 Chrome REST 客户端来确认我实际上可以 POST 这个项目的新 todolists 使用相同的授权。
显然,我的 headers 某处格式不正确,但我看不出是怎么回事。
这是 UrlFetchApp 的一个怪癖。您不能使用通用 "headers" 参数设置 Content-Type,而必须使用 "contentType" 参数。
请在此处查看 "Advanced Parameters" table:
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)
我正在尝试通过 Google Apps 脚本调用 Basecamp 的新 API。 GET,我能做到。 POST,没那么多。
从路径开始
https://basecamp.com/xxxxxxx/api/v1/projects/xxxxxxx/todolists.json
我的代码:
var headers = {
'User-Agent' : BCuseragent,
'Authorization' : 'Basic ' + Utilities.base64Encode(BCuser + ':' + BCpass),
'Content-Type' : 'application/json',
'Accept' : 'application/json',
'validateHttpsCertificates' : false
}
function getBC(path) {
var url = BCurl + path;
var opt = {
'headers' : headers,
'method' : "GET"
};
var response = UrlFetchApp.fetch(url, opt);
return response;
}
function postBC(path, payload) {
var url = BCurl + path;
var opt = {
'headers' : headers,
'method' : "POST",
'payload' : JSON.stringify(payload)
};
var response = UrlFetchApp.fetch(url, opt);
return response;
}
我作为参数传递的负载:
{name: "foo", description: "bar"}
getBC
函数有效(200 OK
),postBC
函数 returns 出现 403
错误。然而我是该项目的所有者,我已经使用 curl 和一个 Chrome REST 客户端来确认我实际上可以 POST 这个项目的新 todolists 使用相同的授权。
显然,我的 headers 某处格式不正确,但我看不出是怎么回事。
这是 UrlFetchApp 的一个怪癖。您不能使用通用 "headers" 参数设置 Content-Type,而必须使用 "contentType" 参数。
请在此处查看 "Advanced Parameters" table:
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)