提问人:AAng 提问时间:8/22/2023 最后编辑:RubénAAng 更新时间:8/23/2023 访问量:55
https://www.googleapis.com/batch 返回错误 404
https://www.googleapis.com/batch returns error 404
问:
我正在尝试创建 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 响应,而且我环顾四周,没有发现根据这些日志得出错误的结论,我基本上在这里不知所措。
答:
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 - 官方文档/问题公告
评论