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

开发Google脚本:每日6点自动推送延迟交易汇总邮件至负责人

解决Google Sheet延迟交易汇总邮件自动发送问题

没问题,我帮你搞定这个需求!咱们可以调整代码实现按交易负责人汇总延迟交易并批量发送邮件,而且只在有延迟交易时触发发送。下面是完整的实现方案:

核心思路

咱们要做的就是三步:

  • 从Sheet里捞取所有数据,筛选出状态包含delay的交易
  • 把这些交易按「负责人邮箱」分组,每个邮箱对应自己的延迟交易列表
  • 遍历分组后的结果,给每个负责人发送一封汇总邮件

完整代码实现

打开你的Google Sheet,点击「扩展程序」→「Apps Script」,替换默认代码为以下内容:

function sendDelayDealSummary() {
  // 1. 配置Sheet信息(根据你的实际情况修改)
  const sheetName = "你的Sheet名称"; // 替换成你的工作表名称
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  const dataRange = sheet.getDataRange();
  const data = dataRange.getValues();
  
  // 跳过表头,从第二行开始遍历
  const headerRow = 1;
  const dealCol = 0; // 交易列索引(A列是0,B列是1,以此类推)
  const ownerEmailCol = 1; // 负责人邮箱列索引
  const statusCol = 2; // 交易状态列索引
  
  // 2. 按负责人邮箱分组延迟交易
  const delayDealsByOwner = {};
  
  for (let i = headerRow; i < data.length; i++) {
    const deal = data[i][dealCol];
    const ownerEmail = data[i][ownerEmailCol];
    const status = data[i][statusCol];
    
    // 检查状态是否包含"delay"(不区分大小写)
    if (status.toString().toLowerCase().includes("delay")) {
      // 如果该负责人还没在对象里,先初始化一个空数组
      if (!delayDealsByOwner[ownerEmail]) {
        delayDealsByOwner[ownerEmail] = [];
      }
      // 添加交易信息到对应负责人的列表
      delayDealsByOwner[ownerEmail].push({
        dealId: deal,
        status: status
      });
    }
  }
  
  // 3. 如果没有延迟交易,直接结束,不发邮件
  if (Object.keys(delayDealsByOwner).length === 0) {
    console.log("今日无延迟交易,无需发送邮件");
    return;
  }
  
  // 4. 给每个负责人发送汇总邮件
  const emailSubject = "【延迟交易汇总】你的待处理延迟交易清单";
  
  for (const [email, deals] of Object.entries(delayDealsByOwner)) {
    // 构建邮件内容(用HTML格式化,更清晰)
    let emailBody = "<p>您好,以下是您负责的延迟交易清单:</p>";
    emailBody += "<ul>";
    
    deals.forEach(deal => {
      emailBody += `<li>交易编号:${deal.dealId} | 状态:${deal.status}</li>`;
    });
    
    emailBody += "</ul><p>请及时跟进处理,谢谢!</p>";
    
    // 发送邮件
    GmailApp.sendEmail({
      to: email,
      subject: emailSubject,
      htmlBody: emailBody,
      noReply: true // 可选:用noreply邮箱发送
    });
    
    console.log(`已发送邮件至 ${email},共${deals.length}条延迟交易`);
  }
}

// 辅助函数:创建每日6点的定时触发器
function createDailyTrigger() {
  // 先删除已有的同名触发器,避免重复
  const existingTriggers = ScriptApp.getProjectTriggers();
  for (const trigger of existingTriggers) {
    if (trigger.getHandlerFunction() === "sendDelayDealSummary") {
      ScriptApp.deleteTrigger(trigger);
    }
  }
  
  // 创建每日上午6点的触发器
  ScriptApp.newTrigger("sendDelayDealSummary")
    .timeBased()
    .everyDays(1)
    .atHour(6)
    .create();
  
  console.log("已创建每日6点的自动发送触发器");
}

关键细节说明

  1. 列索引调整:代码里的dealCol、ownerEmailCol、statusCol要对应你Sheet里的实际列(A列是0,B列是1,以此类推),记得修改成你的列位置。
  2. 不区分大小写判断:用toLowerCase()把状态转成小写后再判断是否包含delay,避免因为大小写不一致漏判(比如Delay、DELAY都能被识别)。
  3. 邮件内容格式化:用HTML构建邮件体,生成有序/无序列表,比纯文本更易读。
  4. 空数据判断:如果当天没有任何延迟交易,脚本会直接结束,不会发送空邮件。

设置自动触发

  1. 在Apps Script编辑器里,点击顶部的「运行」按钮,先运行一次sendDelayDealSummary,授权脚本访问你的Google Sheet和Gmail权限(第一次运行需要授权,按照提示操作即可)。
  2. 再运行createDailyTrigger函数,这样就会创建一个每日上午6点自动执行sendDelayDealSummary的触发器。

这样就完美实现你的需求啦——每天6点自动检查,有延迟交易就给对应负责人发汇总邮件,没有就啥也不做~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:08:02