从联系人列表导入字段时,相应的嵌入式数据字段包含点(.
)。例如,这是在联系人列表导入时自动创建的一种嵌入式数据的名称:
result.elements.0.embeddedData.V1
在我的调查中,我想访问存储在此嵌入式数据字段中的值。但是Qualtrics提供的getEmbeddedData()
javascript方法显然不喜欢点。
举一个简单的例子,我将上面的嵌入数据名称缩短为V.1
:
Qualtrics.SurveyEngine.getEmbeddedData('V.1'); // returns null
,并返回一个空值。
如果将嵌入的数据字段名称更改为V1
(否.
),则该方法将返回正确的值:
Qualtrics.SurveyEngine.getEmbeddedData('V1'); # returns correct value
在名称中有点的情况下,我尝试使用\\
和\
进行转义,例如:getEmbeddedData('V\\.1')
,但是这两种转义样式均无效-{ {1}}返回。
还有另一种使用javascript访问嵌入式数据的语法-null
方法-但是我需要能够动态设置最后一个字符(即"${e://Field/myfield}"
之后的数字),而该方法没有不允许这样做。具体来说,对于嵌入式数据V
:
V1
我有1000多个字段从此联系人列表中导入,因此我不想手动重命名每个字段以删除圆点。如果Qualtrics破坏了自己的方法之一,Qualtrics会选择这种命名模式作为导入默认值似乎很奇怪-我在这里做错了吗?我可以使用其他语法吗?
答案 0 :(得分:0)
我在Qualtrics社区回答了您的相关问题。您无法进行"${e://Field/V"+ix+"}"
,因为在将页面发送到浏览器之前,管道已在服务器上解析。
当Web服务返回json或xml时,默认情况下,Qualtrics对结构中的每个级别使用一个点。您可以通过将嵌入变量(在Web服务块的左侧)更改为不带点的名称来覆盖它。
另一种替代方法是编写自己的调用Qualtrics API的Web服务脚本,然后将结果放入平面json结构中,然后再将其返回到调查中。
根据下面的评论更新
自动重命名从Web服务调用返回的嵌入式变量-我认为这样做的唯一方法是我的替代建议-编写自己的Web服务脚本,该脚本转换从api返回的信息并重命名变量,将它们放在一个维关联数组,然后将该数组转换为json。
Qualtrics问题API-getEmbeddedData()已从文档中删除。我不知道为什么,所以不得不问Qualtrics支持。目前,它仍然有效。因此,如果需要动态地用点构造嵌入式变量名,则可以基于getEmbeddedData()创建自己的函数。使用浏览器的开发人员工具查看其功能。
我发现addEmbeddedData()在实际实践中毫无用处。无论是否在调查流中定义了嵌入式数据字段,setEmbeddedData()均起作用。如果它在调查流程中定义,则将其保存到响应数据中。如果未在调查流程中定义它,则可以在当前调查响应中引用它,但不会将其保存在响应数据中。