0

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

但是在脚本管理器中,我有一个在 onFormSubmit 上触发的函数(见下文)。当用户填写并提交表单时,会发送“确认”电子邮件,并且所有字段都应为它们应该是的,除了 Total 出现未定义- 这是 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);

}

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

4

2 回答 2

0

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

于 2013-03-07T01:06:11.700 回答
0

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

您应该尝试将这个值放在它所在的位置,即在电子表格中!

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

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

于 2013-03-07T07:21:48.170 回答