从“联系人列表”导入字段时,相应的嵌入数据字段包括点(.
)。例如,以下是在联系人列表导入时自动创建的一个嵌入数据的名称:
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会选择这个命名模式作为导入默认值,如果它破坏了自己的方法之一 - 我在这里做错了吗?我可以使用替代语法吗?
我在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()都有效。如果它在调查流程中定义,则会将其保存到响应数据中。如果未在调查流程中定义,则可以在整个当前调查响应中引用它,但不会将其保存在响应数据中。