我正在尝试将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
答案 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 + ":" + "")}