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

如何修改Google Apps Script将多工作表导出为单个PDF文件

修改脚本实现导出所有工作表为单个PDF

原脚本的问题在于循环遍历每个工作表单独导出,要改成导出整个表格为单PDF,只需做以下关键调整:

核心修改点

  • 移除遍历单个工作表的循环逻辑,直接导出整个电子表格
  • 删除URL参数中的&gid=项,这样Google Sheets会默认导出所有可见工作表为一个连续的PDF
  • 统一文件名的取值(原脚本每个sheet取自己的D5,现在需要固定取某一个单元格的值,比如第一个工作表的D5,你可以根据需求修改)

修改后的完整代码

function savePDFs(optSSId, optSheetId) {
  var ss = optSSId ? SpreadsheetApp.openById(optSSId) : SpreadsheetApp.getActiveSpreadsheet();
  var url = ss.getUrl().replace(/edit$/, '');
  var parents = DriveApp.getFileById(ss.getId()).getParents();
  
  var folders = DriveApp.getFoldersByName('Invoices');
  var folder = folders.hasNext() ? folders.next() : parents.next();

  // 导出整个表格的PDF参数,去掉gid参数即可导出所有可见工作表
  var url_ext = 'export?exportFormat=pdf&format=pdf'
    + '&size=letter'      // 纸张尺寸
    + '&portrait=true'    // 纵向排版,false为横向
    + '&fitw=true'        // 适配宽度,false为实际尺寸
    + '&sheetnames=false&printtitle=false&pagenumbers=false'  // 隐藏页眉页脚
    + '&gridlines=false'  // 隐藏网格线
    + '&fzr=false';       // 每页不重复冻结行表头

  var options = {headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}};
  var response = UrlFetchApp.fetch(url + url_ext, options);
  
  // 取第一个工作表的D5值作为文件名,可根据需求修改为特定工作表
  var valor = ss.getSheets()[0].getRange('D5').getValue();
  var blob = response.getBlob().setName(valor + '.pdf');
  folder.createFile(blob);
}

额外说明

  • 如果只想导出特定几个工作表而不是全部,可以在URL参数里添加&include_grids=sheetId1,sheetId2,sheetId3,把对应的工作表ID用逗号分隔替换进去
  • 文件名的单元格取值可以自行修改,比如改成ss.getSheetByName("Sheet1").getRange('D5').getValue()来指定某个工作表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:20:29