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

Google Sheets Script空邮箱跳过与发信状态设置方法

Google Sheets Script 批量发信功能修改方案

核心修改点

  • 空值跳过:读取每行C列邮箱后自动去除首尾空白字符,判断为空时直接跳过当前行,不执行发信逻辑
  • 状态标记:发信逻辑增加异常捕获,发送成功在指定列写入成功标识和发送时间,发送失败写入错误原因,不会因为单条消息发送失败中断整个批量任务
  • 修复原代码问题:原代码邮件正文拼接处直接断行存在语法错误,改为标准转义换行符写法,避免脚本运行报错

修改后完整可运行代码

function sendMails() {
  var wrkBk = SpreadsheetApp.getActiveSpreadsheet();
  var wrkShtEmailIDs = wrkBk.getSheetByName("recipient");
  var wrkShtMessage = wrkBk.getSheetByName("email_body");

  var subject = wrkShtMessage.getRange('A2').getValue();
  var message = wrkShtMessage.getRange('B2').getValue();

  // 遍历行范围:默认第5行到第100行,可根据实际数据行数调整上限
  for (var i = 5; i <= 100; i++){
    // 读取C列邮箱,去除首尾空格
    var emailCellVal = wrkShtEmailIDs.getRange('C' + i).getValue();
    var emailAddress = emailCellVal ? emailCellVal.toString().trim() : "";
    // 邮箱为空直接跳过当前行
    if (!emailAddress) {
      continue;
    }

    // 拼接邮件正文,修复原代码换行语法问题
    var finalmsg = "Hi " + emailAddress + "\n\n" + message;

    try {
      MailApp.sendEmail(emailAddress, subject, finalmsg);
      // 发送成功在D列标记状态,需要换列直接修改列字母即可
      wrkShtEmailIDs.getRange("D" + i).setValue("发送成功 " + new Date().toLocaleString());
    } catch (e) {
      // 发送失败记录错误信息
      wrkShtEmailIDs.getRange("D" + i).setValue("发送失败:" + e.message);
    }
  }
}

使用说明

  • 发送状态默认存在D列,如果你需要存在其他列,把代码中所有标记状态处的"D"替换为目标列的字母即可
  • 如果你的数据行数超过100行,直接修改for循环中i<=100的数值为你需要的最大行号
  • 首次运行需要按照弹窗提示授权脚本对应的邮件发送、表格编辑权限,否则无法正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:09:30