Отправка электронных писем при отправке формы Google с использованием определенных переменных - PullRequest
0 голосов
/ 19 марта 2019

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

У меня есть форма, которая среди полей имеет одно поле с именем владельца, это просто имя.

Мне нужно создать скрипт для отправки уведомления человеку, который указан в поле владельца при отправке формы.

Я знаю, как записать письмо прямо в сценарии

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 Ответ

0 голосов
/ 14 апреля 2019

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

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

2 - Узнайте об информации, полученной с помощью сценария OnFormSubmit.В частности, он вернет диапазон отправки формы, из которого вы хотите указать значение Столбца 7 (Владелец).

3 - лист электронных писем содержит отдельный набор данных.Вы можете получить его, сославшись на документацию getSheetByName - . Ссылка

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

...