You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:修正基于条件导出指定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已成功导出到员工文件夹');
}

使用提示

  1. 将targetEmployeeName替换为你需要匹配的具体员工姓名
  2. 若需通过工作表ID获取目标Sheet,可注释掉getSheetByName行,启用sourceSpreadsheet.getSheetById('工作表ID')
  3. 可根据需求添加PDF导出参数,比如landscape: true设置横向、margins: 'default'配置边距等
  4. 首次运行需按提示完成权限授权

内容的提问来源于stack exchange,提问作者Shan Jose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:15:33