如何在 Google Apps 脚本中使用 UrlFetchApp 来更新 Github 存储库?

How can I use UrlFetchApp in Google Apps Script to update a Github repo?

Salutations - 我正在尝试使用 Github API 更新我在 Google Apps 脚本中生成的文件。我在 Github 页面上显示文件(图像)。不幸的是,我对 Github API 和 HTTP 请求的了解很差。

如何配置 UrlFetchApp 以将文件提交到我的 Github 存储库?我认为 this question 中表达了类似的想法,但我不知道如何将它准确地转换为 Apps 脚本,而且我发现很难针对 API 进行调试。非常感谢帮助!

发件人:

如果您想将此线程的以下 curl 命令转换为 Google Apps 脚本,

curl -i -X PUT \
  -H 'Authorization: token <token_string>' \
  -d '{"path": "<filename.extension>", "message": "<Commit Message>", "committer": {"name": "<Name>", "email": "<E-Mail>"}, "content": "<Base64 Encoded>", "branch": "master"}' \
  https://api.github.com/repos/<owner>/<repository>/contents/<filename.extension>

收件人:

变成如下

function myFunction() {
  const fileId = "###"; // Please set the file ID you want to upload here.
  const content = Utilities.base64Encode(DriveApp.getFileById(fileId).getBlob().getBytes());
  const url = "https://api.github.com/repos/<owner>/<repository>/contents/<filename.extension>";
  const data = {"path": "<filename.extension>", "message": "<Commit Message>", "committer": {"name": "<Name>", "email": "<E-Mail>"}, "content": content, "branch": "master"};
  const params = {
    method: "put",
    payload: JSON.stringify(data),
    headers: {
      authorization: `token <token_string>`,
      // Accept: "application/vnd.github.v3+json"  // Even when this is not used, the request works.
    }
  };
  const res = UrlFetchApp.fetch(url, params);
  console.log(res.getContentText())
}
  • 关于<filename.extension>,比如想把sample.txt放到[=14=目录下],请使用URL,比如https://api.github.com/repos/<owner>/<repository>/contents/sample/sample.txt ].

注:

  • 在这种情况下,需要您的令牌才能使用。所以请注意这一点。

参考文献: