在 Qualtrics 循环中存储音频重放计数并合并

Store audio replay count in Qualtrics loop & merge

我有一个 Loop & Merge 循环播放超过 300 个音频文件。对于每个音频文件,我想存储音频重播的次数。

Qualtrics.SurveyEngine.addOnReady(function(){
    var plays = 0;
    function audioEnded(){
        if (plays == 0) Qualtrics.SurveyEngine.addEmbeddedData( "replays${lm://CurrentLoopNumber}", plays); 
        plays++;
        Qualtrics.SurveyEngine.setEmbeddedData("replays${lm://CurrentLoopNumber}", plays);
    }
    jQuery('audio').on('ended', audioEnded); 

});

这是我的解决方案,但它似乎不起作用,因为我的嵌入式数据实际上并未存储在调查中(例如,它们未包含在调查流程中)。手动创建 300 个嵌入式数据变量似乎不可行。此外,我的 Loop & Merge 具有随机顺序,我认为嵌入式数据不会捕获此随机顺序。

我能想到的一个更好的解决方案是使用某种定界符将重播次数附加到用户的答案本身(文本答案)。不过,我也不太确定这怎么可能。

有什么建议吗?

是的,您可以将它们保存在单个分隔列表中。如果您还没有 audioId,请添加一个 audioId 作为循环和合并字段(它可以只是数字 1 到 300)。此外,您只需要在最后更新一次嵌入式数据变量。以下内容将以逗号分隔的随机顺序为每个音频保存 audioId:replays。在循环和合并块之前的调查流程中将 replaysList 初始化为空。

Qualtrics.SurveyEngine.addOnload(function(){
    var replaysArr = "${e://Field/replaysList}".split(",").filter(Boolean); 
    var plays = 0;
    jQuery('audio').on('ended', function() { plays++; });

    Qualtrics.SurveyEngine.addOnPageSubmit(function() {
        replaysArr.push("${lm://Field/1}:"+(plays-1));
        Qualtrics.SurveyEngine.setEmbeddedData("replaysList",replaysArr.join(","));
    });
});