https://www.googleapis.com/batch 返回错误 404

https://www.googleapis.com/batch returns error 404

提问人:AAng 提问时间:8/22/2023 最后编辑:RubénAAng 更新时间:8/23/2023 访问量:55

问:

我正在尝试创建 Apps 脚本 Web 应用程序,这将允许我使用此处概述的解决方案与多个用户共享多个文件

每当我尝试运行上面链接的解决方案中提供的函数(使用 UrlFetchApp 的第一个解决方案)时,它总是以错误告终(代码 404)

从记录器和调试器中,我可以看到它无法到达序列。UrlFetchApp.fetch()

我的 GS 脚本的片段,仅对上面提供的原始链接进行了微小的修改:

var userEmailsArray = ["[email protected]"]; // sample placeholder
var fileId = "File-ID"; // sample placeholder
function changePermissionBatch(role = "reader", type = "user") {
    const resources = userEmailsArray.map(e => ({role: role, type: type, emailAddress: e}));
    const boundary = "xxxxxxxxxx";
    const payload = resources.reduce((s, e, i) => {
      s += "Content-Type: application/http\r\n" +
        "Content-ID: " + i + "\r\n\r\n" +
        "POST https://www.googleapis.com/drive/v3/files/" + fileId + "/permissions?sendNotificationEmails=false" + "\r\n" +
        "Content-Type: application/json; charset=utf-8\r\n\r\n" +
        JSON.stringify(e) + "\r\n" +
        "--" + boundary + "\r\n";
      return s;
    }, "--" + boundary + "\r\n");
    const params = {
      method: "post",
      contentType: "multipart/mixed; boundary=" + boundary,
      payload: payload,
      headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()},
    };
    const res = UrlFetchApp.fetch("https://www.googleapis.com/batch", params);
    console.log(res.getContentText())
  }

我是否在这里遗漏了某些内容,或者是否有任何最近的政策/更新可能导致我可能不知道的请求失败?

提供的日志也没有多大帮助,因为它是一个缩短的 HTTP 响应,而且我环顾四周,没有发现根据这些日志得出错误的结论,我基本上在这里不知所措。

google-apps-script http-status-code-404 urlfetch 批处理请求

评论

0赞 Logan 8/22/2023
检查后 googleapis.com/batch 已经脱皮了。
0赞 AAng 8/22/2023
嗨,@Logan感谢您指出它,我认为可能是这种情况。我只是无法对文档进行微调。您是否介意将我引导至源文档链接,只是为了避免将来出现类似的问题,并希望我的进一步问题不会是简单的弃用问题:”

答:

1赞 AAng 8/22/2023 #1

我找到了答案,感谢 Logan 指出了已弃用的部分。我出去找到了 Tanaike 的一篇博客文章(在我原始问题的参考链接中提供解决方案的人)

更改并更新了以下行

const res = UrlFetchApp.fetch("https://www.googleapis.com/batch", params);

进入

const res = UrlFetchApp.fetch("https://www.googleapis.com/batch/drive/v3", params);

该函数现在按预期工作,日志不返回任何错误,因此问题解决了。

源:

链接 1 - 带有示例行的博客文章,其中包含代码工作所需的特定 batchPath

链接 2 - 官方文档/问题公告