基于条件发送邮件异常:数组元素≥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
相关产品推荐
相关产品推荐

