TypeError:无法从undefined中读取属性“1”

时间:2014-06-10 14:46:28

标签: javascript typeerror

我有一些非常简单的代码,由google表单(请参阅http://goo.gl/lFHi3j)触发,要求提供2个电子邮件地址。当电子邮件地址被硬编码时,代码工作正常(请参阅下面的评论电子邮件)但当我尝试使用e.values获取电子邮件时(提交表单时)会出现以下错误

  

执行失败:TypeError:无法从undefined中读取属性“1”。   (第3行,文件“代码”)。

我搜索了这个论坛,但无法找到解决此问题的方法。任何人都可以帮忙。

    function onFormSubmit (e) {
//     var email_address_ = "pian1966@gmail.com";
       var email_address_ = e.values[1];

// Send the email
       var subject_ = "Andy's Report";
       var body_    = "Here is Andy's report...";
       MailApp.sendEmail(email_address_, subject_, body_, {htmlBody: body_}); 
    }

2 个答案:

答案 0 :(得分:3)

没有e.values[1]

这就是为什么你会收到这个错误的问题的答案。

通过在浏览器调试器中查看日志结果,执行console.log(e)并熟悉e包含的内容。

从那里你可以自己确定e.values是否作为数组存在。然后从那里开始。

答案 1 :(得分:1)

感谢您的回复,这些回复都帮助我找到了解决我遇到的问题的方法。这是我在解决方案方面所发现的:

  1. 必须创建Google App脚本(作为空白脚本) 回复电子表格而不是表单本身!
  2. 在Google表格中,开发者可以选择取消关联 回复电子表格并发送对新结果的回复 电子表格。如果选择此选项,则需要新脚本 从新的结果电子表格创建,代码必须是 复制/移动到新脚本中。当然这意味着一个新的 必须创建触发器并且需要授权脚本 运行。
  3. 一旦用户提交表单,他们就可以选择 编辑/更正他们的提交。除非每个字段都被编辑,否则 脚本认为未编辑的字段是空白的并写入" undefined" 进入生成的Google Doc。因此我禁用了编辑"编辑" 我的表格中的选项可以解决这个问题。
  4. 如果用户跳过不相关的字段(将其留空),那么 e.values编号顺序被抛弃。因此我做了 每个字段都必须包含用户输入的注释' n / a'如果一个 字段不适用。
  5. 在完成这些问题后,我的表格现在完美无缺(尽管有点笨拙,所有问题都是强制性的)。如果有人对如何解决编辑和空白字段问题有任何建议,我将非常感激。

    (感谢TJ休斯顿的原创剧本)