我正在发送自动报告与谷歌电子表格和谷歌脚本。
到目前为止,它运行得很完美。但不知为何,当我试图创建一个新的报告,以电子邮件,函数"UrlFetchApp.fetch“返回一个404。同样的情况发生在我试图复制旧报告的时候。
"UrlFetchApp.fetch“的行给了我这个错误:
bCKn4MbLKy7AIuIeu7bTZcTk8ObYBln0GAxwfsX8/pub?gid=195635557&single=true&output=pdf返回代码404的请求失败。截断服务器响应
我似乎不是唯一一个有这个问题的人,但我找不到任何解决办法。
以下是代码:
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];
}
非常感谢你的帮助。
艾默里克。
发布于 2016-03-28 16:12:44
我也得到了这个问题,经过一些研究,斯宾塞伊斯顿(问题34573295)解决了我的问题。我只是添加了这个伪调用来驱动,这样就可以获得访问权限,这样脚本现在就可以访问您的文件了。在尝试抓取url之前,将其添加到顶部:
var bogus = DriveApp.getRootFolder();
现在它运行良好,没有404错误。
发布于 2015-09-10 00:06:54
从请求中删除标题:
var response = UrlFetchApp.fetch("https://docs.google.com/spreadsheets/d/1qm_bCKn4MbLKy7AIuIeu7bTZcTk8ObYBln0GAxwfsX8/pub?gid=195635557&single=true&output=pdf", {
'muteHttpExceptions': false
});
看看它是否对你有用。
发布于 2015-09-11 10:55:38
您使用的是"pub“url,所以您确定电子表格是在网络上发布的吗?如果得到404,就意味着页面没有发布。如果文件被发布,承载者就不需要了,因为它现在是公开的。
在我不太理解您的代码之后,因为您迭代了文件的所有工作表
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
小心,你会得到第一页,而不是其他。
斯特凡纳
https://stackoverflow.com/questions/32477504
复制相似问题