Google Apps Script实现Squarespace表单邮件确认时遇namedValues未定义错误
解决Google Apps Script中TypeError: Cannot read properties of undefined (reading 'namedValues')的问题
问题原因
你手动运行onFormSubmit函数时,没有传入表单提交事件所需的event参数。这个函数是表格的表单提交触发函数,只有当表格收到新的表单提交(比如Squarespace推送的数据)时,Google Apps Script才会自动生成包含namedValues的event对象并传入函数。手动运行时event对象为undefined,所以会触发该错误。
解决方案
不要手动运行触发函数
直接通过Squarespace提交测试表单,触发表格的表单提交事件,此时函数会自动获取到正确的event对象,正常执行。编写测试函数验证邮件逻辑
如果需要单独测试邮件发送或数据处理逻辑,可以写一个模拟event对象的测试函数,示例如下:// 正式的表单提交触发函数 function onFormSubmit(event) { // 从event中获取表单数据 const formData = event.namedValues; const userEmail = formData['邮箱'][0]; // 替换为你表单中的邮箱字段名 const userName = formData['姓名'][0]; // 替换为你表单中的姓名字段名 // 邮件内容 const subject = '表单提交确认'; const body = `您好${userName},感谢您的提交,我们已收到您的信息。`; // 发送邮件 MailApp.sendEmail(userEmail, subject, body); } // 测试函数,模拟event对象 function testOnFormSubmit() { // 模拟表单提交的namedValues数据 const mockEvent = { namedValues: { '邮箱': ['test@example.com'], '姓名': ['测试用户'] // 按你的表单字段添加更多数据 } }; // 调用正式函数,传入模拟的event onFormSubmit(mockEvent); }运行
testOnFormSubmit函数即可验证邮件逻辑是否正常,不会再出现namedValues未定义的错误。检查触发器配置
确认你的触发器配置正确:- 运行函数:
onFormSubmit - 事件源:电子表格
- 事件类型:表单提交
确保没有选择错误的事件类型(比如“打开电子表格”)。
- 运行函数:
内容的提问来源于stack exchange,提问作者DoverSeed Google Workspace Adm
相关产品推荐
相关产品推荐

