我希望将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);
}
答案 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()函数。希望这会有所帮助。