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

如何修改Google Apps Script发邮件脚本实现相同收件人仅发单封邮件

Apps Script 发信脚本邮箱去重修改方案

原有脚本是逐行判断发送状态触发发信,没有做邮箱维度的去重,我们通过新增已发送邮箱的全局校验实现去重,分两种常用场景适配:


场景1:同一个邮箱只要发过一次就不再发(不管对应多少条数据)

  • 第一步:在脚本最顶端声明已发送邮箱存储对象
// 全局存储已发送过的邮箱地址,自动去重
const sentEmails = new Set();
  • 第二步:在脚本初始化读取数据阶段,先遍历所有已经标记EMAIL_SENT的行,把对应邮箱提前存入Set,避免多次运行脚本时重复发信
// 遍历所有行,提前收集历史已发送邮箱
for (let i = 0; i < data.length; i++) {
  const row = data[i];
  const email = row[你脚本中邮箱所在的列索引,例如第2列就填1]; // 注意数组索引从0开始计算
  const emailSent = row[你脚本中EMAIL_SENT标记所在的列索引];
  if (emailSent === "EMAIL_SENT") {
    sentEmails.add(email);
  }
}
  • 第三步:找到原有逐行发信的逻辑,在判断EMAIL_SENT的逻辑前,新增邮箱重复校验
// 原有逻辑:判断当前行是否已经发过
if (row[emailSentColumn] === "EMAIL_SENT") continue;
// 新增逻辑:判断该邮箱是否已经发过,发过就直接跳过当前行
const currentEmail = row[emailColumn];
if (sentEmails.has(currentEmail)) continue;
  • 第四步:在原有发送成功后打EMAIL_SENT标记的逻辑后,新增把当前邮箱存入Set的代码
// 原有发送成功标记逻辑
sheet.getRange(startRow + i, emailSentColumn + 1).setValue("EMAIL_SENT");
// 新增:记录已发送邮箱,后续行碰到同地址直接跳过
sentEmails.add(currentEmail);

场景2:同一个邮箱的多条数据合并成一封邮件发送(不跳过数据,仅合并内容)

如果需要把同一个邮箱对应的多条通知内容整合到一封邮件里,就调整逻辑为先按邮箱分组再批量发信:

  • 第一步:先遍历所有待发送行,按邮箱分组存储对应内容
const emailGroups = {};
for (let i = 0; i < data.length; i++) {
  const row = data[i];
  const email = row[emailColumn];
  const emailSent = row[emailSentColumn];
  if (emailSent === "EMAIL_SENT") continue;
  // 无对应邮箱分组则初始化
  if (!emailGroups[email]) {
    emailGroups[email] = [];
  }
  // 把当前行的通知内容存入对应邮箱的分组
  emailGroups[email].push(row[contentColumn]); // contentColumn替换成你通知内容所在的列索引
}
  • 第二步:遍历分组发信,发完给该邮箱对应的所有待发送行统一打标记
for (const [email, contents] of Object.entries(emailGroups)) {
  // 合并内容,可自定义分隔符
  const emailBody = `你有以下待处理通知:\n${contents.join("\n---\n")}`;
  // 调用发信接口
  MailApp.sendEmail(email, "统一通知标题", emailBody);
  // 遍历所有行,给该邮箱对应的所有待发送行打已发送标记
  for (let i = 0; i < data.length; i++) {
    const row = data[i];
    if (row[emailColumn] === email && row[emailSentColumn] !== "EMAIL_SENT") {
      sheet.getRange(startRow + i, emailSentColumn + 1).setValue("EMAIL_SENT");
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:39:03