Як обмежити час тестування в Google Forms

Google Forms один з відомих сервісів, в якому легко створювати форми тестування, анкетування, опитування. Доступність, функціонал та інтеграція з іншими сервісами Google для багатьох зробили це рішення незамінним безкоштовним помічником в навчанні, бізнесі й громадській роботі.

В рамках використання форм дуже часто з’являється необходність обмежувати час їх заповнення чи період доступності. Базовий функціонал Google Forms поки що не володіє такими налаштуваннями. Але рішення є, і сьогодні ми розглянемо декілька варіантів.

І. Налаштування обмежень в Google Classroom при публікації завдання

В рамках цього варіанту ми розглядаємо Google Forms як інструмент, який дозволяє створювати тести і анкети для використання в дистанційному/змішанному навчанні в Google Classroom. І в Classroom є можливість налаштування планової дати публікації та дати до коли потрібно заповнити форму в рамках навчального завдання.

Отже, після створення форми переходимо в Classroom та вибираємо “Створити завдання” в потоці (якщо тестування складається з одного запитання, то можна його створити в Classroom вибравши “Створити запитання”. В даному прикладі запитань в тесті більше одного, тому використовуємо форму створену в Google Forms і прикріпимо її до завдання). Заповнюємо всі необхідні поля і звертаємо увагу на поле “Термін (дата й час)”:

Встановлення кінцевої дати виконання завдання

Тут ми встановлюємо дату та час, до коли потрібно виконати завдання. Наприклад, дата 10.12.2017 та час 17:00. Далі клікаємо на випадаючий список біля кнопки “Призначити” і вибираємо “Запланувати”.

“Призначити” публікує завдання зразу після натискання, а “Запланувати” дає можливість публікації в бажаний час

Цей функціонал нам дозволить публікувати завдання не відразу, а запланувати на якийсь конкретний час. Наприклад, вводимо дату туж саму – 10.12.2017, а час 16:45.

Запланувавши дату публікації завдання ми можемо розрахувати бажаний термін для його виконання

Таким чином ми встановили 15 хвилин на проходження тестуванння – з 16:45 до 17:00. До запланованої дати ніхто з учнів завдання не побачить. Рівно в 16:45 учні, яким призначене завдання, отримають на пошту повідомлення про необхідність виконати завдання з інформацією про запланований термін виконання. Якщо вони пройдуть тест після 17:00, то в Classroom ми побачимо статус “ВИКОНАНЕ НЕВЧАСНО”.

В “кабінеті” ми бачимо інформацію про своєчасно виконане чи прострочене завдання

Ці обмеження з запланованою датою публікації завдання та кінцевою датою його виконання не карденальні. Наприклад, вони не блокують доступ до завдання після кінцевої дати та часу виконання (після 17:00 в нашому прикладі). Але ці налаштування можуть допомогти ініціатору (викладачеві) виявити рівень самоорганізації учня – хто пройшов тестування в запланований час, а хто ні.

ІІ. Використовуємо Google скрипт для встановлення обмежень по датам доступності форми

Один добрий дядько Amit Agarwal написав багато скриптів (і не тільки), які розширюють функціональність сервісів google. Один із них Schedule google forms, дозволяє встановити ліміт часу доступності форми та обмеження по кількості відповідей.

Щоб він запрацював, нам потрібно виконати наступні дії.

При створенні форми перейти в розділ “Більше” та вибрати “Редактор сценаріїв”

В нас відкриється нове вікно в редакторі Google Apps Script куди ми можемо додавати необхідний скрипт

FORM_OPEN_DATE   =  "2017-12-31 09:00";
FORM_CLOSE_DATE  =  "2018-01-01 12:00";
RESPONSE_COUNT   =  "15";

/* Web tutorial: http://labnol.org/?p=20707  */

/* Initialize the form, setup time based triggers */
function Initialize() {
  
  deleteTriggers_();
  
  if ((FORM_OPEN_DATE !== "") && 
      ((new Date()).getTime() < parseDate_(FORM_OPEN_DATE).getTime())) { 
    closeForm();
    ScriptApp.newTrigger("openForm")
    .timeBased()
    .at(parseDate_(FORM_OPEN_DATE))
    .create();
  }
  
  if (FORM_CLOSE_DATE !== "") { 
    ScriptApp.newTrigger("closeForm")
    .timeBased()
    .at(parseDate_(FORM_CLOSE_DATE))
    .create(); 
  }
  
  if (RESPONSE_COUNT !== "") { 
    ScriptApp.newTrigger("checkLimit")
    .forForm(FormApp.getActiveForm())
    .onFormSubmit()
    .create();
  }
  
}

/* Delete all existing Script Triggers */
function deleteTriggers_() {  
  var triggers = ScriptApp.getProjectTriggers();  
  for (var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
  }
}

/* Send a mail to the form owner when the form status changes */
function informUser_(subject) {
  var formURL = FormApp.getActiveForm().getPublishedUrl();
  MailApp.sendEmail(Session.getActiveUser().getEmail(), subject, formURL);  
}

/* Allow Google Form to Accept Responses */
function openForm() {
  var form = FormApp.getActiveForm();
  form.setAcceptingResponses(true);
  informUser_("Your Google Form is now accepting responses");
}

/* Close the Google Form, Stop Accepting Reponses */
function closeForm() {  
  var form = FormApp.getActiveForm();
  form.setAcceptingResponses(false);
  deleteTriggers_();
  informUser_("Your Google Form is no longer accepting responses");
}

/* If Total # of Form Responses >= Limit, Close Form */
function checkLimit() {
  if (FormApp.getActiveForm().getResponses().length >= RESPONSE_COUNT ) {
    closeForm();
  }  
}

/* Parse the Date for creating Time-Based Triggers */
function parseDate_(d) {
  return new Date(d.substr(0,4), d.substr(5,2)-1, 
                  d.substr(8,2), d.substr(11,2), d.substr(14,2));
}

/* Written by Amit Agarwal amit@labnol.org */

Зберегти файл з скриптом

Ніяких змін в код не вносимо! крім наступних параметрів:

  • FORM_OPEN_DATE – встановлюємо дату та час (в лапках), коли форма стане доступною. В нашому випадку 2017-12-31 09:00;
  • FORM_CLOSE_DATE – можна встановити дату та час (в лапках), коли форма буде закрита для заповнення. В нашому випадку 2018-01-01 12:00;
  • RESPONSE_COUNT – цей параметр дозволяє встановити максимальну кількість респондентів які зможуть заповнити форму. Після того, як ми отримаемо 15 відповідей, доступ до неї буде закритий. Можна не використовувати цей ліміт, залишивши поле пустим (в лапках) 🙂

Зберігаємо доданий скрипт, вибравши в основному меню Файл -> Зберегти та запускаємо його

Запуск скрипта в Google Apps Script

Після запуску ми отримуємо запрос підтвердження прав на доступ, який потрібно погодити. Таким чином ми налаштували доступ до нашої форми на певний період, а також встановили максимальну кількість відповідей.

Окрім цих двох варіантів є ще можливість використовувати платні сервіси, які інтегруються з Google Forms. Наприклад, timify.me. Цей сервіс має і безкоштовний тарифний план, але про нього ми напишемо в наступній публікації.