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

使用App Script将电子表格转Excel发邮件时附件无法打开如何解决

问题根源

你当前代码直接拉取的是谷歌表格的原生文件链接,获取到的并非标准xlsx格式内容,仅手动修改MIME类型和文件后缀无法解决格式不兼容的问题,必须调用谷歌表格的专用导出接口获取xlsx格式的文件流。

修正后代码
var folders = DriveApp.getFolderById('folder_id')
var files  = folders.getFiles();

if (files.hasNext()) {
  file = files.next();
  // 替换为xlsx格式导出链接
  var url = `https://docs.google.com/spreadsheets/d/${file.getId()}/export?format=xlsx`;
  var params = {
    method: "get",
    headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
    muteHttpExceptions: true
  };

  var blob = UrlFetchApp.fetch(url, params).getBlob();
  // 直接设置文件名即可,无需强制修改MIME类型
  blob.setName(file.getName() + ".xlsx");
        
  MailApp.sendEmail(email_ids, 'Sample Subject', 'Mail with attachment', {
    attachments: [blob],
    name: 'Automatic Emailer Script',
    cc:email_id
  })
}
关键修改说明
  • 将原file.getUrl()替换为谷歌表格专属的xlsx导出链接,导出接口会直接返回标准xlsx格式的文件流
  • 移除了强制设置MIME类型的冗余代码,导出返回的blob本身已符合xlsx格式要求
  • 补充了原代码中缺失的fileName变量定义,示例中直接取源文件名称作为附件名称,你可根据需求自定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:06:04