参考Qualtrics嵌入数据字段包含点(。)字符

问题描述 投票:0回答:1

从“联系人列表”导入字段时,相应的嵌入数据字段包括点(.)。例如,以下是在联系人列表导入时自动创建的一个嵌入数据的名称:

result.elements.0.embeddedData.V1

在我的调查中,我想访问存储在此嵌入数据字段中的值。但是Qualtrics提供的getEmbeddedData() javascript方法显然不喜欢点。 举一个更简单的例子,我将上面的嵌入数据名缩短为V.1

Qualtrics.SurveyEngine.getEmbeddedData('V.1'); // returns null

并返回一个空值。

如果我将嵌入数据字段名称更改为V1(no .),则该方法返回正确的值:

Qualtrics.SurveyEngine.getEmbeddedData('V1'); # returns correct value

在名称中有一个点的情况下,我尝试使用\\\进行转义,例如:getEmbeddedData('V\\.1'),但这两种转义样式都不起作用 - 返回null

还有另一种使用javascript访问嵌入数据的语法 - "${e://Field/myfield}"方法 - 但我需要能够动态设置最后一个字符(即V之后的数字),并且此方法不允许这样做。具体来说,对于嵌入式数据V1

var ix = 1;
Qualtrics.SurveyEngine.getEmbeddedData('V'+ix); <-- this works
"${e://Field/V"+ix+"}"; <-- this doesn't work

我有超过1000个字段从此联系人列表导入,因此我不想手动重命名每个字段以删除点。看起来奇怪的是Qualtrics会选择这个命名模式作为导入默认值,如果它破坏了自己的方法之一 - 我在这里做错了吗?我可以使用替代语法吗?

javascript qualtrics
1个回答
0
投票

我在Qualtrics社区回答了你的相关问题。您不能执行"${e://Field/V"+ix+"}",因为在将页面发送到浏览器之前在服务器上解析了管道。

当Web服务返回json或xml时,默认情况下Qualtrics对结构中的每个级别使用一个点。您可以通过将嵌入变量(在Web服务块的左侧)更改为不带点的名称来覆盖它。

另一种方法是编写自己的Web服务脚本来调用Qualtrics API,然后将结果放入一个扁平的json结构中,然后再将它们返回到您的调查中。

根据以下评论进行更新

自动重命名从Web服务调用返回的嵌入变量 - 我认为唯一的方法是我的替代建议 - 编写自己的Web服务脚本,转换从api返回的信息并重命名变量,将它们放在一维关联数组中,然后将该数组转换为json。

Qualtrics Question API - getEmbeddedData()已从文档中删除。我不知道为什么,并且不得不问Qualtrics Support。目前,它仍然有效。因此,如果需要动态构造带点的嵌入变量名,可以基于getEmbeddedData()创建自己的函数。使用浏览器的开发人员工具查看它的功能。

我发现addEmbeddedData()在实际操作中没用。无论是否在调查流程中定义了嵌入数据字段,setEmbeddedData()都有效。如果它在调查流程中定义,则会将其保存到响应数据中。如果未在调查流程中定义,则可以在整个当前调查响应中引用它,但不会将其保存在响应数据中。

© www.soinside.com 2019 - 2024. All rights reserved.