当前位置: 首页 > 知识库问答 >
问题:

UrlFetch从电子表格URL获取404错误

章高朗
2023-03-14

当我使用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服务器不会。)

共有1个答案

柴高岑
2023-03-14

虽然此技术不直接使用高级驱动器服务,但脚本通过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

  • 人若自洁,脱离卑贱的事,就必作贵重的器皿,成为圣洁,合乎主用,预备行各样的善事。你要逃避少年的私欲,同那清心祷告主的人追求公义、信德、仁爱、和平。惟有那愚拙无学问的辩论,总要弃绝,因为知道这等事是起争竞的。(2 TIMOTHY 2:21-23) 电子表格 一提到电子表格,可能立刻想到的是excel。殊不知,电子表格“历史悠久”,比Word要长久多了。根据维基百科的记载整理一个简史: VisiCal