You need to enable JavaScript to run this app. 如何修改Google Sheets脚本实现单元格满足指定条件时自动发送邮件
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Google Sheets脚本实现单元格满足指定条件时自动发送邮件

Google Sheets 自动发邮脚本修复方案

你使用的示例表单:Google Sheets表单示例
需求为I列计算值大于2且K列为空时自动触发邮件通知,原有脚本可按以下内容修改:

原有脚本存在的问题

  • 直接获取整列值返回的是二维数组,无法直接用于数值比较、空值判断,也无法直接拼接进邮件内容
  • 没有逐行校验匹配规则,不符合逐行判断的需求
  • 没有去重逻辑,同一行符合条件时会重复发送邮件

修复后完整代码

function sendEmail() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Workable");
  // 获取表格实际有数据的最后一行,避免遍历整列浪费性能
  var lastRow = sheet.getLastRow();
  // 批量获取B、I、K、M列数据(M列为辅助列,用于标记邮件是否已发送,避免重复发信)
  var rangeData = sheet.getRange(2, 2, lastRow - 1, 12).getValues(); // 从第2行开始跳过表头,取B到M列数据
  var email_address = 'allyson@hipcamp.com';
  var subject = 'New Listing Flagged';

  for (var i = 0; i < rangeData.length; i++) {
    var row = rangeData[i];
    var listingId = row[0]; // B列对应索引0
    var flagCount = row[7]; // I列对应索引7
    var actionType = row[9]; // K列对应索引9
    var sendFlag = row[10]; // M列对应索引10,记录是否已发邮件

    // 满足I>2、K为空、未发送过邮件三个条件时发信
    if (flagCount > 2 && actionType == "" && sendFlag != "已发送") {
      var message = 'Listing ' + listingId + ' has been flagged. Please resolve ASAP in the QA Google Sheet. Thank you!';
      MailApp.sendEmail(email_address, subject, message);
      // 发信后给对应行M列打标记,避免重复发信
      sheet.getRange(i + 2, 13).setValue("已发送");
    }
  }
}

后续配置要求

  • 脚本保存后,首次运行需要按提示授权,允许脚本访问你的表格和调用邮箱发信权限
  • 需要添加可安装触发器:在Apps Script编辑器左侧点击「触发器」→「添加触发器」,选择sendEmail函数,事件来源选择「电子表格」,事件类型选择「编辑」,保存后即可实现修改C-H列数据时自动校验规则触发邮件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 08:48:02