当我使用UrlFetchApp将电子表格导出为PDF时,始终会收到404请求的entity not found响应。如果我将相同的URL放入浏览器,PDF下载将正确启动。
要使这个示例脚本正常工作,我可以做些什么?
下面是一个示例PDF导出URL,用于简单的共享(只读)电子表格:https://docs.google.com/spreadsheets/d/133KPZyxAATG3AAY9iCSFWabefyFvQnENkHh0dyqh7MI/export?exportFormat=pdf
如果在浏览器中单击该URL,它会得到一个PDF Blob,通常会启动浏览器的文件下载对话框。(这是公共图纸,但在生产中,图纸是私有的。)
function notFunctioning() {
var options = {
headers: {
Authorization:"Bearer "+ScriptApp.getOAuthToken()
},
muteHttpExceptions : true /// Get failure results
}
url = "https://docs.google.com/spreadsheets/d/133KPZyxAATG3AAY9iCSFWabefyFvQnENkHh0dyqh7MI/export?exportFormat=pdf&format=pdf&gid=0&size=letter&portrait=true&fitw=true&sheetnames=false&printtitle=false&pagenumbers=false&gridlines=false&fzr=false";
var response = UrlFetchApp.fetch(url, options);
var status = response.getResponseCode();
var result = response.getContentText();
debugger; // status:404 8'(
}
结果字符串的内容为:
很抱歉,您请求的文件不存在。
确保您有正确的URL,并且文件的所有者没有将其删除。
当然,文件确实存在,等等。我假设我错过了一些身份验证或授权步骤。请注意,此代码基本上与使用Google Apps脚本将所有工作表转换为PDF中的代码相同,该脚本曾经工作过一次。。。
>
一年前,谷歌文档编辑的网址格式发生了变化。我使用的是消费者帐户,而不是域帐户,所以这似乎不适用。此外,脚本从那时起就起作用了。(不过,我想知道它是否会影响事情,以及浏览器是否会被重定向,而GAS服务器不会。)
虽然此技术不直接使用高级驱动器服务,但脚本通过URL访问Google驱动器文件所需的权限。
第3579期:将电子表格转换为PDF失败的新工作表提供了提示:
请记住,只有当脚本中的某个地方出现了Drive或DriveApp时,解决方案才会起作用,以便请求并传递Drive OAuth作用域。检查以确保所有脚本都是如此。
添加一个包含DriveApp函数调用的虚拟函数就足够了:
/**
* Dummy function for API authorization only.
*/
function forAuth_() {
DriveApp.getFileById("Just for authorization"); // https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579#c36
}
然后通过“资源”启用高级驱动器服务
在我的例子中,我有一个一直在工作的脚本,然后停止了。我相信当我最初编写脚本时,我试图使用高级驱动器服务导出链接(顺便说一句,这不起作用),所以我已经通过启用该服务。但是最近,由于其他变化,我不得不重新授权脚本,我认为这同时取消了对驱动器的授权。
我有一个谷歌应用程序脚本,运行计划将电子表格导出为PDF,并通过电子邮件发送。它一直运行良好,直到几天前,当它在URL请求的时候出现下一个错误代码时失败了: 错误en la条案para el código desuelto 404 dehttps://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=pdf 前几天还
Google电子表格包含字体样式信息,如粗体、红色等。我想从电子表格中读取字体样式。 GAS是从谷歌电子表格中读取字体风格信息的唯一方法吗?还有其他选择吗? 我在OAuth中使用appengine和Gdata/电子表格API。这是从谷歌电子表格中读取单元格数据。 Gdata 避免使用谷歌应用脚本:我想避免使用谷歌应用脚本。我知道GAS可以读取FontStyle信息。但是对于非程序员来说,GAS是复
我正在尝试从多个google电子表格中删除一个特定的表格。 我有一个主电子表格,从所有其他电子表格收集数据。从主电子表格中,我可以在其他电子表格中执行不同类型的操作,如添加工作表、重命名工作表、隐藏和锁定工作表。 但无法删除其他电子表格中的表格。查看了其他线程,但找不到任何解决方法。 这就是我到目前为止得到的。它停在这一排: "fname.delete表(本周);}" 我很感谢大家对我的帮助,因为
我的Groovy脚本连接到bitBuck API并获取分支详细信息。这是脚本: 但这抛出以下错误: 但是当我在浏览器上复制粘贴URL时,我能够看到JSON数据。如何使用Groovy从此URL获取JSON数据?
在此服务器上找不到请求的URL。我们只知道这些。 这是stacktrace 在com.google.api.client.googleapis.json.googleJsonResponseException.404在com.google.api.client.googleapis.json.googleJsonResponseException.from(GoogleJsonResponseEx
我正在尝试从特定目录中的google工作表列表(大约570个工作表)中删除多余的行和列(已知范围)。 我能够使用google drive API获取电子表格Id。但是,修改页面的尺寸需要图纸Id。 我无法找到通过驱动器API(文件属性)检索此工作表ID的方法,也无法找到任何关于如何在电子表格中列出可用工作表的留档,因为我有电子表格ID。 我尝试使用谷歌应用程序脚本来达到我的目标,但运行时间已经超过