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

Google Script:从同一Google Sheet导出多页PDF的实现方法

Google Script实现Google Sheet多区域分页面导出PDF

要实现将不同单元格区域作为单独页面导出到同一PDF,你需要先分别导出每个区域的PDF Blob,再将它们合并成一个多页文件。以下是修改后的完整代码:

function savePdfRechnung() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('HN_Vorlage');
  // 定义需要导出的两个单元格区域
  var rngStr1 = 'A1:I44';
  var rngStr2 = 'A51:I94';
  var inputs = sheet.getRange('O5:O23').getValues();
  var sheetId = sheet.getSheetId(); // 动态获取工作表ID,替代硬编码的gid

  // 构建导出URL的公共参数部分
  var baseUrl = 'https://docs.google.com/spreadsheets/d/' + ss.getId() + 
                '/export?format=pdf&exportFormat=pdf&size=A4&portrait=true&scale=4' +
                '&top_margin=0&left_margin=0&right_margin=0&bottom_margin=0' +
                '&gid=' + sheetId;

  // 获取第一个区域的PDF Blob
  var blob1 = UrlFetchApp.fetch(baseUrl + '&range=' + rngStr1, {
    headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}
  }).getBlob().setContentType('application/pdf');

  // 获取第二个区域的PDF Blob
  var blob2 = UrlFetchApp.fetch(baseUrl + '&range=' + rngStr2, {
    headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}
  }).getBlob().setContentType('application/pdf');

  // 合并两个PDF Blob为一个多页PDF,直接传入Blob数组即可自动合并
  var combinedPdf = DriveApp.createFile([blob1, blob2]).setName(inputs[0][0] + ".pdf");
  // 移动到目标文件夹
  combinedPdf.moveTo(DriveApp.getFolderById(inputs[1][0]));
}

关键优化点:

  • 动态获取工作表ID:用sheet.getSheetId()替代原代码中硬编码的1929278749,避免工作表ID变更后代码失效
  • 提取公共URL参数:把重复的导出参数抽成baseUrl,减少代码冗余
  • 简化合并逻辑:直接将两个PDF Blob放入数组传入DriveApp.createFile,Google会自动合并成多页PDF
  • 删除原代码中未使用的fetch函数,简化代码结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:12:15