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

问题描述 投票:-3回答:1

我对谷歌脚本非常新,我需要你的帮助。

我有一个表单,在它拥有的字段中,它有一个名为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是示例电子表格

谁能分享一些亮点?

javascript forms google-sheets google-form
1个回答
0
投票

您有四件事需要理解和研究。

1 - 创建可以创建为Installable“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

© www.soinside.com 2019 - 2024. All rights reserved.