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

禁用UrlFetchApp时,如何用DriveApp和MailApp发送.xlsx格式谷歌表格邮件?

解决Google表格转xlsx附件发送的问题

你遇到的错误其实很好理解:getAs()方法根本不支持把Google原生表格直接转换成xlsx格式——它只能处理一些简单的格式转换(比如转PDF或CSV),而xlsx需要依赖Google专门的导出服务,getAs()搞不定这件事。

结合你不能用UrlFetchApp、只能用DriveApp和MailApp的限制,这里有个可行的解决方案:

方案:启用Drive高级服务来导出xlsx

很多组织虽然禁用了UrlFetchApp,但不会禁用官方的Drive高级服务,这是我们的突破口:

第一步:启用Drive高级服务

  1. 打开你的脚本编辑器
  2. 点击顶部菜单栏的服务 → 添加服务
  3. 在弹出的窗口里找到Drive API,点击「添加」,然后确认

第二步:修改你的代码

把原来的代码替换成下面的版本,核心是用Drive.Files.export来获取xlsx格式的Blob:

function testsendxlsx() { 
  var spreadsheetId = "id_here";
  var fileName = "testing.xlsx";
  var recipient = "email_here";
  var subject = "testing .xlsx";
  var emailbody = "something";

  // 导出Google表格为xlsx格式的Blob
  var xlsxBlob = Drive.Files.export(spreadsheetId, MimeType.MICROSOFT_EXCEL);
  xlsxBlob.setName(fileName);

  // 发送带附件的邮件(注意attachments参数用数组更稳妥)
  MailApp.sendEmail(recipient, subject, emailbody, {attachments: [xlsxBlob]});
}

备选方案(仅当高级服务也被禁用时)

如果你的组织连Drive高级服务也禁用了,那只能退而求其次:先把表格导出成CSV,再手动构建xlsx文件。但这个方法需要处理单元格格式、公式、样式等细节,非常繁琐,除非必要不推荐。如果必须这么做,可以把SheetJS这类处理Excel的库代码复制到你的脚本里(因为不能用外部链接),然后自己编写转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:52:20