我正在使用以下脚本,该脚本非常适合将特定 Google 表格的 PDF 副本保存到我的 Google 云端硬盘。它专门按计划保存现有文件的顶部,但不会删除然后替换该文件,以维护已发出的共享链接。
function updatePDF2() {
var folderId = 'google_drive_folder_id';
var pdfName = 'filename.pdf';
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('PDF_AVAIL_TOOL');
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFilesByName(pdfName);
var existingFileId = files.hasNext() ? files.next().getId() : Drive.Files.create({ name: pdfName, mimeType: MimeType.PDF, parents: [folderId] }).id;
var url = 'https://docs.google.com/spreadsheets/d/' + spreadsheet.getId() + '/export?exportFormat=pdf&format=pdf';
var options = '&size=letter' +
'&portrait=true' +
'&scale=2' +
'&top_margin=0.25' + '&bottom_margin=0.25' + '&left_margin=0.25' + '&right_margin=0.25' +
'&sheetnames=false&printtitle=false&pagenumbers=true&gridlines=false&fzr=true' +
'&gid=' + sheet.getSheetId(); // Using the specific Sheet ID for exporting
var token = ScriptApp.getOAuthToken();
var headers = {
'Authorization': 'Bearer ' + token,
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch(url + options, { headers: headers });
if (response.getResponseCode() == 200) {
var blob = response.getBlob().setName(pdfName);
Drive.Files.update({}, existingFileId, blob);
DriveApp.getFileById(existingFileId).setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
Logger.log('PDF updated successfully and permissions are set.');
} else {
Logger.log('Failed to fetch the PDF: ' + response.getContentText());
}
}
我的问题是,此表末尾有许多空白行,我不希望/不需要生成 PDF 文件。该列表的长度经常变化,因此我需要动态调整。如果我在纸张本身上放置一个过滤器以删除空白,则在应用过滤器时打印将是完美的,但如果列表变短,底部将出现空白,如果列表变长,这些附加行会更糟不会显示在打印输出上。
如何调整脚本,以便在导出 PDF 之前应用过滤器以仅在工作表的 B 列中包含非空白值?