[решено] Как подсказал @ziganotschka - добавление оператора try и catch с эмпирическим временем ожидания при сбое кода.
У меня есть простой сценарий, который изменяет электронную таблицу, затем «экспортирует» ее в формате PDF, затем снова изменяет тот же лист и экспортирует снова, в зависимости от того, сколько раз ему нужно выполнить цикл.
Итак, у меня 46 запросов в очереди, когда он запускается, иногда он экспортирует 4, а иногда экспортирует 8, иногда больше, иногда меньше.
Хотя ничего не изменилось.
Я попытался добавить Utilities.sleep (1000);и снова до 5000 снова иногда помогало, а иногда и мешало.
Есть ли какое-то ограничение на экспорт в PDF, о котором я не знаю?
Я что-то не так делаю?
Ошибка возникает на var docurl = UrlFetchApp.fetch(theurl, { headers: { 'Authorization': 'Bearer ' + token, muteHttpExceptions: true,} });
Не генерируется при генерировании PDF (код: 531) (имя файла) при клике пользователя (код: 299) (имя файла)
function doGet(e){
return HtmlService.createHtmlOutputFromFile("page");
};
HTML-страницаимеет кнопку и поля, которые проходят при нажатии кнопки
function userClicked(userInfo){
//Start the main Loop for each new pdf to be made
//Sheet modification
//in an attempt at making the loop run more times
var sleepDuration = 0;
if (loopI >= 6) {
sleepDuration = 1500;
}
Utilities.sleep(sleepDuration);
if (typeof subFolderExist == 'undefined') {
subFolderExist = generatePdf(sheetid, Title[1], varName);
} else {
//Sub Folder Exists - do nothing.
// varTrash is only there to call the function and isn't used
//anywhere else
var varTrash = generatePdf(sheetid, Title[1], varName,
subFolderExist);
}
}
function generatePdf(sourceSpreadsheet, sheetName, Name, varifSubFolderExist) {
var sourceSpreadsheetId = sourceSpreadsheet.getId();
var ss = SpreadsheetApp.openById(sourceSpreadsheetId);
var nameoffile = ss.getSheetByName('W1-D1').getRange(1, 1).getValue();
var theurl = 'https://docs.google.com/spreadsheets/d/'
+ '' + sourceSpreadsheetId + '' //the file ID
+ '/export?exportFormat=pdf&format=pdf'
+ '&size=LETTER'
+ '&portrait=true'
+ '&fitw=true'
+ '&top_margin=0.50'
+ '&bottom_margin=0.50'
+ '&left_margin=0.50'
+ '&right_margin=0.50'
+ '&sheetnames=false&printtitle=false'
+ '&pagenum=false'
+ '&gridlines=false'
+ '&fzr=FALSE'
+ '&gid='
+ '1304619048';
// Get folder containing spreadsheet to save pdf in.
var parents = DriveApp.getFileById(sourceSpreadsheetId).getParents();
if (parents.hasNext()) {
var folder = parents.next();
}
else {
folder = DriveApp.getRootFolder();
}
//Create SubFolder
var subFolder;
if(typeof varifSubFolderExist === "undefined") {
var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var hours = today.getHours();
var timePeriod;
if (hours > 12) {
hours = (hours - 12);
timePeriod = "PM";
}
timePeriod = "AM";
var time = hours + ":" + today.getMinutes() + ":" + today.getSeconds();
var dateTime = date+' '+time + timePeriod;
// Set the output folder name.
var folderName = "PDFs - [" + dateTime + "]";
subFolder = folder.createFolder(folderName);
// Add Unique String
} else {
subFolder = DriveApp.getFolderById(varifSubFolderExist[0]);
}
//End Create SubFolder
var token = ScriptApp.getOAuthToken();
var docurl = UrlFetchApp.fetch(theurl, { headers: { 'Authorization': 'Bearer ' + token, muteHttpExceptions: true,} });
//var fileid = DriveApp.createFile(docurl.getBlob()).setName(nameoffile+ '.pdf').getId();
var fileid = subFolder.createFile(docurl.getBlob()).setName(sheetName + " " + Name + '.pdf').getId();
var pdf = docurl.getBlob().setName(nameoffile + '.pdf');
var filetodel = DriveApp.getFileById(fileid);
return [subFolder.getId(), folderName];
}