求助:修正基于条件导出指定Google Sheet为PDF至Drive文件夹的脚本
修正后的Google Apps Script脚本
先梳理原脚本存在的问题:
- 混淆工作表ID与名称:
getSheetByName需传入工作表名称而非ID,你误用了Sheet2的ID,应改为名称'Sheet2',或改用getSheetById方法 - 拼写错误:
spreadsheetApp首字母需大写为SpreadsheetApp - 条件判断错误:用赋值符号
=替代了相等判断符号=== - 未定义
pdfName变量:需从Sheet2的C3单元格提取员工姓名作为PDF文件名 - 逻辑偏离需求:原脚本检查Tracking表C6的值,而你需要验证Sheet2的C3员工姓名是否匹配
- 导出方式冗余:复制整个工作簿转PDF会包含所有Sheet,且未清理临时文件
以下是匹配你需求的修正脚本:
function exportSheetToPDF() { // 配置参数 const targetSheetName = 'Sheet2'; // 目标工作表名称 const employeeFolderId = '1Jy2Yr7u0qrgy90Gvtb6p8V27baS7T_eP'; // 员工文件夹ID const targetEmployeeName = '张三'; // 替换为你要匹配的员工姓名 // 获取源工作簿和目标工作表 const sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const targetSheet = sourceSpreadsheet.getSheetByName(targetSheetName); if (!targetSheet) { SpreadsheetApp.getUi().alert('未找到指定工作表'); return; } // 获取Sheet2的C3单元格员工姓名 const employeeName = targetSheet.getRange('C3').getValue().trim(); // 检查员工姓名是否匹配 if (employeeName !== targetEmployeeName) { SpreadsheetApp.getUi().alert('员工姓名不匹配,不执行导出'); return; } // 获取目标文件夹 const employeeFolder = DriveApp.getFolderById(employeeFolderId); if (!employeeFolder) { SpreadsheetApp.getUi().alert('未找到指定文件夹'); return; } // 配置PDF导出参数(仅导出目标Sheet) const pdfOptions = { sheetId: targetSheet.getSheetId(), format: 'pdf', printSelectionOnly: true }; // 构建PDF导出URL const spreadsheetId = sourceSpreadsheet.getId(); const url = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/export?` + Object.entries(pdfOptions).map(([key, value]) => `${key}=${value}`).join('&'); // 获取PDF文件Blob const token = ScriptApp.getOAuthToken(); const response = UrlFetchApp.fetch(url, { headers: { 'Authorization': `Bearer ${token}` } }); // 创建PDF文件到指定文件夹 const pdfBlob = response.getBlob().setName(`${employeeName}_工作表.pdf`); employeeFolder.createFile(pdfBlob); SpreadsheetApp.getUi().alert('PDF已成功导出到员工文件夹'); }
使用提示
- 将
targetEmployeeName替换为你需要匹配的具体员工姓名 - 若需通过工作表ID获取目标Sheet,可注释掉
getSheetByName行,启用sourceSpreadsheet.getSheetById('工作表ID') - 可根据需求添加PDF导出参数,比如
landscape: true设置横向、margins: 'default'配置边距等 - 首次运行需按提示完成权限授权
内容的提问来源于stack exchange,提问作者Shan Jose
相关产品推荐
相关产品推荐

