将cURL转换为Google Apps脚本

时间:2016-07-26 13:43:25

标签: http curl google-apps-script github-api

我正在尝试将cURL命令转换为Google Apps脚本PUT请求。 我想出了下面的谷歌脚本,但似乎没有用。当我将这两者的URL更改为RequestBin以探测服务器端获取的内容时,RequestBin显示两者的原始来源完全相同。但是,当我将其更改回github URL时,只有cURL命令能够执行所需的操作(在github上更新文件)。

curl -i -X PUT -H 'Authorization: token yadayda' -d '{"path":"mygeojson.json","message":"Initial Commit","committer":{"name":"Sidd","email":"siddsubra@gmail.com"},"content":"bXkgbmV3IGZpbGUgY29udGVudHM=","sha":"0d5a690c8fad5e605a6e8766295d9d459d65de42","branch":"master"}' https://api.github.com/repos/teku45/GeoJSON-Update/contents/mygeojson.json

cURL Command

这是Google脚本

function mainscript() {

  var sha = getSHA();
  var authenticationToken = "yadayada";

  var url = "http://api.github.com/repos/teku45/GeoJSON-Update/contents/mygeojson.json";

  var headers = {
    "Authorization" : "token " + authenticationToken,
  };

  var payload = {  
    "path": "mygeojson.json",
    "message": "Initial Commit",
    "committer":{  
      "name": "Sidd",
      "email": "siddsubra@gmail.com"
    },
    "content": "bXkgbmV3IGZpbGUgY29udGVudHM=",
    "sha": sha,
    "branch": "master"
  };

  var options = {
    "headers" : headers,
    "method" : "PUT",
    "payload" : JSON.stringify(payload)
  };

  Logger.log(options);
  Logger.log(UrlFetchApp.fetch(url, options));
}

Google Apps Script 

1 个答案:

答案 0 :(得分:0)

我最近做了一个脚本,该脚本从刮scrap的云中调用对API的请求,并且也很难将curl转换为App Script请求。

我注意到当我使用JSON.stringify时有效负载不起作用,因此请尝试将其从有效负载中删除:

<item name="android:windowLightStatusBar" tools:targetApi="23">true</item>

其他观察结果是需要在身份验证令牌中使用Utilities.base64Encode:

"payload" : payload

查看此示例:

headers = {"Authorization":"Basic " + Utilities.base64Encode(authenticationToken + ":" + "")}