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

如何使用Google Appscript和Google Sheet发送任意数量的邮件附件

Google Sheet邮件发送程序多附件适配方案

修改逻辑

GmailApp.sendEmail方法的attachments参数原生支持传入文件对象数组,不需要针对固定附件数量写分支逻辑,可直接适配1~N份附件的需求。
你只需要调整原有逻辑:将原来的单文件名读取改为多文件名拆分、逐个拉取文件后组装为数组即可,使用时在原有填写附件名的列里,用指定分隔符(比如英文逗号)分隔多个文件名就行。

修改后完整代码

// 读取附件名列内容,多文件名用英文逗号分隔即可
var attachStr = ws.getRange(lr, 17).getValue().toString();
// 拆分文件名,自动去除首尾空格、过滤空值
var attachNameList = attachStr.split(',').map(name => name.trim()).filter(name => name.length > 0);
var attachments = [];
// 遍历拉取所有附件文件
attachNameList.forEach(fileName => {
  var fileIterator = DriveApp.getFilesByName(fileName);
  // 仅当文件存在时加入附件列表,避免文件不存在导致程序报错
  if (fileIterator.hasNext()) {
    attachments.push(fileIterator.next());
  }
});
// 发送邮件,直接传入附件数组即可适配任意数量附件
GmailApp.sendEmail('',
  sub,
  '',
  {
    htmlBody: htmlforemail,
    bcc: emails.join(","),
    attachments: attachments
  }
);

注意事项

  • 如需更换分隔符(比如用分号分隔文件名),仅需修改代码中split(',')里的逗号为对应分隔符即可
  • 代码自带异常兼容,写错文件名、文件不存在时只会跳过对应附件,不会中断发送流程
  • 如果Drive内有重名文件,默认取第一个匹配到的文件,建议保证文件名唯一避免发错附件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:15:02