使用特定变量在Google表单提交中发送电子邮件

时间:2019-03-19 16:04:13

标签: javascript forms google-sheets google-form

我真的是Google脚本的新手,需要您的帮助。

我有一个表单,其中包含一个字段,其中有一个名为owner的字段,这只是一个名称。

我需要创建一个脚本,以便在提交表单时向所有者字段中列出的人发送通知。

我知道如何直接在脚本上刻录电子邮件

function myFunction() {
  // Fetch the email address
  var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getRange("B2");
var emailAddress = emailRange.getValues();
// Send Alert Email.
var message = 'This is your Alert email!'; // Second column
var subject = 'Your Google Spreadsheet Alert';
MailApp.sendEmail(emailAddress, subject, message);
}

我迷失的问题是我知道如何根据存储在另一张纸上的所有者的姓名来识别电子邮件。

Here是示例表单的链接,here是示例电子表格

谁能分享一些光?

1 个答案:

答案 0 :(得分:0)

您需要了解和研究四件事。

1-创建一个可以作为可安装“ OnFormSubmit”触发器创建的脚本。 Documentation is here.。每次提交表单时都会执行此操作。这很容易做到,我在此答案的末尾添加了添加触发器屏幕的屏幕截图。

2-了解“ OnFormSubmit”脚本捕获的信息。特别是,它将返回您要从中获得第7列(所有者)值的表单提交范围。

3-电子邮件工作表包含一组单独的数据。您可以使用getSheetByName-documentation Ref

引用它

4-您需要在“电子邮件”工作表上查找“所有者和“名称”值之间的匹配项。有许多选项可用于查找与所有者的匹配项,但循环遍历“电子邮件”数据是在每个新行中,您检查电子邮件名称是否与“所有者”匹配。找到匹配项后,您将获得随附的电子邮件地址(在电子邮件名称旁边的单元格中),然后可以发送您测试过的电子邮件。


此代码使您现有的代码适应上述步骤。

function so5524531901(e) {

  // this script as an Installable "OnFormSubmit" Trigger

  //setup the spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  //get the range from OnFormSubmit
  var range = e.range;
  //Logger.log("DEBUG: the range is "+range.getA1Notation());//DEBUG

  // get the data for the range
  var response = range.getValues();

  // get the owner name from the form submission
  var owner = response[0][7];
  Logger.log("DEBUG: Owner = "+owner);// DEBUG

  // get the emails list
  var emailSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails");
  // get ALL the data from this sheet
  var emaildata = emailSheet.getDataRange().getValues();
  // check how many rows of data
  var emailLastRow = emailSheet.getLastRow();
  // start the loop through the emails data
  for (var i=1; i<emailLastRow; i++){

    // if owner is equal to Email Name
    if (owner == emaildata[i][0]){
      // there is a match
      //get the email address
      var emailAddress = emaildata[i][1];
      Logger.log("DEBUG: owner = "+emaildata[i][0]+", email address: "+emailAddress);// DEBUG

      // Send Alert Email.
      // Uncomment the following rows to declare the message, subject and then send the email.
      // var message = 'This is your Alert email!'; // Second column
      //var subject = 'Your Google Spreadsheet Alert';
      //MailApp.sendEmail(emailAddress, subject, message);

    }
  }
}

Create an Installable Trigger for OnFormSubmit