google apps script post basecamp

时间:2015-03-12 17:45:49

标签: google-apps-script 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函数返回403错误。然而,我是该项目的所有者,我使用curl和Chrome REST客户端来确认我实际上可以使用相同的授权向这个项目发布新的todolists。

显然,我的标题在某处格式不正确,但我看不清楚。

1 个答案:

答案 0 :(得分:1)

这是UrlFetchApp的一个怪癖。您无法使用常规"标题"设置内容类型。参数,你必须使用" contentType"参数。

参见"高级参数"这里的表格:

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)