Dou*_*ell 1 javascript pdf google-apps-script
我正在尝试检索电子表格的pdf.每当我尝试时,我都会收到以下错误:
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返回代码404.
如果我在登录时点击上述URL,则下载PDF.
如果我使用以下代码,我将获得一个登录页面作为响应.这URL是工作表网址,url_ext是参数.
var response = UrlFetchApp.fetch(url + url_ext);
Run Code Online (Sandbox Code Playgroud)
如果我将以下代码与OAuth令牌一起使用,我会收到404响应.
var response = UrlFetchApp.fetch(url + url_ext, {
headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken() }
});
Run Code Online (Sandbox Code Playgroud)
为什么会这样?如何使用令牌通过应用程序脚本访问工作表以检索PDF?
编辑:它已经自发地开始研究我的测试应用程序脚本.但是,如果我在另一个应用程序脚本中创建完全相同的功能,则会再次出现404错误.
我做了一些更多的故障排除,并将工作功能直接复制粘贴到新的应用程序脚本项目中.该功能成功运行,之后非工作功能正常运行.
在失败和工作之间没有对非工作功能进行过编辑.
编辑2:我可以重现这个错误:如果我采用我的第二个工作函数,并将其复制 - 粘贴到一个新项目中,它将失败并出现404错误.我不知道为什么会发生这种情况,但是当它在其他地方使用完全相同的代码工作时,我可以成功地重现404错误.
您缺少提出此请求的正确范围.它应返回401未经身份验证而不是404.要解决此问题,您需要添加驱动器范围.我通过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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1182 次 |
| 最近记录: |