如何在提交Google表单时发送电子邮件?

Woj*_*tek 7 google-apps-script google-forms

表格提交后如何发送通知电子邮件?

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

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

我保存脚本并按下运行按钮测试它的工作原理.该电子邮件将发送至myemail@mydomain.com.

然后我填写Google表格,但电子邮件未到达myemail@mydomain.com邮箱.

PS我不想使用"电子邮件通知表单"插件,因为它请求访问许多权限.我不想使用"表单通知",因为由于某种原因它不适用于我(电子邮件无法发送).

Woj*_*tek 5

要在提交表单时发送电子邮件,您需要将以下脚本复制到脚本编辑器,运行createTrigger一次并接受必要的权限。该函数查找“表单提交”触发器,如果​​没有找到,则会创建一个新触发器。之后您可以提交表单,它将发送onFormSubmit函数中指定的电子邮件

function createTrigger() {
  
  var form = FormApp.getActiveForm(); // active form

  var formTriggers = ScriptApp.getUserTriggers(form); // form triggers

  var noTrigger = true; // assuming there is no 'onFormSubmit' trigger

  for (let t = 0; t < formTriggers.length; t++) {
    let trigger = formTriggers[t];
    if (trigger.getEventType() == ScriptApp.EventType.ON_FORM_SUBMIT) {
      noTrigger = false; // trigger exists
      break;
    }
  }

  if (noTrigger) {
    Logger.log('Creating trigger');
    var form = FormApp.getActiveForm();
    ScriptApp.newTrigger('onFormSubmit')
      .forForm(form)
      .onFormSubmit()
      .create();
  } else {
    Logger.log('OnFormSubmit trigger already exists')
  }

}

function onFormSubmit() {
  MailApp.sendEmail ('recipient@email.com', 'New form submission', 'Form submitted on ' + new Date());
}
Run Code Online (Sandbox Code Playgroud)

  • 当您编写代码时,每次调用该函数时,它都会创建一个新的触发器...非常糟糕的主意!触发器创建函数必须位于仅运行一次的单独函数中。而且最好解释一下您的答案以使其有用。 (2认同)

ang*_*sen 5

终于找到了,藏在下面

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

在此处输入图片说明

  • 这仅发送通知而不发送电子邮件中的数据。是否有其他设置将数据作为电子邮件通知发送。 (2认同)