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

Google Sheets单元格编辑触发邮件脚本报错:TypeError: 无法读取未定义对象的属性 'range'

问题分析与修正方案

核心错误原因

  • 直接手动运行sendEditNotification函数:这个脚本依赖Google Sheets的onEdit触发器事件对象e,手动运行时e是undefined,读取e.range自然会报错。必须通过工作表编辑触发,或者测试时手动构造e对象。
  • 脚本本身存在多处语法、逻辑错误,就算触发成功也无法正常运行。

修正后的完整脚本

function sendEditNotification(e) {
  // 拦截手动运行,避免报错
  if (!e) {
    console.log("请通过编辑工作表触发此函数,不要手动运行");
    return;
  }

  // 限定只处理"Daily PSP List"工作表,且编辑的是第6列(F列)、值为"Checked in"的情况
  const targetSheetName = "Daily PSP List";
  if (e.range.getSheet().getName() !== targetSheetName || e.range.columnStart !== 6 || e.value !== "Checked in") {
    return;
  }

  // 获取当前编辑行的完整数据(索引从0开始,对应表格列)
  const targetSheet = e.source.getSheetByName(targetSheetName);
  const row = e.range.rowStart;
  const rowData = targetSheet.getRange(row, 1, 1, targetSheet.getLastColumn()).getValues()[0];
  
  // 根据你的表格结构调整索引:比如姓名在D列是索引2,年份在E列是索引3,时长在G列是索引5
  const name = rowData[2];
  const year = rowData[3];
  const duration = rowData[5];
  const email = "Chris.DonovanBayley@swale.at";
  const currentStatus = "Checked in";

  // 构造邮件内容
  const msg = `Hi, ${name} has been marked ${currentStatus}\n年份: ${year}\n时长: ${duration}`;
  
  // 发送邮件
  MailApp.sendEmail(email, "PSP attendance", msg);
}

关键修正点说明

  1. 新增事件对象校验:加if (!e)判断,避免手动运行时报错,同时给出明确提示。
  2. 修正工作表判断逻辑:原代码e.source.getActiveSheet().getSheetByName()逻辑混乱,改成直接判断当前编辑的工作表是否为目标表,防止其他工作表编辑触发脚本。
  3. 获取正确行数据:原代码getRange()无参数会拉取整个工作表数据,效率低且固定取rData[1][3]逻辑错误,改成获取当前编辑行的数据,符合实际需求。
  4. 修复变量与语法错误:
    • 修正Email和email大小写不一致问题(JS大小写敏感)。
    • 补充未定义的CurrentStatus变量,改成明确的currentStatus。
    • 用模板字符串替代拼接,避免语法错误,同时让内容更易读。
  5. 适配列索引:JS中列索引从0开始,比如表格D列对应索引2,需要根据你的实际表格结构调整rowData的索引值。

触发器设置步骤

  1. 打开目标Google Sheets,点击「扩展程序」→「Apps脚本」。
  2. 在脚本编辑器左侧,点击时钟形状的「触发器」图标。
  3. 点击「添加触发器」:
    • 选择函数:sendEditNotification
    • 部署类型:「从电子表格」
    • 事件类型:「编辑时」
    • 保存并完成权限授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:30:31