Тестирование с помощью Форм Google. Подсчет результатов через Google Apps Script

Не откладывая в долгий ящик, специально для +Boris Yarmakhov сделал небольшой скрипт, который позволяет подсчитать результаты тестирования. Проверил в режиме инкогнито для Таблицы - скрипт работает.

И так, тестирование...


Исходные данные:
Задача:
  • Написать программу, которая будет подсчитывать результаты теста аналогично ARRAYFORMULA
  • Ограничимся итогами, без промежуточных данных
Все довольно прозаично. Дальнейшие манипуляции только с Таблицей результатов

Меню Таблицы - Инструменты - Редактор скриптов...

Необходимо создать пустой проект. В него добавить код:
function ResultsOfTests(responds, balls) {
  var balls_ = {};
  balls.forEach(function(row){
    if(!balls_.hasOwnProperty(row[0])) balls_[row[0]] = {};
    if(!balls_[row[0]].hasOwnProperty(row[1])) balls_[row[0]][row[1]] = row[2];
  });
  var responds_ = responds.slice(1);
  var result = responds_.map(function(respond){
    var ball = 0;
    responds[0].forEach(function(qw, i){
      if(balls_.hasOwnProperty(qw)){
        if(balls_[qw].hasOwnProperty(respond[i])) ball += balls_[qw][respond[i]]
      }
    });
    return ball;
  });
  return result;
}
Сохранить проект под  именем, я обычно пишу тоже что и имя Таблицы. Ничего авторизировать не надо.

Создадим новый лист "Таблица баллов". Добавим в него баллы. В одну строку, в 3 ячейки: Вопрос как в Форме, ответ как в Форме, баллов за ответ. Необходимо перечислить все варианты.

Теперь на новом листе "Результаты через скрипт", добавим две формулы:
  1. В ячейку A2 имена респондентов
    =ARRAYFORMULA('Ответы на форму'!E2:E1500)
  2. В ячейку B2 результаты тестирования
    =ResultsOfTests('Ответы на форму'!B1:D1500;'Таблица баллов'!A1:C10) 
Немного подробностей о ResultsOfTests. Первым аргументом вы должны передать весь диапазон полученных ответов, которые участвуют в подсчете баллов. Этот диапазон должен содержать только вопросы и ответы. Не надо указывать отметку времени. Не надо указывать вопросы, которые не касаются тестирования. Диапазон должен быть непрерывен. Вторым аргументом необходимо передать диапазон с баллами, чтобы программа могла определить результат. Этот диапазон должен быть конечным.

Пожалуй, это все.

Популярные сообщения