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

如何在Google Sheet中每24小时自动运行发邮件函数?

实现Google Apps Script自动每24小时发送邮件直到无邮箱地址

Got it, let's fix this up so your email notifications run automatically every 24 hours until there are no more email addresses left in your sheet. Here's how to do it step by step:

第一步:修正基础发送函数(补全逻辑+错误处理)

你的原函数有几个小问题需要调整,比如直接调用getSheetByName会报错,还要添加空邮箱判断和终止逻辑:

function sendNotification() {
  // 获取目标工作表(补全SpreadsheetApp调用)
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("testRollcallremaining");
  if (!sheet) {
    console.log("找不到名为testRollcallremaining的工作表,请检查工作表名称");
    return;
  }
  
  var rows = sheet.getLastRow();
  // 如果只有表头行(无数据),直接停止触发器并退出
  if (rows < 2) {
    stopDailyTrigger();
    return;
  }
  
  var cols = sheet.getLastColumn();
  var dataRange = sheet.getRange(2, 1, rows - 1, cols);
  var data = dataRange.getValues();
  
  // 遍历数据,仅给有有效邮箱的联系人发邮件
  for (var i = 0; i < data.length; i++) {
    var name = data[i][0];
    var to = data[i][1];
    // 检查邮箱是否非空且有效
    if (to && typeof to === 'string' && to.trim() !== "") {
      // 替换成内置邮件服务(如果你的sendEmail是自定义函数,可保留原逻辑)
      MailApp.sendEmail({
        to: to,
        subject: "Subject",
        body: `Hi ${name},\n\nMessage Body Here` // 加入名字让邮件更友好
      });
    }
  }

  // 可选:如果发送后要删除已处理的行(避免重复发送),取消下面注释
  // sheet.deleteRows(2, rows - 1);
}

第二步:添加自动触发器相关函数

我们需要三个辅助函数:创建每日触发器、删除已有触发器、无数据时停止触发器:

// 创建每24小时运行一次的触发器(运行一次即可)
function createDailyTrigger() {
  // 先删除同名触发器,避免重复创建
  deleteExistingTriggers("sendNotification");
  
  ScriptApp.newTrigger("sendNotification")
    .timeBased()
    .everyHours(24)
    .create();
  
  console.log("每日邮件触发器已创建,将每24小时自动运行");
}

// 删除指定函数的所有触发器
function deleteExistingTriggers(functionName) {
  var triggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() === functionName) {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
}

// 无剩余邮箱时停止触发器
function stopDailyTrigger() {
  deleteExistingTriggers("sendNotification");
  console.log("工作表中已无邮箱地址,自动发送任务已停止");
}

第三步:设置自动运行

方式1:手动创建触发器(简单直观)

  1. 打开你的Google Sheet,点击顶部菜单栏「扩展程序」→「Apps脚本」
  2. 在脚本编辑器左侧,点击「触发器」图标(时钟形状)
  3. 点击「添加触发器」,配置以下选项:
    • 选择函数:sendNotification
    • 部署类型:Head
    • 事件源:时间驱动
    • 触发器类型:计时器
    • 时间间隔:每24小时
  4. 点击「保存」,首次运行需要授权脚本访问你的邮箱和表格(按提示完成授权即可)

方式2:代码创建触发器(适合批量/自动化场景)

在脚本编辑器中,选择createDailyTrigger函数,点击运行按钮,执行一次即可自动创建24小时间隔的触发器。

关键注意事项

  • 邮件配额限制:Google Apps Script每日邮件发送有配额(普通账号约100封/天,Workspace账号更高),如果联系人数量大,要注意不要超限。
  • 重复发送问题:如果希望发送后不再给同一人发邮件,取消sendNotification函数中sheet.deleteRows(2, rows - 1)的注释,发送后自动删除已处理行。
  • 调试模式:可以先手动运行sendNotification测试邮件发送是否正常,再开启自动触发器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:38:51