Я сделал анкету с помощью Google Forms. У меня есть набор адресов электронной почты (например, [email protected], [email protected], ...) в качестве целей для отправки анкеты. Я получаю адреса электронной почты респондентов, если они отправляют свои ответы. Ответы могут быть сохранены в электронной таблице Google. Я хотел бы отправить электронное письмо с напоминанием только тем, кто не отвечает до тех пор, пока они не получат свое электронное письмо.
Я использую следующий код на script.google.com, который может отправлять электронную почту и работает с настраиваемым триггером в G Suit Developer Hub. Но он просто отправляет электронное письмо с напоминанием на все электронные письма, перечисленные в следующем коде. Как я могу добавить к нему условие, которое удовлетворяет тому, что я описал?
function sendFormEmail() {
var emailAddress = "[email protected], [email protected]";
var htmlMessage = HtmlService.createHtmlOutputFromFile("Reminder_email.html").getContent();
var subject = "Participation reminder";
var message = "Hi, please be reminded to submit your response";
MailApp.sendEmail(emailAddress, subject, message, {
htmlBody: htmlMessage
});
}
Электронная таблица состоит из 20 столбцов, и данные вставляются в каждую строку после ответа участника. первый столбец - метка времени, например. 13.05.2019 14:44:55, а второй столбец — адрес электронной почты. Я хочу, чтобы было отправлено только одно напоминание. Анкета также должна быть разослана всем участникам через неделю.
Сравните свой набор писем с данными ответов. Если участник ответил, не отправляйте письмо.
@Diego Точно, это то, что я думал сделать, но я совершенно новичок в этом скрипте Google. Не могли бы вы написать пример того, как написать это условие if? Я предполагаю, что мне нужно вставить адреса электронной почты в переменную, скажем, «AllEmails», и иметь это условие для повторной отправки электронного письма с напоминанием.
@RZM Я настоятельно рекомендую вам заполнить как минимум бесплатный вводный урок JavaScript. Вы правы — вы можете хранить электронные письма в множество, петля через массив и использовать операторы если для проверки.
Мне удалось сделать это с помощью двух электронных таблиц, одна из которых включает электронную почту всех участников, а другая - для участников, которые участвовали (извлечено из автоматической электронной таблицы, созданной формой Google, когда кто-то отправляет ответ)
Функция отправки напоминания по электронной почте выглядит следующим образом. Он может запускаться автоматически с помощью триггеров Google, встроенных в скрипты Google. Вот код функции, которую я написал.
function sendRemEmail()
// Load all the emails from the spreadsheet including all emails in the first column
{
var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/...').getActiveSheet();
var All_lr = ss.getLastRow();
var Alladdresses = [];
for (var i = 2; i<=All_lr;i++){
var emailAddress = ss.getRange(i,1).getValue();
Alladdresses.push(emailAddress);
}
// Load emails from the spreadsheet linked to the questionnaire
var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/...').getActiveSheet();
var sub_lr = ss.getLastRow();
var All_submitted_emails = [];
for (var i = 2; i<=sub_lr;i++){
var emailAddress = ss.getRange(i,2).getValue();
All_submitted_emails.push(emailAddress)
}
var rem_email_list = [];
for (var i = 0; i<=All_lr-1;i++){
if (All_submitted_emails.indexOf(Alladdresses[i])===-1){
rem_email_list.push(Alladdresses[i]);
}
}
var rem_email_list = rem_email_list.filter(function (el) {
return el != null;
});
Logger.log(rem_email_list);
var htmlMessage = HtmlService.createHtmlOutputFromFile("Reminder_email.html").getContent();
var subject = "Reminder";
var message = "Hi, please be reminded to submit your response";
for (var i = 0; i<rem_email_list.length;i++){
var emailAddress = rem_email_list[i];
MailApp.sendEmail(emailAddress, subject, message, {htmlBody: htmlMessage, from:'[email protected]', name: 'X Y',replyTo:'[email protected]'});
}
}
Я использовал настроенное электронное письмо (htmlMessage
), написанное в HTML, которое находится в том же проекте.
Этот код работает нормально. Тем не менее, обратите внимание, что количество электронных писем, которые можно отправить таким образом, ограничено, и существует ограничение по времени для использования службы в один день, насколько я понял, что было довольно раздражающим.
Вы должны прочитать Как спросить и минимальный воспроизводимый пример. Следуя этим указаниям, нам будет легче помочь вам.