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

Метод Enumerable.Cast определяется как следующий:

public static IEnumerable<TResult> Cast<TResult>(
    this IEnumerable source
)

И нет информации об исходном типе элементов IEnumerable, поэтому я думаю, что каждый из ваших ints первоначально преобразован в System.Object через бокс и затем он пытается быть распакован в длинную переменную, и это неверно.

Аналогичный код для воспроизведения:

int i = 1;
object o = i; // boxing
long l = (long)o; // unboxing, incorrect
// long l = (int)o; // this will work

Таким образом, решение для вашей проблемы будет:

ints.Select(i => (long)i)
-3
задан Tedinoz 14 April 2019 в 05:58
поделиться

1 ответ

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

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

0
ответ дан Tedinoz 14 April 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: