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

Google Apps Script表单提交事件对象使用报错求助

Google Apps Script表单提交事件对象使用报错求助

看起来你遇到的是Google Apps Script表单触发里的常见坑,我来帮你一步步排查解决:

先搞定第一个核心错误:TypeError: Cannot read properties of undefined (reading 'namedValues')

  • 最常见的原因是手动运行函数:如果你直接在脚本编辑器里点击运行onFormSubmit,此时没有真实的表单提交触发,e参数是undefined,自然读不到namedValues。必须通过真实提交表单来测试,或者写一个模拟事件的测试函数(手动构造包含namedValues的对象传入)。
  • 检查触发器的拼写和类型:你提到设置了触发器运行onFormSubit,注意这里少了一个字母m!正确的函数名是onFormSubmit,拼写错误会导致触发器找不到函数,也就不会传入事件对象e。同时要确认触发器类型是**「表单提交」**,而不是时间驱动或其他类型。

再解决第二个错误:TypeError: Cannot read properties of undefined (reading '0')

  • 这个错误是因为代码里的字段名和表单实际的字段名不匹配。比如info['Type Of Service']是undefined,说明你的表单里没有这个精确名称的字段。要去Google Forms里核对每个字段的精确名称(包括大小写、空格、标点),比如是不是写成了“Type of Service”(小写的of)?最好直接从表单里复制字段名到代码里,避免拼写错误。
  • 可以在onFormSubmit里加日志打印,查看实际的字段名:
function onFormSubmit(e) {
  console.log(JSON.stringify(e.namedValues)); // 打印所有提交的字段和值
  const info = e.namedValues;
  createPDF(info);
}

提交表单后,去脚本编辑器的「查看」→「日志」里查看输出,就能看到所有真实的字段键名了。

额外的容错建议

为了避免因为某个字段缺失导致整个脚本崩溃,可以给每个字段读取加个容错处理:

// 比如读取FirstName,用可选链和默认值容错
const firstName = info['First Name']?.[0] || '';
body.replaceText("{fn}", firstName);

这里用了可选链操作符?.,如果字段不存在就不会报错,而是返回undefined,再用|| ''设置默认值为空字符串。

备注:内容来源于stack exchange,提问作者Sam Murdock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:35:29