#google-apps-script #google-sheets #automation #google-forms
Вопрос:
здесь школьный администратор.
Мы используем Google Формы для регистрации посещаемости в нашей языковой академии.
В форме Google используется сетка флажков с именами учащихся в виде строк и следующими параметрами в виде столбцов:
- Подарок
- Отсутствует
- Поздно
- В сети
- Пропущенное Домашнее задание
Эти ответы отправляются в электронные таблицы, которые проверяются администраторами вручную.
В настоящее время у нас есть система, в соответствии с которой учителя должны устно информировать администраторов, если учащиеся отсутствуют на двух или более занятиях подряд, но многие из них не работают в центре и, возможно, забывают обновить администрацию.
Я искал сценарий, который вызовет электронное письмо на указанный адрес электронной почты, если у студента два раза подряд появляется запись «Отсутствует», но также сбрасывается, когда студент снова посещает занятия.
В качестве альтернативы имя учащегося (информация в строке 1), который отсутствует 2 раза подряд, может быть добавлено в альтернативную электронную таблицу для компиляции.
Надеюсь, кто-нибудь сможет помочь! Спасибо!
Комментарии:
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. Пожалуйста, проверьте ответ, чтобы он был выделен для других участников запроса.