У меня есть электронная таблица Google с листом с именем «template» и прикрепленным Google Script, который превращает лист «template» в блоб PDF со следующей функцией:
function getPdfBlob() {
var ss = SpreadsheetApp.getActive();
var ssId = ss.getId();
var sheet = ss.getSheetByName("template");
var sheetId = sheet.getSheetId();
var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ssId);
var url_ext = "exportFormat=pdf&format=pdf" + // export as pdf / csv / xls / xlsx
"&size=letter" + // paper size legal / letter / A4
"&portrait=true" + // orientation, false for landscape
"&fitw=true&source=labnol" + // fit to page width, false for actual size
"&sheetnames=false&printtitle=false" + // hide optional headers and footers
"&pagenumbers=true&gridlines=false" + // hide page numbers and gridlines
"&fzr=false" + // repeat row headers (frozen rows) on each page
"&gid="; // the sheet's Id
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url + url_ext + sheetId, {
headers: { Authorization: "Bearer " + token }
});
return response.getBlob().setName('test.pdf');
}
Когда лист отображается нормально, функция работает без ошибок. Когда я прячу лист, я внезапно получаю ошибку:
Request failed for https://docs.google.com/spreadsheets/[...] returned code 500. Truncated server response: <!DOCTYPE html><html lang="en"><head><meta name="description" content="Web word processing, presentations and spreadsheets"><meta name="viewport" c... (use muteHttpExceptions option to examine full response) (line 16, file "Code")
Не похоже, что скрытие листа изменяет его sheetID. Я предполагаю, что это связано с тем, что я не могу перейти непосредственно к определенному листу через URL, когда он скрыт - Google перенаправляет меня на видимый лист. Есть идеи для работы?