Как получить значение поля формы Google и использовать его в Appscript для отправки электронной почты

#javascript #google-apps-script #google-forms

#javascript #google-apps-script #google-forms

Вопрос:

Я хотел бы получить значение, которое я установил в раскрывающихся списках формы Google с именем «списки рассылки«.

Что я пытаюсь сделать, так это отправить настраиваемое электронное письмо с выбранным значением.

Моя форма выглядит следующим образом:

введите описание изображения здесь

Теперь, как только я выберу опцию, я хотел бы отправить на нее электронное письмо. Вот мой код appscript в формах:

 function sendEmail(e) {
  
  var html = HtmlService.createTemplateFromFile("email.html");
  var htmlText = html.evaluate().getContent();
  
  var emailTo = e.response.getRespondentEmail(); // how do I get the dropdown value here?
  Logger.log(emailTo)
  var subject = "sample subject";
  var textBody = "this is a body";
  var options = { htmlBody: htmlText };
  
  if(emailTo !== undefined){
    
    GmailApp.sendEmail(emailTo, subject, textBody, options)
  }
}
  

Вопрос в том, как мне присвоить emailTo значение, которое я выбираю в выпадающем списке?

Моя электронная таблица выглядит следующим образом:

введите описание изображения здесь

Ответ №1:

 e.values[1]  
  

свойство values содержит массив всех ответов, отправленных с формой, где e.values[0] — временная метка, а e.values[1] — выбранное выпадающее значение

Комментарии:

1. должен ли я использовать точно такой же параметр emailTo = e.values[1]; , тогда я получаю эту ошибку TypeError: не удается прочитать свойство ‘1’ из неопределенного

2. Используйте его в электронной таблице, а не в форме. Примечание: есть два onFormSubmits

3. Да, вам нужно настроить триггер для onFormSubmit

Ответ №2:

Объяснение:

Предполагая, что это sendEmail(e) является On form submit триггером в вашей форме, вы можете получить первый элемент ответа (в вашем случае, электронное письмо) следующим образом:

 var itemResponses = e.response.getItemResponses();
var email = itemResponses[0].getResponse();  // returns the email if given
  

Решение:

 function sendEmail(e) {
  
  var html = HtmlService.createTemplateFromFile("email.html");
  var htmlText = html.evaluate().getContent();
  
  var itemResponses = e.response.getItemResponses();
  var emailTo = itemResponses[0].getResponse();  // returns the email if given

  var subject = "sample subject";
  var textBody = "this is a body";
  var options = { htmlBody: htmlText };
  
  if(emailTo !== undefined){
    
    GmailApp.sendEmail(emailTo, subject, textBody, options)
  }
}