包含点(。)字符的Reference Qualtrics嵌入式数据字段

时间:2018-08-11 10:25:56

标签: javascript qualtrics

从联系人列表导入字段时,相应的嵌入式数据字段包含点(.)。例如,这是在联系人列表导入时自动创建的一种嵌入式数据的名称:

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会选择这种命名模式作为导入默认值似乎很奇怪-我在这里做错了吗?我可以使用其他语法吗?

1 个答案:

答案 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()均起作用。如果它在调查流程中定义,则将其保存到响应数据中。如果未在调查流程中定义它,则可以在当前调查响应中引用它,但不会将其保存在响应数据中。