首页 > 解决方案 > 问题从显示错误“”TypeError:无法从未定义读取属性“值”的谷歌表单做出响应。(第 2 行,文件“代码”)“”

问题描述

在 Google 表单中,我正在尝试创建一个电子邮件响应,其中包含在表单响应(标题代码列)中生成的案例编号,但不幸的是,我遇到了错误:

typeError:无法从未定义中读取属性“值”。(第 2 行,文件“代码”)

我对此完全是新手,但我已经设置了触发功能,并在回复中发送的电子邮件中收到了此错误。

在下面找到响应文档的副本:

https://docs.google.com/spreadsheets/d/1w8cUkErljf6JzQm9q5aFwa-m9jX4o5qrAg5K7ib9Keg/edit?usp=sharing

这是我正在使用的代码:

function myFunction(e){
var userName = e.namedValues.Name;
var userEmail = e.namedValues.Tag;
var date = e.namedValues.Timestamp;
var subject = e.namedValues.Code;
var message = "Thanks, " + userName + " for submiting your data remember to take note of your Case number "+ subject + "You'll need this to for you or the customer to find the case again" +date;
MailApp.sendEmail (userEmail, subject, message);}

我希望它生成一封电子邮件,将代码用作主题并将其包含在正文中。

标签: google-apps-scripttypeerrorgoogle-forms

解决方案


不同的 Google 应用程序可以具有名称相同但事件对象不同的触发器。

要访问最新的表单响应,您需要触发器onFormsubmit(),它可以是 Google 表格和 Google 表单触发器。

e.namedValues是 Google Sheets onFormsubmit() 事件对象,而 Google Form onFormsubmit()事件对象是e.response

你有两个选择:

  1. 将您的 Apps 脚本绑定到保存表单响应的电子表格,e.namedValues并按预期访问响应
  2. 将您的 Apps 脚本绑定到表单本身并访问响应,e.response如下所示:
var userName = e.response.getItemResponses()[0].getResponse();
var userEmail= e.response.getItemResponses()[1].getResponse();
...

请记住,这onFormsubmit()是一个可安装的触发器。


推荐阅读