Есть ли способ отправить автоматическое электронное письмо из двух последовательных одинаковых записей формы Google в Google таблицах?

#google-apps-script #google-sheets #automation #google-forms

Вопрос:

здесь школьный администратор.

Мы используем Google Формы для регистрации посещаемости в нашей языковой академии.

В форме Google используется сетка флажков с именами учащихся в виде строк и следующими параметрами в виде столбцов:

  • Подарок
  • Отсутствует
  • Поздно
  • В сети
  • Пропущенное Домашнее задание

Эти ответы отправляются в электронные таблицы, которые проверяются администраторами вручную.

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

Я искал сценарий, который вызовет электронное письмо на указанный адрес электронной почты, если у студента два раза подряд появляется запись «Отсутствует», но также сбрасывается, когда студент снова посещает занятия.

В качестве альтернативы имя учащегося (информация в строке 1), который отсутствует 2 раза подряд, может быть добавлено в альтернативную электронную таблицу для компиляции.

Надеюсь, кто-нибудь сможет помочь! Спасибо!

В этом примере София Вергара (я бы хотел!) отсутствовала три раза подряд, поэтому электронное письмо должно быть отправлено после второго отсутствия. Затем сбросьте после того, как она посещает четвертый класс (E5). Затем Хуан Лопес отсутствует на двух занятиях подряд и должен быть добавлен в список отсутствующих

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

1. Я думаю, что можно использовать триггер formSubmit для самой быстрой реакции или любой триггер, основанный на времени, если одного раза в день достаточно.

Ответ №1:

Запустите один раз myTriggerSetup

 const adresseEmail = 'xxxxxxxxxxx@gmail.com'  function myTriggerSetup() {  if(!isTrigger('onFormSubmit')) {  ScriptApp.newTrigger('onFormSubmit')  .forSpreadsheet(SpreadsheetApp.getActive())  .onFormSubmit()  .create();  } } function isTrigger(funcName) {  var r=false;  if(funcName) {  var allTriggers=ScriptApp.getProjectTriggers();  var allHandlers=[];  for(var i=0;ilt;allTriggers.length;i  ) {  allHandlers.push(allTriggers[i].getHandlerFunction());  }  if(allHandlers.indexOf(funcName)gt;-1) {  r=true;  }  }  return r; }  function onFormSubmit(e) {  var sheet = SpreadsheetApp.getActiveSheet();  var row = sheet.getActiveRange().getRow();  var column = e.values.length   1;  for (var i=2;ilt;=column;i  ){  if (sheet.getRange(row,i).getValue()=='Absent' amp;amp; sheet.getRange(row-1,i).getValue()=='Absent'){  MailApp.sendEmail({  to: adresseEmail,  subject: 'Consecutive absences '   sheet.getName(),  htmlBody: sheet.getRange(1,i).getValue(),   });  }  } }  

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

1. Это потрясающе, спасибо!!! Я возился с кодом уже час, но есть ли способ добавить название листа к теме? Например, «Последовательные отсутствия в «Названии листа»? Это сэкономит нашему административному персоналу много времени! Еще раз большое тебе спасибо, Майк!

2. Да, под этим подразумевается subject: 'Consecutive absences ' sheet.getName(), , что я обновил свой ответ.

3. Большое тебе спасибо, Майк!

4. Пожалуйста, проверьте ответ, чтобы он был выделен для других участников запроса.