gpt4 book ai didi

javascript - 当 URL 存在时,Google Apps 脚本 UrlFetchApp 返回 404

转载 作者:行者123 更新时间:2023-11-30 07:35:34 25 4
gpt4 key购买 nike

我正在尝试检索电子表格的 pdf。每当我尝试时,我都会收到以下错误:

Request failed for https://docs.google.com/a/firstcallres.com/spreadsheets/d/1ZPcW5cOQT5w28VUbr_JG9U-r7m6Uf-MDQcSmFOyhbE8/export?exportFormat=pdf&format=pdf&size=letter&portrait=false&fitw=true&source=labnol&sheetnames=false&printtitle=false&pagenumbers=false&gridlines=false&fzr=false&gid=1680655368 returned code 404.

如果我在登录后单击上面的 URL,将下载 PDF。

如果我使用下面的代码,我将得到一个登录页面作为响应。 URL 为工作表 url,url_ext 为参数。

var response = UrlFetchApp.fetch(url + url_ext);

如果我随后将以下代码与 OAuth token 一起使用,我会收到 404 响应。

  var response = UrlFetchApp.fetch(url + url_ext, {
headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken() }
});

为什么会这样?如何使用 token 通过应用程序脚本访问工作表以检索 PDF?

编辑:它自发地开始处理我的测试应用程序脚本。但是,如果我在另一个应用程序脚本中创建完全相同的函数,它会再次失败并出现 404 错误。

我做了更多的故障排除,并将工作函数直接复制粘贴到新的应用程序脚本项目中。该功能运行成功,之后非工作功能现在可以工作了。

在失败和工作之间没有对非工作函数进行任何编辑。

Edit2:我可以重现这个错误:如果我使用我的第二个工作函数,并将它复制粘贴到一个新项目中,它将失败并出现 404 错误。我不知道为什么会发生这种情况,但当它在其他地方使用完全相同的代码时,我可以成功地重现 404 错误。

最佳答案

您缺少发出此请求的适当范围。它应该返回 401 unauthenticated 而不是 404。要解决此问题,您需要添加 Drive 范围。我通过在脚本中某处调用一个简单的 DriveApp.getRootFolder() 来完成此操作。这会将驱动器范围添加到您的项目中。不过,对 DriveApp 的任何调用都会添加范围。

这是一个示例脚本:

function exportToPDF() {    
var url = "https://docs.google.com/spreadsheets/d/1oQ2zsbcCwuc_wdwgfFopRJn-5fGN3oY7L237ivxuxmM/export?exportFormat=pdf"; //add your options as you wish
var res = UrlFetchApp.fetch(url, {headers:{"Authorization":"Bearer " + ScriptApp.getOAuthToken()},muteHttpExceptions:true});
var newPdf = Utilities.newBlob(res.getContent(), "application/pdf", "Export.pdf")
DriveApp.createFile(newPdf);
}

关于javascript - 当 URL 存在时,Google Apps 脚本 UrlFetchApp 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34573295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com