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

如何在Google Apps Script邮件发送代码中添加Google Drive附件?

如何在Google Apps Script邮件发送代码中添加Google Drive附件?

看起来你遇到的问题是给邮件加Drive附件后,不仅附件没加上,连邮件都发不出去了对吧?我来帮你梳理下代码里的问题,再给你修正后的可用版本。

首先说你最新代码里的两个核心问题:

  • 你在rows.forEach循环里面嵌套定义了另一个sendEmails函数,但这个内部函数根本没被调用,直接把原本的邮件发送逻辑给“藏”起来了,自然不会有邮件发出
  • MailApp.sendEmail的参数格式用错了:要添加附件,不能直接把文件对象当第四个参数,得用配置选项对象来传递附件信息

下面是修正后的完整代码,我已经帮你调整了结构,并且正确添加了附件逻辑:

function sendEmails() {
  // 加载表格数据
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const allData = sheet.getDataRange().getValues();
  const headers = allData[0];
  const rows = allData.slice(1);

  // 辅助函数:根据表头名获取列索引
  const getColIndex = (headerName) => {
    const index = headers.indexOf(headerName);
    if (index === -1) throw new Error(`表头 "${headerName}" 未找到`);
    return index;
  };

  // 获取各列索引(这里用了你修改后的表头名)
  const nameCol = getColIndex("Namn");
  const emailCol = getColIndex("E-postadress");
  const sentCol = getColIndex("Sent");

  // 提前获取Drive中的附件文件(放在循环外,避免重复调用,提升效率)
  const attachmentFileId = '1ezM-QiJ73Ry4xmNMdWHdC-4jXJ4gUHhB';
  const attachment = DriveApp.getFileById(attachmentFileId);

  // 遍历表格每一行
  rows.forEach((row, i) => {
    const name = row[nameCol];
    const email = row[emailCol];
    const sent = row[sentCol];

    // 跳过无邮箱或已发送的行
    if (!email || sent) return;

    // 邮件主题和正文(保留你的个性化内容)
    const subject = `Postpartum Checklist`;
    const body = `Dear ${name},\n\nSå härligt att du tar dina första steg mot en positiv postpartum upplevelse. Oavsett om det är din första eller fjärde gång, hoppas jag att du hittar lite trygghet i den här checklistan.\n\nLadda ner och skriv ut den, eller få ditt utskriven exemplar från mig om du valde att bli kontaktad för en första konsultation.\n\nMvh,\nLeila`;

    // 正确发送带附件的邮件:用选项对象传附件
    MailApp.sendEmail({
      to: email,
      subject: subject,
      body: body,
      attachments: [attachment]
    });

    // 在Sent列标记发送时间
    sheet.getRange(i + 2, sentCol + 1).setValue(new Date());
  });
}

另外再给你几个注意事项,避免后续踩坑:

  • 确保你的Google Apps Script有访问该Drive文件的权限:如果文件是共享给你的,要确认共享权限是“查看者”及以上;如果是你自己的文件,一般不会有权限问题
  • 检查attachmentFileId是否正确:你可以从Drive文件的URL里提取ID(URL中d/和/view之间的字符串就是文件ID)
  • 测试的时候可以先找一行未发送的测试数据,避免一次性发大量邮件

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 08:13:05