提交谷歌表单时发送电子邮件

Posted

技术标签:

【中文标题】提交谷歌表单时发送电子邮件【英文标题】:Send email when submitting google form 【发布时间】:2021-05-09 00:31:20 【问题描述】:

我不是程序员,但只有当有人提交 GoogleForm 时,我才需要此脚本自动发送最后一行的电子邮件。我不知道该怎么做。这是我的脚本:

function sendMail()

  
    var emailTemp = htmlService.createTemplateFromFile("Email");
    var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Respostas ao formulário 1");
    var data = ws.getLastRow("A:G").getValues();

      data.forEach(function(row)
      
      emailTemp.NOME = row[nome];
      emailTemp.ID = row[id];
      var htmlMessage = emailTemp.evaluate().getContent();

      GmailApp.sendEmail(
        row[email],
        "Inscrição no curso de Aromaterapia Vanusa Feitosa", 
        "Seu E-mail não suporta HTML.",
        name: "Instituto Vanusa Feitosa", htmlBody: htmlMessage  
    );

);   

【问题讨论】:

我需要当有人提交 googleForm 时,脚本会自动发送电子邮件,但只发送最后一行,而不是所有行,以不发送重复的电子邮件。 【参考方案1】:

您可以创建一个可安装的触发器。

可安装的触发器让 Apps 脚本在特定事件发生时自动运行函数。示例:提交的表单。

这将确保我们发送的电子邮件来自最新提交的表单。

如何创建可安装触发器?

打开您的 Apps 脚本项目。 点击左侧的触发警报。 点击右下角的添加触发器。 选择并配置您要创建的触发器类型。对于这种情况,请单击选择事件类型下方的下拉菜单并选择提交表单时 点击保存。

您的触发器应如下所示:

示例:

表格:

代码:

function sendEmail(e) 
  var response = e.namedValues;
  var name = response['Name'];
  var email = response['Email'];
  var subject = "Inscrição no curso de Aromaterapia Vanusa Feitosa";
  var templ = HtmlService.createTemplateFromFile('Email');
  templ.name = name;
  var message = templ.evaluate().getContent(); 
  GmailApp.sendEmail(email, subject, '', 
    htmlBody: message
  );

电子邮件.html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <p>
    Hello <?= name ?>
    </p>
  </body>
</html>

回应:

电子邮件:

参考资料:

Installable Triggers Event Objects sendEmail(recipient, subject, body, options)

【讨论】:

以上是关于提交谷歌表单时发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

异步提交表单时如何显示 php 错误消息?

php 表单不发送提交数据。但是仍然发送电子邮件和处理表格

不使用 PHP 提交表单

通过一次提交发送双表单,同时将电子邮件字段从第一个表单拉到第二个表单

HTML表单中的“提交”按钮不会发送电子邮件,就像应该[关闭]

Yii2表单验证但未提交发送电子邮件