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

Google Apps Script 无法发送邮件 代码错误排查

脚本无法正常发送邮件的常见错误点
  • 范围拼接语法错误
    你当前写的范围表达式是"B2:L80" + sh.getLastRow(),如果表格最后一行是80行,最终拼接出来的范围字符串是B2:L8080,属于无效的A1单元格表示法,脚本运行到取数这一步就会直接抛出异常,根本执行不到发邮件的逻辑。正确的范围写法应该是"B2:L" + sh.getLastRow(),去掉硬编码写死的80。
  • 条件判断类型不匹配
    Google表格中复选框、逻辑函数返回的判断结果是原生布尔类型true/false,不是字符串类型的"TRUE"。你用严格相等=== "TRUE"做判断,永远匹配不到符合条件的行,自然不会触发发邮件动作。判断条件需要改成if (overdueValue === true),如果不确定值的类型也可以直接写if (overdueValue)做真值判断。
  • 列索引偏移错误
    你当前取数范围是B列到L列,返回的二维数组中,每一行的索引0对应B列、索引1对应C列,以此类推:索引9对应K列,索引10对应L列。你需要核对实际存储触发标记、联系人姓名的列位置,避免取错列导致值为空、判断失效。
  • 权限未授权
    首次运行调用GmailApp.sendEmail接口的脚本时,会弹出Google授权窗口,需要手动同意脚本访问Gmail的权限,否则会抛出权限异常导致发送失败。
修正后可参考的代码
function sendEmail() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet1"); 
  // 修复范围拼接错误
  const data = sh.getRange("B2:L" + sh.getLastRow()).getValues();
  data.forEach(r=>{
     // 请根据实际列位置调整索引,B列为起始索引0
     let triggerFlag = r[9];  
     // 修复布尔类型判断
     if (triggerFlag === true){
         let name = r[10];
         let message = "Reach out to " + name;
         let subject = "Reach out to this person.";
         // 首次运行请同意弹出的授权申请
         GmailApp.sendEmail("xxxx@gmail.com", subject, message);  
     }
  });
}

内容的提问来源于stack exchange,提问作者Madara Kļavinska

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:25:04