суббота, 14 октября 2017 г.

"Сложные" тесты в google формах.

Google формы - бесплатный инструмент для создания онлайн-опросников с возможностью просмотра ответов респондента в таблицах.

"Хорошо" когда наших респондентов мало и можно достаточно быстро обработать результаты. Но иногда приходиться иметь дело с опросниками (тестами) в которых результат зависит от выбранного варианта, например: ответ А - 4 балла, B - 3, С - 2 и, наконец D - 1. А если вопросов - 80, и соответственно ответов столько же? А хочется чтобы ответы были обработаны моментально и интерпретация теста отослана на e-mail респонденту.




Возьмём например тест:


Тест "Ваш творческий возраст"

Каков же Ваш творческий возраст?
Отмечайте наиболее подходящие Вам варианты ответа.
1. Вы опаздываете и находитесь неподалеку от автобусной остановки. Подходит автобус. Что вы сделаете:
а) побегу, чтобы успеть;
б) буду идти как можно быстрее;
в) буду идти немного быстрее, чем обычно;
г) буду идти, как шел;
д) посмотрю, не идет ли следующий автобус, а потом решу, что делать.
2. Ваше отношение к моде:
а) признаю и действую, чтобы соответствовать ей;
б) признаю то, что мне подходит;
в) не признаю современные экстравагантные модели;
г) не признаю современную моду вообще;
д) признаю и отвергаю, смотря по настроению.
3. В свободное время вы охотнее всего:
а) проводите время с приятелями;
б) смотрите телевизор;
в) читаете художественную литературу;
г) разгадываете кроссворды:
д) занимаетесь чем угодно.
4. На ваших глазах совершается явная несправедливость. Ваши действия:
а) сразу постараюсь восстановить справедливость всеми доступными средствами;
б) встану на сторону пострадавшего и постараюсь ему помочь;
в) постараюсь восстановить справедливость в рамках закона;
г) а что можно сделать? Осудить про себя очередную несправедливость и продолжить свои дела;
д) вмешаюсь в обсуждение, не высказывая своего мнения.
5. Когда вы слушаете современную молодежную музыку, то:
а) приходите в восторг;
б) думаете, что и вы этим должны «переболеть»;
в) не признаете этот шум и грохот;
г) считаете, что на вкус и цвет товарищей нет.
6. Вы находитесь в дружеской компании. Для вас важно:
а) возможность продемонстрировать свои способности;
б) сделать так, чтобы люди не забывали, с кем имели дело;
в) соблюсти приличия;
д) вести себя в соответствии с нормами этой компании.
7. Какая работа вам нравится:
а) содержащая элементы неожиданности и риска;
б) разная, но не монотонная;
в) такая, где можно использовать свой опыт и знания;
г) нетрудная;
д) смотря по настроению.
8. Насколько вы предусмотрительны:
а) склонен приниматься за дела, не раздумывая;
б) предпочитаю сначала действовать, а уже потом рассуждать;
в) предпочитаю не участвовать в делах, пока не выяснены хотя бы основные их последствия;
г) предпочитаю участвовать только в таких делах, где успех гарантирован;
д) отношусь к делам в зависимости от ситуации.
9. Доверчивы ли вы:
а) доверяю некоторым людям;
б) доверяю многим людям;
в) не доверяю многим;
г) не доверяю никому;
д) все зависит от того, с кем я имею дело.
10. Ваше настроение:
а) преобладает оптимистическое;
б) часто оптимистическое;
в) часто пессимистическое;
г) преобладает пессимистическое;
д) в зависимости от обстоятельств.

Взят он отсюда.

Интерпретация результатов следующая - 
Подсчитайте отдельно количество положительных ответов по каждой позиции от «б» до «д». Затем найдите общую сумму по формуле:
Т = 2(б+3в+4г+2д) Полученная цифра — ваш творческий возраст.

Создадим такую форму. И сразу натолкнёмся на невозможность интерпретировать результаты автоматически средствами google форм:
  1. Мы можем указать для каждого вопроса правильный вариант, количество баллов за правильный ответ, но никак не получится задать количество баллов за каждый ответ.
  2. Привязав форму к таблице, мы можем посмотреть какой же ответ был дан респондентом, но их ещё придётся пересчитывать в баллы.
  3. Респонденту, если он пожелает, будут отправлены его ответы, но без расшифровки и без результатов.  

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

function recountSend() {

  var ss=SpreadsheetApp.getActiveSpreadsheet();

  var ssAnswers=ss.getSheetByName("Ответы на форму (1)")//Обычно лист с ответами имеет такое название

  var lastAnswer=ssAnswers.getLastRow();

  var answerRangeValues=ssAnswers.getRange(lastAnswer, 1, 1, 13).getValues();

  

  //производим замену ответов респондента на баллы

  for (var i=3;i<answerRangeValues[0].length;i++){

    var bal=10;

    switch (answerRangeValues[0][i].split(')')[0]){

      case 'а':bal=0;break;

      case 'б':bal=1;break;

      case 'в':bal=3;break;

      case 'г':bal=4;break;

      case 'д':bal=2;break;

    }

    if (bal<10){

      answerRangeValues[0][i]=bal;

    }

  }

  ssAnswers.getRange(lastAnswer,1,1,13).setValues(answerRangeValues);



  // в соответствии с тестом определяем возраст

  var age=0

  for (var i=3;i<answerRangeValues[0].length;i++){

    age=age+answerRangeValues[0][i];

  }

  age=age*2;

  

 //отправляем письмо

  MailApp.sendEmail(answerRangeValues[0][1],

                   "Результаты теста Ваш творческий возраст",

                   "В соответствии с тестом Ваш творческий возраст - "+age+"\n Если количество баллов совпадает с вашим возрастом, то все в порядке. "+ 

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

                    "А если после тридцати лет он отстанет, то это будет значить, что вы в хорошей форме, свободны от стереотипов и ваши возможности далеко не исчерпаны. "+

                    "Когда ваш творческий возраст идет немного впереди — тоже неплохо: значит, вы успешно справитесь со стандартными действиями, требующими четкости и пунктуальности."

 );
}
На данную функцию вручную устанавливаем триггер на отправку формы, и получаем работающую в полном объёме форму со "сложным" тестом. 
И да, за содержание теста я ответственности не несу: выбрав на все вопросы в качестве ответа вариант а) может получиться что Вам 0 лет. :)

6 комментариев:

  1. Роман, спасибо за скрипт! Смог запустить для своей формы

    ОтветитьУдалить
  2. Рахмет!! Работает!!
    Есть вопрос. У меня опрос для школьников. При выборе класса (номер класса например 9а или 9б итд) переходит на другой раздел формы, где есть раскрывающиеся список ФИО учеников выбранного класса. Соответственно при записи результата на excel таблицу создается два столбца по названию ФИО.
    Теперь вопрос, как можно сделать что бы список ФИО учеников записались в одну столбец?

    ОтветитьУдалить
  3. Роман, добрый день!

    Очень нужна ваша помощь (за деньги).

    Нужно собрать такую гугл-форму как вы описываете выше.

    Пожалуйста, напишите мне в телеграм @anfinogenova

    Заранее спасибо!

    ОтветитьУдалить
  4. Роман, добрый день!
    Присоединяюсь к запросу выше. Оказываете помощь? Нужен скрипт к форме по описанному вами алгоритму замена ответов на баллы. За денежку.Телега @SergeyRaznitsyn, https://t.me/SergeyRaznitsyn

    ОтветитьУдалить