我有一个名为“template”的google电子表格和一个附加的google脚本,它可以将“template”表格转换为具有以下功能的pdf blob:
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")
似乎隐藏工作表不会更改其工作表ID。我猜这与我无法通过URL直接导航到某个隐藏的工作表有关——Google将我重定向到一个可见的工作表。有什么解决办法吗?