我正在设计Qualtrics中的一项调查,该调查有大约200个项目。
每个项目每页显示一个问题。
我希望问题在单击答复时自动前进。

我可以看到如何使用代码here一次完成一个问题:

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


the help files here中描述的方法。基本上,您的想法是单击javascript按钮以提问并粘贴代码。

但是,此过程重复200次会很繁琐,而且如果我想调整javascript,我将不得不再次重复200次。

有没有一种方法可以将Java脚本应用于Qualtrics中的一组问题?

最佳答案

一种选择是导出测量,编辑导出文件,然后将测量重新导入Qualtrics。此方法在Qualtrics支持中没有得到很好的记录,但确实有效。 This help file解释了如何将Qualtrics调查导出和导入为QSF文件(即Qualtrics Survey Formatting文件)。

因此,主要的挑战是弄清楚如何编辑QSF以便将相关的Java脚本添加200次。

QSF文件为JSON格式。在此之前,我听说过,但从未使用过JSON格式。也许这是Qualtrics用户的典型情况。

默认情况下,QSF文件为串行格式(即,它在一行上)。我发现this online editor对格式化和解析QSF文件的层次结构很有帮助。
javascript - 如何将Qualtrics中的javascript应用于一组项目?-LMLPHP

通常,QSF文件的结构以具有常规调查规范的SurveyEntry开头。然后,它有一堆SurveyElements。在我的示例中,前六个元素与调查的一般特征有关。特别是,第一个元素代表方框,并在方框中列出问题的顺序。前六个问题之后。每个问题都包含一系列ID类型变量,后跟PayloadPayload包括控制问题特征的核心属性值对。

特别是,问题的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});",


这个想法可以扩展到您想在一组问题中添加特定属性的其他场合。

10-05 21:07