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

Google Sheets onEdit脚本报错:无法读取undefined的source属性

解决Google Sheets表单提交触发邮件报错问题

错误原因分析

  1. 手动运行脚本导致的报错:直接在脚本编辑器里运行onEdit函数时,没有触发编辑事件,e参数为undefined,访问e.source就会抛出Cannot read properties of undefined错误。
  2. 核心适配问题:Google Forms提交数据到表格的操作,不会触发onEdit简单触发器;且简单触发器受权限限制,无法调用MailApp这类需要授权的服务,必须使用可安装的表单提交触发器。

修复后的脚本

替换原脚本为适配表单提交事件的代码,同时加入事件对象校验避免手动运行报错:

function onFormSubmit(e) {
  // 校验事件对象有效性,避免手动运行报错
  if (!e || !e.range) return;
  
  var sheet = e.range.getSheet();
  var row = e.range.getRow();
  // 获取当前提交行的所有数据
  var range = sheet.getRange(row, 1, 1, sheet.getLastColumn());
  var values = range.getValues()[0]; // getValues返回二维数组,提取第一行数据
  var message = values.join(", ");
  
  // 发送通知邮件
  MailApp.sendEmail("EXAMPLE@gmail.com", "עדכון בגיליון", message);
}

配置可安装触发器

  1. 打开Google Sheets,点击菜单栏「扩展程序」→「Apps脚本」进入脚本编辑器。
  2. 点击左侧面板的「触发器」图标(时钟样式),然后点击「添加触发器」。
  3. 在配置面板中选择:
    • 要运行的函数:onFormSubmit
    • 部署来源:「从电子表格」
    • 事件类型:「表单提交」
  4. 点击「保存」,按照提示完成授权流程(若提示应用未验证,点击「高级」→「转到对应脚本(不安全)」继续,这是自定义脚本的正常流程)。

关键注意事项

  • 不要手动运行onFormSubmit函数,只有当表单提交时触发器才会自动触发并传入合法的e对象。
  • 确保Google Forms的响应目标是当前表格的正确工作表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:45:38