【问题标题】:Google Sheet to send an email when cell has specific valueGoogle Sheet 在单元格具有特定值时发送电子邮件
【发布时间】:2021-02-22 13:23:20
【问题描述】:

我有一个供学生输入数据的 Google 表单,如果特定问题有特定答案,我希望向我自己或其他人发送一封电子邮件。在电子邮件中,我希望将提交表格的学生的姓名包含在电子邮件中。我遇到的问题是电子邮件仅从表格的第 2 行发送信息。 (我有第 1 行 Frozen 作为标题)。我需要它从 Google 表单输入的最后一行数据中提取。

Google 表单 - https://docs.google.com/forms/d/1r1Tsyfl71zfzgzhs3-_qFB57FcSSEX1zS5BkTgz-ESA/prefill

Google 表格数据 - https://docs.google.com/spreadsheets/d/1P1RD7My91jLSHS9hgEOBPv5oYnfCJQviN6Nzy_cH7Cc/edit?usp=sharing

这是我的脚本代码:

 function CheckStudent(e) {

  
       // Fetch the email address
      var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2").getRange("B2");
      var emailAddress = emailRange.getValue();
  
  
      // Send Alert Email.
    {
      var studentData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1").getRange("C2");
    var studentData = studentData.getValue();
    var message = studentData + ' is not doing well today!' // Second column
    var subject = 'Student Daily Check Alert';
    MailApp.sendEmail(emailAddress, subject, message);
    }
    }

【问题讨论】:

  • 欢迎来到Stack Overflow。按照How to Ask 的建议,展示您尝试解决问题的方法以及对您的搜索/研究工作的简要描述。提示:而不是从电子表格中读取值,而是从表单提交事件对象中获取它们。
  • 你可以试试这个解决方案:talentnett.com/…
  • 我对你的问题有疑问。您想在每次用户填写表单时执行这段代码吗?还是您想存储所有数据并只执行一次?如果是第一个,您可以使用triggers
  • @Raserhin 我们每天都会将表格发送给学生,因此如果学生选择了某个答案,我们希望它会向老师和辅导员发送一封电子邮件。所以是的,每次有人填写它时,我们都希望它执行,你有设置它的建议吗?

标签: google-apps-script google-sheets google-forms email-notifications


【解决方案1】:

如果您已经在表单提交的表单中注册了电子邮件,那么就像创建installable trigger 一样简单。

您可以使用event object 来做到这一点。

如果您不熟悉触发器,那么我建议您阅读the official documentation 那里您可以看到一些如何创建触发器的示例:

var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("CheckStudent") // You will need to adapt your function 
                                     // to recieve the event parameter
  .forSpreadsheet(sheet)
  .onFormSubmit()
  .create();

一旦您执行了前面的代码,那么每次有人提交表单时都会触发您的函数。


编辑

现在我想你可以直接在表单对象中执行触发器,而不是通过工作表。

稍微更改event object 代码:

var form = FormApp.getActiveForm();
ScriptApp.newTrigger('CheckStudent')
    .forForm(form)
    .onOpen()
    .create();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多