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

基于条件发送邮件异常:数组元素≥45时未按预期触发

修正后的邮件触发脚本

你的代码存在两个核心问题:

  • daysPastService是getValues()返回的二维数组,直接和数字45比较永远不成立,导致if条件从未触发,后续发送邮件的代码会无条件执行
  • 逻辑判断完全倒置,即便条件满足,return true会直接终止函数,反而不会发送邮件

以下是修正后的代码:

function sendEmail1(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet4 = ss.getSheetByName('Dewar ID');
  var sheet5 = ss.getSheetByName('Notification Settings');
  var email_listing = sheet5.getRange(5,1).getValue();
  var subject = sheet5.getRange(3,2).getValue();
  var message = sheet5.getRange(3,3).getValue();
  var todaysDate = sheet4.getRange(1,8).getValue();
  var daysPastService = sheet4.getRange("E3:E60").getValues();

  // 遍历二维数组,检查是否存在≥45的数值
  var shouldSend = false;
  for(var i = 0; i < daysPastService.length; i++){
    // 取每行的第一个元素(因为是单列范围)
    var value = daysPastService[i][0];
    if(typeof value === 'number' && value >= 45){
      shouldSend = true;
      break; // 找到符合条件的数值后直接终止循环
    }
  }

  // 仅当存在符合条件的数值时发送邮件
  if(shouldSend){
    GmailApp.sendEmail(email_listing, subject, message);
  }
}

修改说明:

  • 新增遍历逻辑:逐个检查E3:E60范围内的每个数值,确认是否存在≥45的项
  • 加入类型判断typeof value === 'number',避免空单元格或文本内容干扰判断
  • 调整逻辑顺序:只有当检测到符合条件的数值时,才执行邮件发送代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:47:53