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

Google Sheets脚本实现多单元格邮件发送及抄送功能需求

解决Google Apps Script多邮箱收件及抄送问题

嘿,我来帮你搞定这个邮件发送的问题!你现在的脚本只处理了单个邮箱,所以没法实现多收件人和抄送功能,咱们一步步来调整:

1. 核心思路

要实现需求,我们需要:

  • 从D10:D12、M5:M6、AL10:AL12这几个单元格范围读取所有邮箱地址
  • 把这些地址分成收件人(to)和抄送(cc)组(你可以根据自己的需求分配,下面示例我假设D10:D12是主收件人,M5:M6+AL10:AL12是抄送)
  • 过滤掉空单元格,避免无效的空邮箱
  • 调用MailApp.sendEmail时传入正确的to和cc参数

2. 完整脚本示例

function sendEmail() {
  // 获取当前活动表格
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // 定义需要读取的邮箱范围:可根据需求调整收件/抄送分配
  const recipientRanges = ["D10:D12"]; // 主收件人范围
  const ccRanges = ["M5:M6", "AL10:AL12"]; // 抄送范围

  // 工具函数:读取指定范围的邮箱,过滤空值并去重
  function getEmailsFromRanges(ranges) {
    let emails = [];
    ranges.forEach(range => {
      const values = sheet.getRange(range).getValues();
      // 把二维数组转一维,过滤空值和重复项
      values.flat().forEach(email => {
        if (email && !emails.includes(email)) {
          emails.push(email);
        }
      });
    });
    return emails.join(","); // 转成逗号分隔的字符串,符合邮件参数要求
  }

  // 获取整理后的收件人和抄送邮箱
  const toEmails = getEmailsFromRanges(recipientRanges);
  const ccEmails = getEmailsFromRanges(ccRanges);

  // 邮件内容(可根据需求修改)
  const subject = "测试多收件人邮件";
  const body = "这是一封通过Google Apps Script发送的多收件人+抄送测试邮件";

  // 发送邮件
  if (toEmails) { // 确保有收件人才发送
    MailApp.sendEmail({
      to: toEmails,
      cc: ccEmails,
      subject: subject,
      body: body
    });
    SpreadsheetApp.getUi().alert("邮件发送成功!");
  } else {
    SpreadsheetApp.getUi().alert("没有有效的收件人邮箱,请检查单元格内容!");
  }
}

3. 关键说明

  • 范围调整:如果想更改哪些范围属于收件人、哪些属于抄送,直接修改recipientRanges和ccRanges数组里的范围字符串即可
  • 去重与过滤:脚本自动跳过空单元格,并移除重复邮箱,避免重复发送
  • 参数格式:to和cc要求是逗号分隔的邮箱字符串,所以用join(",")把数组转成符合要求的格式
  • 扩展功能:如果需要发送HTML格式邮件或添加附件,只需在sendEmail的配置对象里添加htmlBody或attachments参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:10:55