【问题标题】:How do I send an email when a Google Form is submitted?提交 Google 表单后如何发送电子邮件?
【发布时间】:2018-03-17 12:31:24
【问题描述】:

表单提交后如何发送通知邮件?

我有一个 Google 表单,我打开它,然后转到菜单 More->Script Editor 并添加一个脚本:

function OnSubmit(e) {
  MailApp.sendEmail ("myemail@mydomain.com", "Form Submited: Foo feedback " + Date.now(), "Form Submited: Foo feedback");
}

我保存脚本并按下运行按钮测试它是否有效。电子邮件将发送到 myemail@mydomain.com

然后我填写了谷歌表单,但是邮件没有到达 myemail@mydomain.com 邮箱。

附: 我不想使用“表单的电子邮件通知”插件,因为它要求访问许多权限。我不想使用“表单通知”,因为出于某种原因它对我不起作用(电子邮件未送达)。

【问题讨论】:

  • 请尝试手动创建“提交表单”触发器并将其附加到您的函数中。让我知道这是否可行。

标签: google-apps-script google-forms


【解决方案1】:

终于找到了,藏在下面

  • 编辑表单模式
  • Responses标签
  • ...菜单按钮
  • Get email notifications for new responses

【讨论】:

  • 谢谢,无需插件即可使用!惊人的
  • 这只会发送通知而不是电子邮件中的数据。是否有其他设置将数据作为电子邮件通知发送。
【解决方案2】:

要在提交时发送电子邮件,您需要保存此脚本,在脚本编辑器中对其进行测试(并在看到权限弹出窗口时接受),然后提交表单。

脚本会查找提交触发器,如果​​找不到,则会添加一个发送电子邮件的新触发器。

function respondToFormSubmit() {
   MailApp.sendEmail ("email@domain.com", "Form Submited: Foo feedback " + Date.now(), "Form Submited: Foo feedback");
}

var form = FormApp.getActiveForm();
var triggers = ScriptApp.getUserTriggers(form);

var existingTrigger = null;
for (var i = 0; i < triggers.length; i++) {
  if (triggers[i].getEventType() == ScriptApp.EventType.ON_FORM_SUBMIT) {
    existingTrigger = triggers[i];
    break;
  }
}
if (!existingTrigger) {
  var form = FormApp.getActiveForm();
  var trigger = ScriptApp.newTrigger('respondToFormSubmit')
  .forForm(form)
  .onFormSubmit()
  .create();
}

【讨论】:

  • 当您编写代码时,它会在每次调用函数时创建一个新触发器...非常糟糕的主意!触发器创建函数必须在一个单独的函数中,该函数只运行一次。此外,如果能解释一下您的答案以使其有用,那就太好了。
  • 是的,刚刚注意到它现在发送了几封电子邮件,而不是一封。你知道如何只注册一次触发器吗?
  • 使用developers.google.com/apps-script/reference/script/script-app检查触发器是否已经存在,并在创建新触发器之前在条件中使用结果
  • @Sergeinsas 谢谢,完成!你能去掉-1吗?
【解决方案3】:

现在,更简单的方法是使用“工具”下的“通知规则...”项。

【讨论】:

  • 在哪里可以找到这个菜单。我在 Google 表单上没有看到这个菜单!
  • @Krunal 看看我的答案,我刚刚找到了。
猜你喜欢
  • 2013-08-15
  • 2015-03-28
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2021-11-11
相关资源
最近更新 更多