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

能否将Google Sheets中多个工作表作为单个邮件附件发送?

多工作表合并导出单个附件实现方案

可以实现该需求,调整逻辑为:预先指定需要导出的工作表名称,创建临时工作簿将目标工作表批量复制到临时文件中,导出临时文件为xlsx作为附件发送后自动删除临时文件,不会改动原工作簿的任何内容。

修改后的完整代码如下:

function emailauto() { 
  // 配置参数区
  const SOURCE_FILE_ID = "替换为你的原表格FileID";
  const TARGET_SHEET_NAMES = ["工作表1", "工作表2", "工作表3"]; // 替换为你要导出的工作表名称,和原表名称完全一致
  const RECEIVER_EMAILS = "email1@test.com,email2@test.com"; // 收件人邮箱

  var date = Utilities.formatDate(new Date(), 'America/Santiago', 'yyyy-MM-dd HH:mm:ss')
  // 获取原工作簿
  const sourceSS = SpreadsheetApp.openById(SOURCE_FILE_ID);
  // 创建临时工作簿
  const tempSS = SpreadsheetApp.create("临时导出文件_" + date);
  const tempSSId = tempSS.getId();

  // 批量复制目标工作表到临时工作簿
  TARGET_SHEET_NAMES.forEach(sheetName => {
    const sourceSheet = sourceSS.getSheetByName(sheetName);
    if (sourceSheet) { // 校验工作表是否存在,避免报错
      sourceSheet.copyTo(tempSS).setName(sheetName);
    }
  });
  // 删除临时工作簿默认生成的空白Sheet1
  tempSS.deleteSheet(tempSS.getSheetByName("Sheet1"));
  // 保存临时工作簿的修改
  SpreadsheetApp.flush();

  // 导出临时工作簿为xlsx
  var url = "https://docs.google.com/spreadsheets/d/" + tempSSId + "/export?format=xlsx&access_token=" + ScriptApp.getOAuthToken();
  var file = UrlFetchApp.fetch(url).getBlob().setName("Filename_" + date + ".xlsx");

  // 发送邮件
  GmailApp.sendEmail(RECEIVER_EMAILS, 'Test', 'Test date: ' + date + '.\n\nRegards.', {
    attachments: [file],
    name: 'Tester'
  });

  // 发送完成后删除临时文件,避免占用云端存储空间
  DriveApp.getFileById(tempSSId).setTrashed(true);
}

注意事项

  • 代码里配置参数区的内容需要根据你实际的情况替换,工作表名称要和原表中的名称完全匹配,包含大小写、空格
  • 首次运行代码需要授权Drive、Sheet、Gmail相关的操作权限,正常授权即可,不会产生额外风险
  • 如果需要调整导出的文件格式,仅需要修改export参数里的format值即可,比如要导出csv的话换成format=csv即可

内容的提问来源于stack exchange,提问作者Ghw-ghw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:54:03