Как настроить отправку автоматических писем-напоминаний, связанных с анкетой в Google Forms?

Я сделал анкету с помощью 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
});
}

Вы должны прочитать Как спросить и минимальный воспроизводимый пример. Следуя этим указаниям, нам будет легче помочь вам.

Cooper 13.05.2019 19:33

Электронная таблица состоит из 20 столбцов, и данные вставляются в каждую строку после ответа участника. первый столбец - метка времени, например. 13.05.2019 14:44:55, а второй столбец — адрес электронной почты. Я хочу, чтобы было отправлено только одно напоминание. Анкета также должна быть разослана всем участникам через неделю.

Remy 13.05.2019 22:50

Сравните свой набор писем с данными ответов. Если участник ответил, не отправляйте письмо.

Diego 14.05.2019 05:04

@Diego Точно, это то, что я думал сделать, но я совершенно новичок в этом скрипте Google. Не могли бы вы написать пример того, как написать это условие if? Я предполагаю, что мне нужно вставить адреса электронной почты в переменную, скажем, «AllEmails», и иметь это условие для повторной отправки электронного письма с напоминанием.

Remy 15.05.2019 00:04

@RZM Я настоятельно рекомендую вам заполнить как минимум бесплатный вводный урок JavaScript. Вы правы — вы можете хранить электронные письма в множество, петля через массив и использовать операторы если для проверки.

Diego 15.05.2019 02:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
1 646
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне удалось сделать это с помощью двух электронных таблиц, одна из которых включает электронную почту всех участников, а другая - для участников, которые участвовали (извлечено из автоматической электронной таблицы, созданной формой 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, которое находится в том же проекте.

Этот код работает нормально. Тем не менее, обратите внимание, что количество электронных писем, которые можно отправить таким образом, ограничено, и существует ограничение по времени для использования службы в один день, насколько я понял, что было довольно раздражающим.

Remy 01.08.2019 12:08

Другие вопросы по теме