我正在尝试将 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
这是谷歌脚本
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
最佳答案
我最近做了一个脚本,从 scrapy cloud 调用 API 请求,也很难将 curl 转换为 App Script 请求。
我注意到当我使用 JSON.stringify 时有效载荷不起作用,所以尝试从有效载荷中删除它:
“有效载荷”:有效载荷
其他观察是需要在身份验证 token 中使用 Utilities.base64Encode:
headers = {"Authorization":"Basic "+ Utilities.base64Encode(authenticationToken + ":"+ "")}
查看此示例:
url = "https://app.scrapinghub.com/api/run.json"
headers = {"Authorization":"Basic " + Utilities.base64Encode("myToken" + ":" + "")}
payload = {"project":"327107", "spider":"pmp"}
options = {"headers":headers, "payload":payload}
response = UrlFetchApp.fetch(url, options)
data = JSON.parse(response.getContentText())
关于http - 将 cURL 转换为 Google Apps 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38591585/