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

Google Sheets Apps Script生日提醒:设置排除寿星的团队收件人

解决生日提醒程序的收件人筛选与多寿星处理问题

修改后的完整代码

function main() {
  var sheet = SpreadsheetApp.getActive().getSheetByName("Geburtstage");
  var numRows = sheet.getLastRow();
  // 加载所有成员数据(第2行到最后一行,4列)
  var allMembers = sheet.getRange(2, 1, numRows - 1, 4).getValues();
  
  // 1. 提取所有成员邮箱,同时构建姓名-邮箱映射表
  var allEmails = [];
  var nameToEmail = {};
  allMembers.forEach(member => {
    var name = member[0];
    var email = member[2];
    allEmails.push(email);
    nameToEmail[name] = email;
  });

  // 2. 收集今天所有过生日的成员
  var todaysBirthdayPeople = [];
  allMembers.forEach(member => {
    var name = member[0];
    var birthday = member[3];
    if (isBirthdayToday(birthday)) {
      todaysBirthdayPeople.push(name);
    }
  });

  // 3. 如果今天有寿星,发送提醒邮件
  if (todaysBirthdayPeople.length > 0) {
    // 生成排除所有寿星的收件人列表
    var recipients = allEmails.filter(email => {
      return !todaysBirthdayPeople.some(name => nameToEmail[name] === email);
    }).join(",");

    // 构建邮件内容(支持多个寿星的情况)
    var subject = "Geburtstagerinnerung: " + todaysBirthdayPeople.join(", ");
    var body;
    if (todaysBirthdayPeople.length === 1) {
      body = `${todaysBirthdayPeople[0]} hat heute Geburtstag!`;
    } else {
      body = `Heute haben folgende Kollegen Geburtstag: ${todaysBirthdayPeople.join(", ")}!`;
    }

    // 发送邮件(确保有收件人时才执行)
    if (recipients) {
      MailApp.sendEmail(recipients, subject, body);
    }
  }
}

// 检查生日是否为当天
function isBirthdayToday(birthday) {
  var today = new Date();
  return today.getDate() === birthday.getDate() && today.getMonth() === birthday.getMonth();
}

关键逻辑说明

  • 预加载全量成员数据:一次性读取所有成员信息,构建邮箱列表和姓名-邮箱映射表,避免循环中重复操作表格,提升效率的同时方便后续筛选。
  • 批量收集当日寿星:先遍历所有成员筛选出当天过生日的人,统一处理而非逐个发送,自然解决多人同日生日的场景,避免重复发送冗余邮件。
  • 精准筛选收件人:使用filter方法从全量邮箱列表中排除所有寿星的邮箱,再转为邮件服务支持的逗号分隔字符串,确保不会给寿星本人发提醒。
  • 适配多寿星的邮件内容:根据当日寿星数量动态调整邮件主题和正文,让提醒信息更清晰直观。
  • 避免无效发送:添加收件人非空判断,防止全员都是寿星时发送空收件人的无效邮件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:10:30