Google Apps Script条件触发邮件故障:无法发送预期邮件
问题排查与修复方案
核心逻辑错误(导致邮件永远不触发)
getValues()返回的是二维数组(格式为[[值1], [值2], ...]),直接用values <= -5做比较完全不成立,数组与数字的比较逻辑永远返回false,所以邮件发送代码块根本不会执行。- 你提到A列是商品名称(如Apples、Berries),用字符串和
-5做数值比较本身逻辑错误——应该是判断库存数量列(比如B列)的值是否≤-5,再取对应行的A列商品名称。
其他待修正问题
- 就算条件触发,直接拼接数组
values到邮件内容里,会得到混乱的格式(比如Buy Goods Apples,Berries,...),无法清晰列出符合条件的商品。 - 首次运行脚本时未授权
MailApp发送邮件权限,会导致脚本执行失败(可查看脚本编辑器「执行记录」确认是否有授权错误)。
修复后的示例代码
function Buy() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const buySheet = ss.getSheetByName("Buy"); // 假设A列是商品名称,B列是库存数量,取A2:B7的所有数据 const data = buySheet.getRange("A2:B7").getValues(); const emailSheet = ss.getSheetByName("Email"); const emailAddress = emailSheet.getRange("E2").getValue(); // 筛选出库存≤-5的商品名称 const needBuyGoods = data.filter(row => row[1] <= -5).map(row => row[0]); // 有符合条件的商品才发送邮件 if (needBuyGoods.length > 0) { const message = 'Buy Goods: ' + needBuyGoods.join(', '); const subject = 'Buys Alert'; MailApp.sendEmail(emailAddress, subject, message); } }
额外检查点
- 确认「Email」工作表的E2单元格填写了有效的收件邮箱地址。
- 查看脚本编辑器的「执行记录」(左侧菜单「执行」),确认是否有报错信息,比如权限不足、工作表名称拼写错误等。
内容的提问来源于stack exchange,提问作者DPK
相关产品推荐
相关产品推荐

