如何通过JavaScript为Qualtrics导出数据追加自定义变量列?
Qualtrics随机抽词变量存储问题解答
现有代码功能判断
你的现有代码已经可以实现randomwords(抽中词汇)的记录,但是无法记录词库索引x,原因如下:
- 你已经调用了
Qualtrics.SurveyEngine.setEmbeddedData("randomwords", randomwords),这个方法会把抽中的5个词以逗号分隔的字符串形式写入嵌入数据 - 词库索引
x是genWords函数的局部变量,函数运行结束后就无法被外部访问,也没有对应的setEmbeddedData调用保存它的值
补充实现步骤
你只需要做两处调整即可满足需求:
1. 调整JavaScript代码
修改genWords相关逻辑,额外保存索引值:
Qualtrics.SurveyEngine.addOnload(function() { // 四个词库数组请自行填充对应词汇 var wordpool1 = [] var wordpool2 = [] var wordpool3 = [] var wordpool4 = [] // 组装词库总表,索引对应0-3 let masterwordlist = [wordpool1, wordpool2, wordpool3, wordpool4] // 生成指定区间的随机整数 function randomInteger(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } // Fisher-Yates 数组洗牌算法 function shuffle(target){ for (var i = target.length - 1; i > 0; i--){ var j = Math.floor(Math.random() * (i + 1)); var temp = target[i]; target[i] = target[j]; target[j] = temp; } return target; } // 从词库中抽取5个词 function pickWords(target) { var randomwords = shuffle(target) return randomwords.slice(0, 5); } // 顶层执行函数 let poolIndex = 0 function genWords(masterlist){ poolIndex = randomInteger(0, 3) return pickWords(masterlist[poolIndex]) } // 执行抽词逻辑 randomwords = genWords(masterwordlist) // 保存抽中词汇到嵌入数据 Qualtrics.SurveyEngine.setEmbeddedData("randomwords", randomwords); // 保存抽中的词库索引到嵌入数据 Qualtrics.SurveyEngine.setEmbeddedData("pool_index", poolIndex); });
2. 调研流中配置嵌入数据
你提到的调研流配置是必须的操作,步骤如下:
- 进入调研的「Survey Flow(调研流)」页面
- 在展示抽词任务的页面之前,添加「Embedded Data(嵌入数据)」模块
- 新增两个嵌入数据字段:
randomwords和pool_index,不需要设置默认值,直接保存即可 - 发布调研后,这两个字段会自动随Qualtrics原生导出功能输出到CSV数据中,不需要额外生成单独表格
注意事项
- 嵌入数据字段的名称必须和
setEmbeddedData方法里的第一个参数完全一致,区分大小写 - 嵌入数据模块必须放在任务页之前,否则Qualtrics不会识别该字段并写入数据集
- 导出数据时
randomwords字段的内容是5个抽中词汇用逗号分隔的字符串,后续数据清洗时按逗号拆分即可使用
内容的提问来源于stack exchange,提问作者learninglinguist
相关产品推荐
相关产品推荐

