You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将已创建的Google表格附加到电子邮件?解决Blob相关问题

解决Google表格直接附加到邮件的问题

我懂你的痛点——直接用getBlob()默认转成PDF确实闹心,getAs()返回null也是因为Google Sheets的原生MIME类型没法直接通过这个方法获取Blob。要直接附加可编辑的原格式表格,试试下面这两种实用方法:

方法1:导出为Excel格式(最通用)

这是最稳妥的方案,导出的.xlsx文件完全保留原表格的格式、公式和数据,收件人无需Google账号就能用Excel或WPS直接编辑。

在Apps Script里用Drive API的导出端点获取对应格式的Blob:

function attachExcelSheet() {
  // 替换成你的表格ID
  const sheetId = "你的Google表格ID";
  const sheetFile = DriveApp.getFileById(sheetId);
  
  // 指定Excel格式的MIME类型,构造导出URL
  const exportMimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
  const exportUrl = `https://www.googleapis.com/drive/v3/files/${sheetId}/export?mimeType=${exportMimeType}`;
  
  // 获取OAuth令牌用于权限验证
  const authToken = ScriptApp.getOAuthToken();
  const response = UrlFetchApp.fetch(exportUrl, {
    headers: {
      'Authorization': `Bearer ${authToken}`
    }
  });
  
  // 生成Excel格式的Blob并设置文件名
  const excelBlob = response.getBlob().setName(`${sheetFile.getName()}.xlsx`);
  
  // 发送带附件的邮件
  MailApp.sendEmail({
    to: "收件人邮箱地址",
    subject: "原格式表格附件",
    body: "这是你需要的可编辑表格,格式完全保留",
    attachments: [excelBlob]
  });
}

方法2:导出为ODS格式(开源办公软件兼容)

如果收件人常用LibreOffice等开源工具,可替换MIME类型为application/vnd.oasis.opendocument.spreadsheet,导出.ods格式的文件,代码逻辑和上面一致,只需要修改exportMimeType的值即可。

注意事项

  • 第一次运行脚本时,会弹出授权请求,需要允许脚本访问Drive和发送邮件的权限;
  • 如果你需要导出CSV格式(仅保留数据,丢失格式和公式),可将MIME类型换成text/csv
  • Google Sheets的原生.gsheet格式本质是云端文件的快捷方式,无法作为实际可下载的Blob附件,因此不建议尝试——如果需要让收件人直接编辑原表格,不如在邮件里添加表格的共享编辑链接更实用。

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

火山引擎 最新活动