Современность выдвигает свои требования к организации обучения.
Рассмотрим такой момент, как поступление первоклассника в школу.
Первое, что делают родители – приходят в школу и пишут заявление на прием. С учетом того, насколько развит сейчас Интернет, и того, что родители первоклассников сейчас – молодые люди, хорошо знакомые и владеющие компьютером, эту процедуру вполне можно упростить с помощью записи через Интернет.
В столице, – Москве, – это уже реализовано. Запись осуществляется через портал государственных услуг и функций города Москвы, что подразумевает, что родители регистрируются сначала на нем (причем процедура регистрации довольно серьезная), и только потом могут записать своего ребенка в школу, прикрепив при этом все требуемые документы.
В данной статье речь не пойдет о такой серьезной системе, как портал гос услуг. Но для своей школы я вопрос решил гораздо меньшими средствами (но, соответственно, и с куда меньшими возможностями).
Постановка задачи.
Создать форму на сайте школы для отправки заявки на поступление в первый класс. Именно заявки, а не заявления. Отличие будет понятно дальше. Заполненные данные должны где-то храниться. Родители должны получить уведомление, что их заявка получена. Каждой заявке должен присваиваться табельный номер. Время подачи заявки должно фиксироваться.
Выбор средств.
Корпорация Google уже давно внедрила такой продукт, как Google Docs, который сейчас неразрывно связан с Google Drive. Если очень-очень кратко, то Google Диск – облачное хранилище файлов, а Google Docs – онлайн редакторы текстов, презентаций, электронных таблиц и форм. Два последних и будут нас интересовать.
Реализация.
Google Forms – сервис, позволяющий создать форму для заполнения. Каждый ответ заносится в электронную таблицу, привязанную к форме. С помощью этого сервиса легко создать форму, отвечающую нашим критериям. Вопрос только в том, как же родители будут получать подтверждение и табельный номер.
Не так давно появился еще один продукт – Google Scripts – скрипты, работающие в пределах Google Docs. Именно с их помощью мы и заставим отправляться письма.
Первое, что нужно сделать – это завести гугл аккаунт. Я сделал отдельный аккаунт от имени школы, поскольку именно с него будут отправляться письма, и будет весьма нехорошо, если это будет чей-нибудь личный адрес. Если такой аккаунт уже есть – вообще замечательно. Процедуру регистрации в гугл не привожу, там все стандартно.
После регистрации надо зайти в Google Диск.
Для удобства можно создать папку, в которой будут храниться документы
Внутри данной папки надо создать форму.
Что конкретно будет в форме – личное дело каждой школы. Для себя я решил, что это будет минимальный набор сведений об ученике, позволяющий:
- Однозначно идентифицировать “абитуриента”;
- Иметь данные для связи с ним;
- Убедиться, что территориально потенциальный ученик относится к нашей школе;
- Выбрать программу обучения.
Поэтому у меня получилась вот такая форма:
Отличие от заявления очевидно.
Теперь самое интересное. Все ответы записываются в электронную таблицу Google Spreadsheets. Изначально, она выглядит так:
Видно, что есть отличие в одном столбце – автоматически добавлена “Отметка времени”. Замечательно, меня это устраивает.
Но нам необходим еще столбец – порядковый номер заявки. Я добавил его первым. Помимо этого, необходим еще один служебный столбец – отметка о том, что данной заявке отправлено электронное письмо. Я добавил его последним.
Таким образом, получаем следующую таблицу:
При добавлении новых столбцов форма все равно корректно работает.
Осталось реализовать последний момент – отправку писем и заполнение столбца с порядковым номером.
Для этого нужно написать собственный скрипт (Инструменты – Редактор скриптов).
Создадим пустой скрипт. Вместо текста по-умолчанию нужно написать следующее:
var EMAIL_SENT = "EMAIL_SENT"; //Текст для отметки записи как отправленной function SendEmail() { var sheet = SpreadsheetApp.getActiveSheet(); // var startRow=2; // Номер строки, с которой начинаются данные. 2 - поскольку в первой строке заголовки var emailRow=8; // Номер ряда с электронной почтой var dataRange = sheet.getRange(startRow, 1, sheet.getLastRow(), sheet.getLastColumn()); //Задаем диапазон //данных: со второй строки, до последней, с первого столбца и до последнего var data = dataRange.getValues(); //в переменную data заносим все значения с листа for (var j = 0; j < data.length-1; ++j) { sheet.getRange(startRow + j, 1).setValue(j+1); //Заполняем первый столбец - с порядковыми номерами записей SpreadsheetApp.flush(); } for (var i = 0; i < data.length-1; ++i) { var row = data[i]; var emailAddress = row[emailRow]; //Задаем адрес почты var emailSent = row[9]; // Колонка с отметкой об отправке if (emailSent != "EMAIL_SENT") { // если письмо еще не отправлено var subject = "Запись в первый класс МАОУ СОШ №153"; // тема письма //формируем текст сообщения var message = "Поздравляем! Ваша заявка в МАОУ СОШ №153 успешно принята. Дата и время подачи заявки: " + row[1] + ". Указанные Вами данные: " + " ФИО ребенка: " + row[2] + ". Адрес проживания: " + row[4]+ ". Телефон для связи: " + row[5] + ". Выбранная программа обучения: " + row[6] +". Заполнитель анкеты: "+ row[7] + ". Ваш порядковый номер " + row[0] + ". Запомните его, он понадобится при заполнении письменного заявления в школе. Пожалуйста, не отвечайте на это сообщение."; MailApp.sendEmail(emailAddress, subject, message); //отправка сообщения sheet.getRange(startRow + i, 10).setValue(EMAIL_SENT); // Записываем в последний столбец, что письмо отправлено // Make sure the cell is updated right away in case the script is interrupted SpreadsheetApp.flush(); } } }
По каждой строке я постарался написать подробный комментарий.
При первом запуске скрипта он запросит разрешение на изменение электронной таблицы и отправку писем от вашего имени.
Последний момент – это заставить скрипт выполняться каждый раз, как кто-то заполнил форму.
Для этого в редакторе скриптов необходимо зайти в Ресурсы – Триггеры текущего проекта.
Добавить следующий триггер:
Собственно говоря, все. В итоге, мы имеем форму подачи заявок в первый класс с присваиванием заявке порядкового (а в дальнейшем – табельного) номера с отправкой уведомления заполнителю на электронную почту.
Конечно, есть тут и недостатки – некорректные заявки тоже обрабатываются, как и повторные, из-за чего нумерация может быть неверной. Поскольку запись идет целых 5 месяцев, вероятность таких записей очень велика. Тут я вижу два выхода из ситуации: отправлять подтверждения после окончания приема заявок, после ручной корректировки таблицы, либо подтверждение отправлять сразу, а порядковый номер – после окончания приема, но оба выхода пойдут вразрез с организацией приема в школу – родители не будут ждать окончания времени подачи заявок чтобы идти в школу и писать заявление. Частично проблему можно решить проверкой корректности введенных данных и поиском дубликатов. Но это запишем в перспективы на следующий год.
Еще одна перспектива – формирование заявления, которое останется только распечатать и поставить дату и роспись родителям.
Литература:
Tutorial: Sending emails from a Spreadsheet
https://developers.google.com/apps-script/articles/sending_emails