Я провел некоторое исследование, но не нашел способа сделать это. Пытался сделать то, что Эндрю Робертс объясняет здесь http://www.andrewroberts.net/2017/03/apps-script-create-pdf-multi-sheet-google-sheet/, чтобы преобразовать электронную таблицу (или конкретную c вкладку) в pdf:
function convertSpreadsheetToPdf(email, spreadsheetId, sheetName, pdfName) {
var spreadsheet = spreadsheetId ? SpreadsheetApp.openById(spreadsheetId) :
SpreadsheetApp.getActiveSpreadsheet();
spreadsheetId = spreadsheetId ? spreadsheetId : spreadsheet.getId()
var sheetId = sheetName ? spreadsheet.getSheetByName(sheetName).getSheetId() : null;
var pdfName = pdfName ? pdfName : spreadsheet.getName();
var parents = DriveApp.getFileById(spreadsheetId).getParents();
var folder = parents.hasNext() ? parents.next() : DriveApp.getRootFolder();
var url_base = spreadsheet.getUrl().replace(/edit$/,'');
var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf
// Print either the entire Spreadsheet or the specified sheet if optSheetId is provided
+ (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId))
// following parameters are optional...
+ '&size=A4' // paper size
+ '&portrait=false' // 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_base + url_ext, options);
var blob = response.getBlob().setName(pdfName + '.pdf');
folder.createFile(blob);
if (email) {
var mailOptions = {
attachments:blob
}
MailApp.sendEmail(
email,
"Here is a file named " + pdfName,
"Please let me know if you have any questions or comments.",
mailOptions);
}
Глядя на комментарии, он предлагает добавить следующий код, который я поместил в другую функцию:
function printtwopdfs() {
var sheetNames = ["Table1,"Table2"]
sheetNames.forEach(function(sheetName) {
convertSpreadsheetToPdf(TEST_EMAIL, "xxxxxx", sheetName,
"pdfteste")
})}
Но я получил каждый лист, напечатанный отдельно в виде одного PDF-файла.
Скрыть все вкладки, кроме тех, которые мне нужны, и распечатать электронную таблицу в целом - не вариант для меня, поскольку в ней слишком много вкладок (около 15). Кроме того, я вряд ли скопирую выбранные листы в новую электронную таблицу, потому что эта функция может занять слишком много времени, если я не смогу сделать это очень быстро. Есть идеи, как поступить?