首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >即使页面存在,Google脚本UrlFetchApp.fetch返回404

即使页面存在,Google脚本UrlFetchApp.fetch返回404
EN

Stack Overflow用户
提问于 2015-09-09 10:49:06
回答 4查看 4.6K关注 0票数 2

我正在发送自动报告与谷歌电子表格和谷歌脚本。

到目前为止,它运行得很完美。但不知为何,当我试图创建一个新的报告,以电子邮件,函数"UrlFetchApp.fetch“返回一个404。同样的情况发生在我试图复制旧报告的时候。

"UrlFetchApp.fetch“的行给了我这个错误:

bCKn4MbLKy7AIuIeu7bTZcTk8ObYBln0GAxwfsX8/pub?gid=195635557&single=true&output=pdf返回代码404的请求失败。截断服务器响应

我似乎不是唯一一个有这个问题的人,但我找不到任何解决办法。

以下是代码:

代码语言:javascript
运行
复制
function emailSpreadsheetAsCSV() {
  var ss = SpreadsheetApp.openById("1qm_bCKn4MbLKy7AIuIeu7bTZcTk8ObYBln0GAxwfsX8");
  var url = ss.getUrl();
  url = url.replace(/edit$/,'');     
  var token = ScriptApp.getOAuthToken();
  var sheets = ss.getSheets(); 
  //make an empty array to hold your fetched blobs  
  var blobs = [];
  for (var i=0; i<sheets.length; i++) {
      var response = UrlFetchApp.fetch("https://docs.google.com/spreadsheets/d/1qm_bCKn4MbLKy7AIuIeu7bTZcTk8ObYBln0GAxwfsX8/pub?gid=195635557&single=true&output=pdf", {
        headers: {
          'Authorization': 'Bearer ' +  token
        },
        'muteHttpExceptions': false
      });
    //convert the response to a blob and store in our array
    blobs[i] = response.getBlob().setName(sheets[i].getName() + '.csv');
  }
  //create new blob that is a zip file containing our blob array
  var zipBlob = Utilities.zip(blobs).setName(ss.getName() + '.zip');     
return blobs[0];       
}

非常感谢你的帮助。

艾默里克。

EN

回答 4

Stack Overflow用户

发布于 2016-03-28 16:12:44

我也得到了这个问题,经过一些研究,斯宾塞伊斯顿(问题34573295)解决了我的问题。我只是添加了这个伪调用来驱动,这样就可以获得访问权限,这样脚本现在就可以访问您的文件了。在尝试抓取url之前,将其添加到顶部:

代码语言:javascript
运行
复制
var bogus = DriveApp.getRootFolder();

现在它运行良好,没有404错误。

票数 2
EN

Stack Overflow用户

发布于 2015-09-10 00:06:54

从请求中删除标题:

代码语言:javascript
运行
复制
var response = UrlFetchApp.fetch("https://docs.google.com/spreadsheets/d/1qm_bCKn4MbLKy7AIuIeu7bTZcTk8ObYBln0GAxwfsX8/pub?gid=195635557&single=true&output=pdf", {

        'muteHttpExceptions': false
      });

看看它是否对你有用。

票数 0
EN

Stack Overflow用户

发布于 2015-09-11 10:55:38

您使用的是"pub“url,所以您确定电子表格是在网络上发布的吗?如果得到404,就意味着页面没有发布。如果文件被发布,承载者就不需要了,因为它现在是公开的。

在我不太理解您的代码之后,因为您迭代了文件的所有工作表

代码语言:javascript
运行
复制
for (var i=0; i<sheets.length; i++)

但是您的urlfetch中的url的param "gid“(pub?gid=195635557&single=true&output=pdf)是固定的吗?

第二点,您得到的文件为pdf,并在您创建了一个csv?

为什么不直接将文件作为csv:https://docs.google.com/spreadsheets/export?id=TheIdOfTheFile&exportFormat=csv

通过修改这段代码,您可以直接获得csv,请参阅:https://stackoverflow.com/a/28503601/3556215

小心,你会得到第一页,而不是其他。

斯特凡纳

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32477504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档