gpt4 book ai didi

javascript - UrlFetchApp.fetch 抛出交通繁忙 |超时错误

转载 作者:行者123 更新时间:2023-12-01 21:27:55 26 4
gpt4 key购买 nike

同时使用 UrlFetchApp.fetch 在谷歌驱动器中下载 pdf blob方法导致两种类型的错误:

  1. </div></div>This file might be unavailable right now due to heavy traffic. <a href="">Try again</a>.</div> [Written in downloaded PDF]

  2. 异常:超时

代码片段:

function downloadasPDF(optSSId, optSheetId)
{
var ss = (optSSId) ? SpreadsheetApp.openById(optSSId) : SpreadsheetApp.getActiveSpreadsheet();

var preURL=ss.getUrl() //ss is an spreadsheet reference
var url = preURL.replace(/edit.*/,'');
var folder = DriveApp.getFolderById(FolderID);
// Get array of all sheets in spreadsheet
var sheets = ss.getSheets();

for (var i=0; i<sheets.length; i++) {
//Sheet length is 100+

Utilities.sleep("5000")
var sheet = sheets[i];

// If provided a optSheetId, only save it.
if (optSheetId && optSheetId !== sheet.getSheetId()) continue;

//additional parameters for exporting the sheet as a pdf
var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf
+ '&gid=' + sheet.getSheetId() //the sheet's Id
+ '&gridlines=false' // hide gridlines

var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
},
muteHttpExceptions: true,
}
var response = UrlFetchApp.fetch(url + url_ext, options);
var blob = response.getBlob().setName(spreadsheet.getName() + ' - ' + sheet.getName() + '.pdf');
folder.createFile(blob);
}

为了解决上述问题,我正在使用:

Utilities.sleep(5000)

但仍然有一些文件导致上述错误 1。

问题:除了 sleep 之外,我们还有其他更好的方法来处理上述两种情况吗?

注意:我使用的是 G Suite Enterprise,要下载的工作表数量大约在 100-150 之间,每张工作表填充 240 个单元格,其余单元格为空。

最佳答案

使用指数退避函数在失败时以指数方式休眠。失败可以用 .getResponseCode() 检查:

var response = (function exponentialBackoff(i) {
Utilities.sleep(Math.pow(2, i) * 1000);
let data = UrlFetchApp.fetch(url + url_ext, options);
if (data.getResponseCode() !== 200) return exponentialBackoff(++i);
else return data;
})(1);

关于javascript - UrlFetchApp.fetch 抛出交通繁忙 |超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62855667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com