使用Apps Script自动将Google Sheets指定工作表导出为PDF至云端硬盘
解决方案
1. 修改脚本实现自动保存到云端硬盘
以下脚本可批量隐藏指定工作表,自动将所有可见工作表导出为PDF并保存到Google云端硬盘,全程无需手动交互:
function exportSheetsToDrivePDF() { // 配置参数 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheetsToHide = ["test2", "sheet3", "sheet4", "sheet5"]; // 替换为你要隐藏的4个工作表名称 const folderId = "你的云端硬盘文件夹ID"; // 替换为目标文件夹ID,留空则保存到根目录 const pdfBaseName = ss.getName(); // PDF文件名前缀 // 批量隐藏指定工作表 sheetsToHide.forEach(sheetName => { const sheet = ss.getSheetByName(sheetName); if (sheet) sheet.hideSheet(); }); // --- 选项1:每个可见工作表单独导出为PDF --- const visibleSheets = ss.getSheets().filter(sheet => !sheet.isSheetHidden()); visibleSheets.forEach(sheet => { const sheetId = sheet.getSheetId(); const pdfName = `${pdfBaseName}_${sheet.getName()}.pdf`; // 构造导出URL const url = `https://docs.google.com/spreadsheets/d/${ss.getId()}/export?exportFormat=pdf&gid=${sheetId}&access_token=${ScriptApp.getOAuthToken()}`; // 获取PDF内容并保存到云端硬盘 const response = UrlFetchApp.fetch(url, { headers: { Authorization: `Bearer ${ScriptApp.getOAuthToken()}` } }); const pdfBlob = response.getBlob().setName(pdfName); if (folderId) { DriveApp.getFolderById(folderId).createFile(pdfBlob); } else { DriveApp.createFile(pdfBlob); } }); // --- 选项2:所有可见工作表合并为单个PDF(替换选项1的代码即可)--- // const pdfName = `${pdfBaseName}_所有可见工作表.pdf`; // const url = `https://docs.google.com/spreadsheets/d/${ss.getId()}/export?exportFormat=pdf&access_token=${ScriptApp.getOAuthToken()}`; // const response = UrlFetchApp.fetch(url, { headers: { Authorization: `Bearer ${ScriptApp.getOAuthToken()}` } }); // const pdfBlob = response.getBlob().setName(pdfName); // if (folderId) { // DriveApp.getFolderById(folderId).createFile(pdfBlob); // } else { // DriveApp.createFile(pdfBlob); // } // 可选:导出后恢复隐藏的工作表(保持原表格显示状态) sheetsToHide.forEach(sheetName => { const sheet = ss.getSheetByName(sheetName); if (sheet) sheet.showSheet(); }); }
脚本说明
- 批量隐藏:通过
sheetsToHide数组一次性指定需隐藏的工作表,无需重复调用函数 - 云端保存:使用
UrlFetchApp获取PDF数据,再通过DriveApp直接保存到指定文件夹 - 恢复工作表:最后一段代码可恢复隐藏的工作表,避免修改原表格的显示状态
- 双选项支持:根据需求选择「单工作表单独导出」或「多工作表合并导出」
2. 设置自动触发(无需手动运行)
- 打开Google Sheets,点击「扩展程序」→「Apps脚本」
- 在脚本编辑器左侧点击「触发器」图标(闹钟形状)
- 点击「添加触发器」,配置以下参数:
- 选择运行函数:
exportSheetsToDrivePDF - 部署类型:「基于时间的触发器」
- 时间驱动类型:按需选择(如「每天」「每周」或特定时间点)
- 配置具体时间后点击「保存」
- 选择运行函数:
3. 权限说明
首次运行脚本或设置触发器时,需授权脚本访问你的Google Sheets和云端硬盘权限,按提示完成授权即可。
内容的提问来源于stack exchange,提问作者WeyldFalcon
相关产品推荐
相关产品推荐

