Как настроить отправку писем с автоматическим напоминанием, связанных с вопросником в Google Forms? - PullRequest
0 голосов
/ 13 мая 2019

Я заполнил анкету с помощью Google Forms.У меня есть набор электронных писем (например, responsedent1@example.com, responsedent2@example.com, ...) в качестве целей для отправки анкеты.Я получаю адрес электронной почты респондентов, если они отправляют свои ответы.Ответы могут быть сохранены в электронной таблице Google.Я хотел бы отправлять напоминания по электронной почте только тем, кто не отвечает до того дня, как они получили свое письмо.

Я использую следующий код в script.google.com, который может отправить письмо и работает.с настроенным триггером в G Suit Developer Hub.Но он просто отправляет напоминание по электронной почте на все письма, перечисленные в следующем коде.Как мне добавить к нему условие, удовлетворяющее тому, что я описал?

function sendFormEmail() {
var emailAddress = "respondent1@example.com, respondent2@example.com";
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
});
}

1 Ответ

0 голосов
/ 18 мая 2019

Мне удалось сделать это с помощью двух электронных таблиц, одна из которых включала электронную почту всех участников, а другая - участников, которые участвовали (извлечено из автоматической таблицы, созданной формой 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:'rzm@example.com', name: 'X Y',replyTo:'rzm@example.com'});
  }
}

Я использовал настроенное письмо (htmlMessage), написанное на HTML, которое находится в том же проекте.

...