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

表单提交触发脚本报错:TypeError: Cannot read properties of undefined (reading '0')

问题分析与解决方案

错误原因

你遇到的TypeError: Cannot read properties of undefined (reading '0'),本质是代码中尝试读取e.values[0]时,e.values为undefined——说明表单提交的事件对象e没有被正确传入到函数中。


具体修复方案

1. 禁止手动直接运行onFormSubmit函数

直接在脚本编辑器点击运行onFormSubmit时,系统不会自动生成表单提交的事件对象e,此时e为undefined必然报错。

  • 正确测试方式:构造模拟事件对象进行调试,代码示例:
    function testOnFormSubmit() {
      // 模拟表单提交的事件对象,字段值对应你的表单结构
      var mockEvent = {
        values: ["2023-12-22 02:35:35", "测试用户", "测试歌曲", "测试祝福语"]
      };
      onFormSubmit(mockEvent);
    }
    
    运行这个testOnFormSubmit函数即可完成调试,正式触发必须通过实际提交表单。

2. 检查触发器配置是否正确

确认脚本已绑定正确的表单提交触发器:

  • 打开脚本编辑器,点击左侧闹钟形状的「触发器」图标
  • 检查是否存在一条类型为「表单提交」、关联函数为onFormSubmit的触发器
  • 若没有则点击「添加触发器」,按以下配置设置:
    • 选择函数:onFormSubmit
    • 事件源:来自表单
    • 事件类型:表单提交
    • 保存配置

3. 改用更稳定的namedValues获取字段值

e.values依赖表单字段的顺序,一旦表单调整字段顺序就会出错,建议改用e.namedValues按字段名取值,代码修改如下:

function onFormSubmit(e) {
  Logger.log("Event Object: " + JSON.stringify(e));

  // 替换为你表单中实际的字段名称(完全匹配大小写、空格)
  var timestamp = e.namedValues["时间戳"][0];
  var name = e.namedValues["姓名"][0];
  var songRequest = e.namedValues["点歌"][0];
  var dedication = e.namedValues["祝福语"][0];

  var message = "New song request and dedication:\n\n";
  message += "Timestamp: " + timestamp + "\n";
  message += "Name: " + name + "\n";
  message += "Song Request: " + songRequest + "\n";
  message += "Dedication: " + dedication + "\n";

  sendEmail("coolvibes1989@gmail.com", "New Song Request", message);
  sendEmail("kay2043838@gmail.com", "New Song Request", message);
  sendEmail("Shortdale4@gmail.com", "New Song Request", message);
}

注:namedValues返回的是数组(支持多值字段),所以需要用[0]取第一个值。

4. 确认sendEmail函数存在

你的代码中调用了sendEmail但未提供实现,若这是自定义函数,需补充以下代码:

function sendEmail(to, subject, body) {
  MailApp.sendEmail(to, subject, body);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:12:13