通过Google Apps Script检查表内容并按需导出PDF至邮件压缩包
发送含指定工作表PDF压缩包的Google Apps Script解决方案
刚好我之前做过类似的需求,给你整理了一个现成的Google Apps Script脚本,能完美实现你要的功能——只把Google Sheets里有实际内容的工作表转成PDF,打包成压缩包后发送到指定邮箱。脚本会通过检测特定单元格(示例用的A11)的内容判断工作表是否有效,避免把空表也打包进去,具体如下:
完整脚本代码
function sendPDFZipViaEmail() { // 这里是可以自定义的配置项 const ss = SpreadsheetApp.getActiveSpreadsheet(); const targetEmail = "recipient@example.com"; // 替换成你要发送的邮箱 const checkCell = "A11"; // 用来判断工作表是否有效的单元格位置 const emailSubject = "有效工作表PDF压缩包"; const emailBody = "您好,附件是整理好的有效工作表PDF压缩包,请查收。"; // 创建临时文件夹存生成的PDF,避免乱占Drive空间 const tempFolder = DriveApp.createFolder("临时PDF存储"); let validPdfFiles = []; // 遍历所有工作表 const allSheets = ss.getSheets(); for (let sheet of allSheets) { const sheetName = sheet.getName(); const cellContent = sheet.getRange(checkCell).getValue(); // 判断工作表是否有效:这里默认非空即为有效,你可以改成自己的判断逻辑 if (cellContent !== "" && cellContent !== null) { // 配置PDF导出的参数,比如尺寸、是否显示网格线这些 const exportUrl = `https://docs.google.com/spreadsheets/d/${ss.getId()}/export?` + `format=pdf` + `&gid=${sheet.getSheetId()}` + `&size=A4` + `&portrait=true` + `&fitw=true` + `&sheetnames=false` + `&printtitle=false` + `&pagenumbers=false` + `&gridlines=false` + `&fzr=false`; // 调用API获取PDF内容 const authToken = ScriptApp.getOAuthToken(); const response = UrlFetchApp.fetch(exportUrl, { headers: { 'Authorization': 'Bearer ' + authToken } }); // 把PDF存到临时文件夹 const pdfBlob = response.getBlob().setName(`${sheetName}.pdf`); const savedPdf = tempFolder.createFile(pdfBlob); validPdfFiles.push(savedPdf); } } // 如果有有效PDF,就打包发邮件 if (validPdfFiles.length > 0) { // 把所有PDF打包成ZIP const zipPackage = Utilities.zip(validPdfFiles.map(file => file.getBlob()), "有效工作表PDF.zip"); // 发送邮件 MailApp.sendEmail({ to: targetEmail, subject: emailSubject, body: emailBody, attachments: [zipPackage] }); // 清理临时文件夹 tempFolder.setTrashed(true); SpreadsheetApp.getUi().alert(`邮件发送成功!一共包含${validPdfFiles.length}个PDF文件。`); } else { SpreadsheetApp.getUi().alert("没检测到有效工作表,不用发邮件啦~"); } }
关键功能拆解
- 有效工作表筛选:脚本会挨个检查每个工作表的指定单元格(比如A11),只有当这个单元格有内容时,才会把该工作表转成PDF。你可以根据自己的需求修改判断逻辑,比如改成“单元格内容包含‘完成’关键词”之类的。
- 自定义PDF样式:通过构造导出URL,我已经帮你配置好了常用的PDF参数——A4竖版、适配页面宽度、隐藏工作表名/页码/网格线,你要是需要调整(比如改成横版、显示页码),直接修改URL里的参数就行。
- 自动清理临时文件:生成的PDF会先存在临时文件夹里,邮件发完就自动删掉,不会在你的Drive里留下垃圾文件。
- 压缩包发送:把所有有效PDF打包成一个ZIP,避免邮件附件太多显得杂乱,收件人下载也更方便。
使用小贴士
- 第一次运行脚本时,会弹出授权请求,按照提示给脚本授权访问Drive和邮件服务就行。
- 记得把脚本里的
targetEmail换成实际要接收邮件的邮箱地址。 - 如果要换检测的单元格,直接修改
checkCell的值(比如改成B5)。 - PDF导出参数可以根据需求调整,比如把
size=A4改成size=Letter,portrait=true改成portrait=false就能导出横版PDF。
内容的提问来源于stack exchange,提问作者Allan Thompson




