【问题标题】:Google form email confirmation script throws undefined error谷歌表单电子邮件确认脚本抛出未定义的错误
【发布时间】:2013-03-07 15:21:48
【问题描述】:

我有一个 Google 表单,用户可以输入他们注册的运动项目。他们输入他们的电子邮件、地址、姓名等。然后我在电子表格中为 Total 添加了一个列,这是一个 arrayformula,它根据他们的答案计算他们的总数欠。用户提交时带有表单的电子表格效果很好。

但是,在脚本管理器中,我有一个在 onFormSubmit 上触发的函数(见下文)。当用户填写并提交表单时,会发送“确认”电子邮件,并且所有字段都应该是除了 Total 出现为 undefined - 这是 arrayformula 列。为什么?我们不能发送这些字段吗?我真的需要电子邮件告诉用户他们欠了多少钱。 如何引用用户刚刚提交的行的 Total 列?

function onFormSubmit(e) {
 var timestamp = e.values[0];
  var toAddress = e.values[1];
  var LastName = e.values[2];
  var Street = e.values[3];
  var City = e.values[4];
  var Zip = e.values[5];
  var Phone = e.values[6];
  var Student1 = e.values[7];
  var GradeS1 = e.values[8];
  var BdayS1 = e.values[9];
  var GenderS1 = e.values[10];
  var SportS1 = e.values[11];
  var Student2 = e.values[12];
  var GradeS2 = e.values[13];
  var BdayS2 = e.values[14];
  var GenderS2 = e.values[15];
  var SportS2 = e.values[16];
  var Student3 = e.values[17];
  var GradeS3 = e.values[18];
  var BdayS3 = e.values[19];
  var GenderS3 = e.values[20];
  var SportS3 = e.values[21];
  var Student4 = e.values[22];
  var GradeS4 = e.values[23];
  var BdayS4 = e.values[24];
  var GenderS4 = e.values[25];
  var SportS4 = e.values[26]; 
  var Total = e.values[30];

  var subject = "Registration"; 

  var htmlBody = "The Registration details you entered were as follows:" +
      "<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Date/Time Submitted:  &nbsp;" + timestamp +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Family:  &nbsp;" + LastName +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Address:  &nbsp;" + Street + ", &nbsp;" + City + ", &nbsp;" + Zip + 
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Phone:  &nbsp;" + Phone +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Student 1:  &nbsp;" + Student1 + ", &nbsp;" + GradeS1 + ", &nbsp;" + BdayS1 + ", &nbsp;" + GenderS1 + ", &nbsp;" + SportS1 +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Student 2:  &nbsp;" + Student2 + ", &nbsp;" + GradeS2 + ", &nbsp;" + BdayS2 + ", &nbsp;" + GenderS2 + ", &nbsp;" + SportS2 +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Student 3:  &nbsp;" + Student3 + ", &nbsp;" + GradeS3 + ", &nbsp;" + BdayS3 + ", &nbsp;" + GenderS3 + ", &nbsp;" + SportS3 +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Student 4:  &nbsp;" + Student4 + ", &nbsp;" + GradeS4 + ", &nbsp;" + BdayS4 + ", &nbsp;" + GenderS4 + ", &nbsp;" + SportS4 +
      "<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;TOTAL DUE:  &nbsp;<b>$" + Total + 
        "</b><br/><br/>Please send your payment, <b>checks payable to Our Company </B> , to:  &nbsp;<font color=\"red\"><b>Person Name</font></b>" +
      "<br/><br/>Your registration will not be activated until payment is received.  Thank you so much!" +
      "<br/><br/>From Our Company";

  var optAdvancedArgs = {name: "Our Company", htmlBody: htmlBody};

  MailApp.sendEmail(toAddress, subject, "Message Body", optAdvancedArgs);

}

谢谢你,如果你能帮忙,请!

【问题讨论】:

  • 你能分享一份电子表格和表格的副本吗?这样我就可以建议一个工作代码,而不必为我的测试重写整个东西?只是不要在其中留下个人数据...谢谢

标签: google-apps-script


【解决方案1】:

你能发布你的数组代码吗?我猜这个数组的长度可能小于 30(29)。那个或数组以某种方式没有正确插入数据。我也喜欢在声明一个值时抛出一个 .toString() ;

【讨论】:

  • 这是数组中的代码: =ArrayFormula(AK2:AK+AQ2:AQ+AW2:AW+BC2:BC) 我尝试添加 .toString - 我已经搜索了互联网寻求答案。除非我添加错了它没有工作
  • ****但是!我什至不知道如何在这个论坛上添加评论,所以我感觉不是很自信!这很难……你不能按“进入”?
  • (看看这是否有效)这是数组中的代码:=ArrayFormula(AK2:AK+AQ2:AQ+AW2:AW+BC2:BC) 我试图添加 .toString ——我已经在互联网上搜索了答案。除非我添加错了它没有工作
  • 还有 Kevrone ...当您说数组的长度小于 30 时,我的印象是 30 是指该列?在电子表格上是 AE 列,但在我看来,您应该输入数字……而标准的“时间范围”是第 0 列,对吗?
  • 所以,我也刚刚发现了Logger.log(e.values),它显示了我所有的 e.values,它们最多只能达到 29。第 30-40 列是我的计算/数组公​​式所在的位置。 **所以我想最终的问题是......你能在 onformsubmit 脚本中添加那些计算字段吗? **
【解决方案2】:

正如您在问题中提到的那样,TOTAL 变量未在表单中定义,而是在电子表格中定义......所以它不对应于任何链接到 / 与表单一起出现的 e.parameter 是正常的. (e.values[x] 被引用到表单问题索引,而不是电子表格列,即使在实践中这些引用编号相同)

您应该尝试获取该值所在的位置,即在电子表格中!

由于我不知道您的电子表格布局,我无法告诉您它在哪里,但您应该可以轻松完成。

另一种可能的选择是通过在脚本级别执行与在电子表格单元格中执行的相同操作来处理脚本本身中的数据...如果只是添加变量值,那么实现起来应该不会太难。

【讨论】:

  • 我确实把它放在脚本本身中。我只是在为正确的用法而苦苦挣扎。给我sql,我没事,java没那么多。你能告诉我怎么写吗:假设变量 Field1 包含像“棒球,轨道”这样的答案,变量 Field2 包含像 7 这样的答案,你怎么说 IF Field1 包含棒球或轨道,Field2 包含“7,8,9,10” ,然后是AnswerB,否则是AnswerC?我将永远感激不尽!我已经搞砸了这么多,我的头很痛:)谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-04-04
  • 2017-07-31
  • 2014-07-18
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多