#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)
}
}