【发布时间】:2020-10-31 20:01:50
【问题描述】:
我有一个脚本,可以将我的所有工作表导出到单独的 PDF 文档到名为 Invoices 的文件夹中,但是它正在创建 6 个文档,之后我收到下面的错误代码,这已在 Gsuite 帐户上尝试过我也遇到了同样的错误:
异常:https://docs.google.com 的请求失败,返回代码 429。截断的服务器响应:
function savePDFs( optSSId, optSheetId ) {
var ss = (optSSId) ? SpreadsheetApp.openById(optSSId) : SpreadsheetApp.getActiveSpreadsheet();
var url = ss.getUrl().replace(/edit$/,'');
var parents = DriveApp.getFileById(ss.getId()).getParents();
var folders = DriveApp.getFoldersByName('Invoices');
var folder = folders.hasNext() ? folders.next() : parents.next();
var sheets = ss.getSheets();
for (var i=0; i<sheets.length; i++) {
var sheet = sheets[i];
if (optSheetId && optSheetId !== sheet.getSheetId()) continue;
var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf
+ '&gid=' + sheet.getSheetId() //the sheet's Id
// following parameters are optional...
+ '&size=letter' // paper size
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true' // fit to width, false for actual size
+ '&sheetnames=false&printtitle=false&pagenumbers=false' //hide optional headers and footers
+ '&gridlines=false' // hide gridlines
+ '&fzr=false'; // do not repeat row headers (frozen rows) on each page
var options = {headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}}
var response = UrlFetchApp.fetch(url + url_ext, options);
var valor = sheet.getRange('D5').getValue(); // Modified
var blob = response.getBlob().setName(valor + '.pdf');
folder.createFile(blob);
}
}
有什么想法吗?
【问题讨论】:
-
关于
code 429,HTTP 429 Too Many Requests 响应状态码表示用户在给定时间内发送了太多请求(“速率限制”)。 Ref 比如这个怎么样?虽然从你的问题中我不确定你的实际情况,但是如果你在循环中运行savePDFs的函数,那么使用Utilities.sleep(milliseconds)怎么样?
标签: google-apps-script google-sheets google-drive-api urlfetch http-status-code-429