Отправка электронных писем при отправке формы Google с использованием определенных переменных

#javascript #forms #google-sheets #google-forms

#javascript #формы #google-sheets #google-forms

Вопрос:

Я действительно новичок в Google scripts, и мне нужна ваша помощь.

У меня есть форма, в которой среди имеющихся в ней полей есть одно поле с именем 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);
}
  

Проблема, с которой я запутался, заключается в том, что я знаю, как распознать электронное письмо в зависимости от имени владельца, которое хранится на другом листе.

Вот ссылка на образец формы и вот пример электронной таблицы

Кто-нибудь может поделиться информацией?

Ответ №1:

Есть четыре вещи, которые вам нужно понять и исследовать.

1 — Создайте скрипт, который может быть создан как устанавливаемый триггер «onFormSubmit». Документация находится здесь.. Это будет выполняться каждый раз при отправке формы. Это легко сделать, и я добавил скриншот экрана добавления триггера в конце этого ответа.

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);

    }
  }
}
  

Создайте устанавливаемый триггер для onFormSubmit