Как применить javascript в Qualtrics к набору предметов?

Я разрабатываю опрос в Qualtrics, который содержит около 200 пунктов. Каждый пункт представлен одним вопросом на странице. Я хочу, чтобы вопросы автоматически продвигались вперед, когда они нажимают на ответ.

Я вижу, как вы можете задать этот вопрос по одному, используя код здесь:

Qualtrics.SurveyEngine.addOnload(function()
{
    var that = this;
    this.questionclick = function(event,element){
        if (element.type == 'radio')  {
            that.clickNextButton();
        }
    }
});

и метод описан в файлах справки здесь . По сути, идея состоит в том, что вы нажимаете кнопку javascript для вопроса и вставляете код.

Однако повторять этот процесс 200 раз было бы утомительно, а если бы я захотел настроить javascript, мне снова пришлось бы повторять процесс 200 раз.

Есть ли способ применить скрипт Java к набору вопросов в Qualtrics?


person Jeromy Anglim    schedule 12.06.2017    source источник


Ответы (3)


Один из вариантов — экспортировать опрос, отредактировать файл экспорта и повторно импортировать опрос в Qualtrics. Этот метод плохо документирован в поддержке Qualtrics, но он работает. Это файл справки объясняет, как экспортировать и импортировать опрос Qualtrics в виде файла QSF (т. е. файла форматирования опроса Qualtrics).

Таким образом, основная задача состоит в том, чтобы решить, как отредактировать QSF, чтобы добавить соответствующий java-скрипт 200 раз.

Файл QSF имеет формат JSON. До этого я слышал о формате JSON, но никогда не использовал его. Возможно, это характерно для пользователей Qualtrics.

По умолчанию файл QSF находится в последовательной форме (т. е. в одной строке). Я нашел этот онлайн-редактор полезным для форматирования и анализа иерархической структуры файлов QSF. json qsf файлы qualtrics

Как правило, структура файлов QSF начинается с SurveyEntry, который содержит общие характеристики съемки. Затем у него есть куча SurveyElements. Первые шесть элементов в моем примере относятся к общим характеристикам опроса. В частности, первые элементы представляли блоки и задавали порядок вопросов в блоке. После первых шести были вопросы. Каждый вопрос включает в себя ряд переменных типа ID, за которыми следует Payload. Payload включает в себя основные пары атрибут-значение, которые контролируют характеристики вопроса.

В частности, javascript для вопроса хранится в переменной QuestionJS. Я не думаю, что порядок атрибутов в полезной нагрузке имеет значение, но я не совсем уверен.

Итак, задача состоит в том, чтобы просто добавить подобный код внутри атрибута Payload каждого вопроса.

"QuestionJS":"Qualtrics.SurveyEngine.addOnload(function()\n{\n    var that = this;\n    this.questionclick = function(event,element){\n        if (element.type == 'radio')  {\n            that.clickNextButton();\n        }\n    }\n\n\n});",

Предположительно, есть лучшие способы редактирования json-скриптов, которые лучше используют структуру данных, но должна быть возможность выполнить простой поиск и замену. Например, если все ваши вопросы имеют тип множественного выбора, вы можете сделать что-то вроде

Находить:

 "QuestionType":"MC",

Заменять

 "QuestionType":"MC","QuestionJS":"Qualtrics.SurveyEngine.addOnload(function()\n{\n    var that = this;\n    this.questionclick = function(event,element){\n        if (element.type == 'radio')  {\n            that.clickNextButton();\n        }\n    }\n\n\n});",  

Эту идею можно распространить на другие случаи, когда вы хотите добавить определенный атрибут к набору вопросов.

person Jeromy Anglim    schedule 12.06.2017

Гораздо проще было бы поместить JavaScript в верхний или нижний колонтитул (Look & Feel/Advanced), тогда он будет применяться к каждой странице опроса.

<script type="text/javascript">
Qualtrics.SurveyEngine.addOnload(function() {
     // script logic goes here
});
</script>
person T. Gibbons    schedule 12.06.2017
comment
Спасибо. Ваш подход был бы отличным. Однако я попробовал этот подход, и он не сработал. То есть я попытался вставить код, как показано в моем вопросе (например, var that = this и т. д.), в заголовок. Думаете, его нужно адаптировать для работы в шапке? То есть работать общим сценарием по вопросам? - person Jeromy Anglim; 13.06.2017
comment
Используя некоторые другие сценарии, я могу заставить заголовок работать, но только для первого вопроса в соответствии с этой проблемой: stackoverflow.com/questions/31754742/ - person Jeromy Anglim; 13.06.2017
comment
Вам нужно будет настроить свой сценарий, потому что «это» больше не является вопросом (т. е. this.questionId). Вам нужно, чтобы скрипт нашел вопрос. Что касается другой проблемы, в разделе «Внешний вид» установите для перехода страницы значение «Нет». Кроме того, рекомендуется размещать JavaScript в нижнем колонтитуле. - person T. Gibbons; 13.06.2017

Один из подходов заключается в использовании «Loop & Merge».

Вы создаете блок с одним элементом шаблона, который отражает формат, который вы хотите для своего вопроса. Включите java-скрипт, который вы хотите, в вопрос и любые другие функции, которые вы хотите.

Затем включите цикл, объедините и вставьте текст для каждого из вопросов в поле 1. Например, вот как это выглядит.

примеры циклов и объединений

Затем вы можете вставить этот текст в шаблон вопроса:

шаблон вопроса qualtrics

Дополнительная информация о loop & слияние на сайте поддержки qualtrics

А если вам нужно рандомизировать и записать порядок, подробнее здесь.

person Jeromy Anglim    schedule 15.06.2019