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

如何使用Appscript将Google Sheet指定工作表作为PDF附件发送邮件

调整方案

原代码调用Spreadsheet.getAs(MimeType.PDF)时默认导出整个工作簿的所有可见工作表,要单独导出指定的sheet2工作表,需通过构造带工作表筛选参数的PDF导出链接实现,调整逻辑如下:

完整调整后代码

function sendReport() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 获取指定的sheet2工作表
  const targetSheet = ss.getSheetByName("sheet2");
  // 构造PDF导出链接,可按需调整导出参数
  const exportUrl = `${ss.getUrl()}/export?` + new URLSearchParams({
    format: "pdf",
    gid: targetSheet.getSheetId(), // 指定仅导出sheet2
    portrait: true, // 纵向排版,改为false则为横向
    size: "A4", // 纸张尺寸
    fitw: true, // 内容适配页面宽度
    gridlines: false, // 不导出网格线
    printtitle: false, // 不显示工作表名称
  });

  // 拉取PDF文件流
  const pdfBlob = UrlFetchApp.fetch(exportUrl, {
    headers: {
      "Authorization": `Bearer ${ScriptApp.getOAuthToken()}`
    }
  }).getBlob().setName("Monthly sales report");

  // 原有邮件配置,仅替换附件部分
  var message = {
    to: "youremail@example.com",
    subject: "Monthly sales report",
    body: "Hi team,\n\nPlease find the monthly report attached.\n\nThank you,\nBob",
    name: "Bob",
    attachments: [pdfBlob]
  }
  MailApp.sendEmail(message);

  // 原有隐藏/激活Data工作表的逻辑,对单独导出sheet2无影响,可按需保留或删除
  // ss.getSheetByName("Data").hideSheet();
  // ss.getSheetByName("Data").activate();
}

关键说明

  • 该方案无需隐藏其他工作表即可实现仅导出sheet2的效果,原有操作Data工作表的代码可根据实际业务需求自行决定是否保留
  • 导出URL的参数可灵活调整,比如修改size为LETTER切换纸张大小,修改gridlines为true导出带网格线的PDF等

内容的提问来源于stack exchange,提问作者NOOR UL KARIM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:45:03