在用户提交Google表单后,在电子邮件中获取Google表单的内容

时间:2017-07-04 09:41:07

标签: google-apps-script

我希望将google表单的内容发送到我的电子邮件,而不仅仅是新用户提交表单的通知。我输入以下代码。但我得到一个回复​​说,namedValues是未定义的。我试着提交一个虚拟谷歌表格,但它仍然没有发送给我电子邮件谷歌表格的内容。 function sendFormByEmail(e){      var email =“example@gmail.com”;

 var Name = e.values[3]; 
 var EmailAddress = e.values[4];
 var txt = ""; 
 for(var field in e.namedValues) {
 txt += field + ' :: ' + e.namedValues[field].toString() + "\n\n";
 }
 MailApp.sendEmail(email, "New Client", txt); 
 }

1 个答案:

答案 0 :(得分:1)

如果脚本附加到表单并在提交该表单时触发,请对该事件使用response object。 AFAIK您尝试访问的namedValues对象仅在您的脚本附加到接收表单输入的电子表格时才可用。

当我想快速将简单的表单提交发送到电子邮件地址时(我不使用可以执行此操作的插件等),我使用此脚本:

function onFormSubmit_sendEmail(e) {
  var msgBody = "";
  var itemResponses = e.response.getItemResponses();
  for (var i = 0; i < itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    msgBody = msgBody + itemResponse.getItem().getTitle() + ": " + itemResponse.getResponse() + "\n\n";
  }
  MailApp.sendEmail("someemail@somedomain", "Form Submission", msgBody); 
  }
}

你可以对项目标题(getTitle() method)使用一些测试来根据问题做不同的事情 - 例如如果您希望将电子邮件发送到哪个问题,请执行以下操作:

if (itemResponse.getItem().getTitle() == "Recipient Address") {
  var email = itemResponse.getResponse();

然后,您可以使用该MailApp.sendMail()函数。希望这会有所帮助。