http - 将 cURL 转换为 Google Apps 脚本

标签 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

这是谷歌脚本

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/

相关文章:

python - Python Google API写入Google表格

asynchronous - 使用 promise 对 Google 表格进行多次查询

java - 提交 GET 或 POST 以在 ElasticSearch 中搜索

json - 如何解决这个 "The getter ' 长度' was called on null"

php - 在 Paypal Vault 中使用存储卡时返回内部服务错误

ruby-on-rails - Ruby/Rails 性能 : OpenURI vs NET:HTTP vs Curb vs Rest-Client

c# - HttpClient GetAsync 与 URL 中的散列

http - 使用凭据进行跨源资源共享

ubuntu - 使用 Laravel,Guzzle 提示未安装 PHP cURL 扩展

google-apps-script - 如何从 Apps 脚本库中调用 CreateMenu()?