CheckMarket 提供了一种强大的脚本语言来增强您的调查和报告,称为 CheckMarket 脚本语言 或简称CSL 。
在最基本的层面上,它易于im体育官app使用。您可以im体育官app使用它通过从下拉列表中选择变量来将变量放置在您的调查和报告中。
在最先进的情况下,im体育的脚本语言为您提供了极大的自由,可以im体育官app使用复杂的逻辑进行计算、显示或隐藏某些文本或图像块等等。
本文针对不同情况提供了一些现成的 CSL 代码片段。每个片段都可以立即im体育官app使用,或者您可以根据自己的具体情况进一步定制。
调查 CSL 示例
你可以用 CSL 来指代一个男人,用“他”、“他”、“他的”等,用“她”、“她”、“她的”等指代一个女人。
例如,这对于员工需要评价其同事的 360° 调查非常有用。这样您就可以用正确的代词称呼那位同事。
在此示例中,代词由问题定义,但也可以由与联系人一起上传的性别定义。还提供了该代码。
您将此代码直接放在需要代词的问题或答案选项中。
“他”或“她”取决于标签为“questiongender”的问题中的选择。第一个答案选项是“man”,因此im体育im体育官app使用“orderNumber 1”来检查它。
{{#if (eq respondent.questions.questiongender.orderNumber 1)}}He{{else}}She{{/if}}
“他的”或“她的”取决于标签为“questiongender”的问题中的选择。
{{#if (eq respondent.questions.questiongender.orderNumber 1)}}his{{else}}her{{/if}}
当基于联系人性别时,这是要im体育官app使用的代码:
他她
{{#if contact.gender.isMale}}He{{else}}She{{/if}}
他的她
{{#if contact.gender.isMale}}his{{else}}her{{/if}}
您可以im体育官app使用 CSL 创建测验。im体育官方注册最终分数并根据该分数显示不同的文本。
您还可以提供所提供答案的概述以及一些附加信息
- 首先创建问题,并为每个问题分配标签。
在 Live 示例中,im体育添加了 3 个测验问题:- 你多久吃一次水果? (标签:“水果消费”)
- 你多久锻炼一次? (标签:“运动”)
- 你抽烟吗? (标签:“吸烟”)
- 决定哪个答案产生哪个分数。
- 创建结果问题以记录该分数。为受访者隐藏这些问题。
在im体育的示例中,结果问题设置如下:- 对于水果,回答“每天”会得到绿色分数。 “每周多次”和“每周一次”都会产生橙色分数。而“每周少于一次”会导致红色分数。
- 对于锻炼,“每天”和“每周多次”的答案都会产生绿色分数。 “每周一次”会导致橙色分数。而“每周少于一次”会导致红色分数。
- 对于吸烟问题:“是”是红色分数,“否”是绿色分数。
现在是时候为每个可能的答案选项登记分数了。
对于每个分数im体育官方注册问题,转到Prefill选项卡并选择Fixed Text 。然后在该文本框中添加您的 CSL 代码,以im体育官方注册受访者对每个主题的评分是绿色、橙色还是红色。该分数随后可用于报告中。
水果消费
{{#if (eq respondent.questions.fruitconsumption.orderNumber 1)}}1 {{! if the respondent selects the first answer option then we tick the first answer option in this result question, which stands for "green"}} {{else if (or (eq respondent.questions.fruitconsumption.orderNumber 2)(eq respondent.questions.fruitconsumption.orderNumber 3))}}2 {{! if the respondent selects the 2nd or 3rd answer option then we tick the second answer option in this result question, which is the "orange" result}} {{else}}3 {{! all other cases get "red" as result}} {{/if}}
练习
{{#if {{! if the respondents selects the first or second answer option then he gets "green" as a result}} (or (eq respondent.questions.exercise.orderNumber 1)(eq respondent.questions.exercise.orderNumber 2))}}1 {{!if he selects the 3rd option he gets "orange" as a result}} {{else if (eq respondent.questions.exercise.orderNumber 3)}}2 {{! all other cases are "red"}} {{else}}3{{/if}}
抽烟
{{#if (eq respondent.questions.smoking.orderNumber 1)}}1{{else}}2{{/if}}
然后,当然,受访者会根据他们的分数获得不同的结果文本。
在这种情况下,将代码放在文本/媒体问题中。
水果消费
{{#if (eq respondent.questions.fruitconsumption.orderNumber 1)}} You eat fruit every day and that's great! Keep up the good work. Try and eat up to 3 pieces of fruit every day. {{else if (or (eq respondent.questions.fruitconsumption.orderNumber 2)(eq respondent.questions.fruitconsumption.orderNumber 3))}} You eat fruit every week, which is already good. Can you try to step it up a notch and see if you can incorporate fruit into your daily meals? {{else}} You do not eat enough fruit. Try and eat at least one piece of fruit every day. Add it to a yogurt bowl or make a (green) smoothie. You'll be amazed at the results.{{/if}}
练习
{{#if (or (eq respondent.questions.exercise.orderNumber 1)(eq respondent.questions.exercise.orderNumber 2))}} You exercise (almost) daily, which is great! Keep up the good work. {{else if (eq respondent.questions.exercise.orderNumber 3)}} You exercise weekly, which is good. But surely you can sneak in an extra session or 2? Even going for a walk for half an hour (or more) is better than slouching in the couch. {{else}} You don't exercise at all. Your body (and soul) deserve better than that. Start small: take a stroll through the neighborhood, or go cycling for half an hour. Do you like to dance? Turn your living room into a disco and dance, dance, dance! You'll be surprised at how good you feel afterwards. Then build up gradually until you get to at least 3 exercise sessions per week.{{/if}}
抽烟
{{#if (eq respondent.questions.smoking.orderNumber 1)}} You smoke. Quit! It's a nasty habit, and no good ever came from it. {{else}} You don't smoke Best decision of your life! It's a nasty habit, and no good ever came from it.{{/if}}
根据受访者的回答模式,您可以显示不同的图像、文本、价格……。给他们。当您想测试不同的概念并且这些概念因某些答案或社会人口统计标准而异时非常有用。
im体育官app使用图像时,只需将它们上传到媒体库并复制 HTML 代码即可。
在下面的示例中,im体育基于 2 个问题:年龄和性别,但您可以根据自己的喜好选择范围。
首先是一个简单的例子,仅基于受访者的年龄。
在这里,im体育展示了 2 张不同的图片:图片 1 展示给 45 岁以下的人,图片 2 展示给 45 岁及以上的人。
{{#if {{! this bit says if the age is the first, second or third option, then show image 1}} (or (eq respondent.questions.agequestion.orderNumber 1)(eq respondent.questions.agequestion.orderNumber 2)(eq respondent.questions.agequestion.orderNumber 3))}}[html code of image 1] {{! if not, show image 2}} {{else}}[html code of image 2]{{/if}}
但是你可以结合年龄和性别。
在这里,im体育展示了 4 种不同的图像:一种是针对 45 岁以下的女性,一种是针对 45 岁以下的男性,另一种是针对 45 岁及以上的女性,第四种是针对 45 岁及以上的男性:
{{#if {{! we check 2 things: 1: is the gender the first answer option AND is the age one of the first 3 answer options}} (and (eq respondent.questions.genderquestion.orderNumber 1)(le respondent.questions.agequestion.orderNumber 3))}}[html code of image 1] {{else if {{! again check if the age is one of the first 3 answer options, but now we need the 2nd answer option for gender, ie the women}} (and (eq respondent.questions.genderquestion.orderNumber 1)(gt respondent.questions.agequestion.orderNumber 3))}}[html code of image 2] {{else if {{! now we look for the older respondents so the age must be the 4th answer option or higher. Gender is back to "men"}} (and (eq respondent.questions.genderquestion.orderNumber 2)(le respondent.questions.agequestion.orderNumber 3))}}[html code of image 3] {{else}} {{! all other cases, meaning the women of 45 and older}} [html code of image 4]{{/if}}
当然,它也适用于常规文本:
{{#if (and (eq respondent.questions.genderquestion.orderNumber 1)(le respondent.questions.agequestion.orderNumber 3))}}young man{{else if (and (eq respondent.questions.genderquestion.orderNumber 2)(le respondent.questions.agequestion.orderNumber 3))}} young woman{{else if (and (eq respondent.questions.genderquestion.orderNumber 1)(gt respondent.questions.agequestion.orderNumber 3))}}slightly less young man{{else}}slightly less young woman{{/if}}
重要的是要考虑您希望如何提前分析和呈现您的数据。一个很好的例子是“年龄”。
假设您在联系人字段中有出生日期或年龄。如果您知道您想要根据特定年龄类别显示您的调查结果,那么通过创建一个包含您想要的年龄类别的隐藏单选按钮问题,可以更容易地提前设置。这样,您就可以轻松地根据这些年龄类别制作图表、过滤和细分结果。
在分析您的调查结果时,预先做一点工作将节省大量时间。
- 首先添加新的单选按钮问题。
- 输入您想要的年龄类别作为答案选择。
- 转到Prefill选项卡并选择Fixed text 。
- 添加以下 CSL,调整以匹配您的类别。它假定源是一个名为“年龄”的联系人字段:
数字1、2、3、4、5、6代表答案选项序号:
1 = 小于 20
2 = 20 到 29
3 = 30 到 39
4 = 40 到 49
5 = 50 到 59
6 = 60 加
'lt' 代表小于。所以它基本上是说,如果联系人字段“年龄”小于 20,则选择答案选项 1,否则……
如果您im体育官app使用其他范围,只需调整答案选项和代码以匹配。来源也可以是问题而不是联系人字段,例如带有整数验证的滑块或文本框。
如果您有出生数据,则可以im体育官app使用以下代码计算年龄并将其放入临时变量中:
{{set "age" (dateDiff respondent.questions.DOB currentDate "year")}} 或 {{set "age" (dateDiff contact.dateOfBirth currentDate "year")}} {{#if (lt (get "age" ) 20)}} 1 {{else if (lt (get "age") 30)}} 2 {{else if (lt (get "age") 40)}} 3 {{else if (lt (get "age" ") 50)}} 4 {{else if (lt (get "age") 60)}} 5 {{else}} 6 {{/if}}
在分析过程中,有时您可能希望根据更大的地理区域以及受访者居住的省或州进行分析。
过去这意味着您需要同时提出这两个问题,或者手动将信息添加到原始数据中,而im体育官app使用 CSL,您可以根据受访者在之前的调查中选择的城市、州或省,在隐藏问题中捕获更大的区域问题。
更具体地说,您将im体育官app使用基本问题的分数来预填后续问题。该分数代表后续问题中答案选项的顺序。
此外,您可以im体育官app使用此隐藏问题来设置您的配额。
- 首先创建省份问题。为其分配标签。在这种特殊情况下,im体育官app使用了标签“provinceQuestion”。
- 为每个省分配一个分数“1”、“2”或“3”。每个分数代表一个地区,例如 1 = Vlaanderen,2 = Brussel 和 3 = Wallonië。
- 创建区域问题。
- 确保地区的顺序与分配的分数一致,即如果佛兰德省的分数为 1,则将 Vlaanderen 作为第一个答案选项。
- 转到Prefill选项卡并选择Fixed text 。
- 添加分数变量:
{{respondent.questions.provinceQuestion.score}}
这样,地区问题将根据省份问题中每个答案选项的分数进行预填。
得分为 1 的省份将预填区域问题中的第一个答案选项,得分为 2 的省份将预填第二个答案选项,依此类推。
尼尔森区域也经常用于市场研究。受访者不知道尼尔森区域是什么,也不知道他们住在哪个区域,所以问这个问题毫无用处。但是您可以根据他们对省份问题的回答,在隐藏问题中捕获此信息。
- 首先创建省份问题。为其分配标签。对于此示例,im体育官app使用了标签“provinceNielsen”。
- 为每个省分配 1 到 5 之间的分数。每个分数代表一个尼尔森区域。
- 创建尼尔森区域问题。
- 确保区域的顺序与分配的分数一致。
- 转到Prefill选项卡并选择Fixed text 。
- 添加分数变量:
{{respondent.questions.provinceNielsen.score}}
这样,将根据省份问题中每个答案选项的分数选择正确的尼尔森区域。
得分为 1 的省份将预填区域问题中的第一个答案选项,得分为 2 的省份将预填第二个答案选项,依此类推。
美国人口普查局认为美国有四个地区:东北部、中西部、南部和西部。如果你问人们生活在什么州,你可以在一个隐藏的问题中捕捉到这个区域。
- 首先创建状态问题。为其分配标签。在此示例中,im体育官app使用了标签usstate 。
- 为每个状态分配 1 到 4 之间的分数。每个分数代表一个区域。
例如Alabama~3将“Alabama”im体育官方注册为答案选项,并自动为其分配分数“3”。
复制以下列表以im体育官方注册美国所有州(包括哥伦比亚特区)以及假设各地区按以下顺序排列的分数:
- 东北
- 中西部
- 南
- 西方
阿拉巴马~3
阿拉斯加~4
亚利桑那~4
阿肯色州~3
加州~4
科罗拉多~4
康涅狄格~1
特拉华州~3
哥伦比亚特区~3
佛罗里达~3
格鲁吉亚~3
夏威夷~4
爱达荷~4
伊利诺伊州~2
印第安纳~2
爱荷华~2
堪萨斯~2
肯德基~3
路易斯安那~3
缅因州~1
马里兰~3
马萨诸塞州~1
密歇根~2
明尼苏达~2
密西西比~3
密苏里~2
蒙大拿~4
内布拉斯加州~2
内华达~4
新罕布什尔~1
新泽西~1
新墨西哥~4
纽约~1
北卡罗来纳州~3
北达科他州~2
俄亥俄~2
俄克拉何马~3
俄勒冈~4
宾夕法尼亚~1
罗德岛~1
南卡罗来纳州~3
南达科他州~2
田纳西~3
德州~3
犹他~4
佛蒙特~1
弗吉尼亚~3
华盛顿~4
西弗吉尼亚~3
威斯康星~2
怀俄明~4
- 创建区域问题。同样,如果您希望im体育官app使用上面的列表,请按以下顺序排列区域:
- 东北
- 中西部
- 南
- 西方
- 确保区域的顺序与分配的分数一致。例如,如果“东北”是第一个答案选项,那么属于东北地区的所有州都必须获得分数“1”。
- 转到Prefill选项卡并选择Fixed text 。
- 添加分数变量:
{{respondent.questions.usstate.score}}
这样,将根据状态问题中每个答案选项的分数选择正确的区域。
此代码段返回当前受访者给出的页面上所有问题的平均评分。这意味着您可以在页面中添加问题和子问题而无需更新 CSL 代码。
首先im体育创建两个变量:一个保存页面上找到的问题和子问题的数量,另一个保存受访者对这些问题给出的所有评分的总和。然后im体育遍历调查的所有问题,如果问题在im体育想要的页面上,im体育将它们添加到im体育的变量中。循环后,im体育只需将评分总和除以问题数量即可得到平均评分。
{{set "questionCount" 0}} {{set "ratingSum" 0}} {{#each respondent.questions}} {{#if (eq question.pageNumber 1)}} {{set "questionCount" (add (get "questionCount") 1)}} {{set "ratingSum" (add (get "ratingSum") scaleValue)}} {{/if}} {{/each}} {{divide (get "ratingSum") (get "questionCount")}}
尖端:
- 确保该页面上的所有问题都具有相同的比例。
- 只有在受访者点击“下一步”按钮后,答案才会被登记。这意味着 CSL 代码必须至少在下一页,否则 CSL 将无法从该页面获得答案。
- 要保存并稍后在报告中查看平均值,您需要预填一个隐藏的滑块问题。设置滑块的最小值和最大值以匹配源页面上问题比例的最小值和最大值。
您可以im体育官app使用 CSL 来计算BMI等各种分数。也不要忘记保存隐藏问题中的值,否则您将无法在报告中看到它。
要计算 BMI,请将一个人的体重(以千克为单位)除以他们的身长(以米为单位)的平方。这是公式:
为了使事情更易于管理,请im体育官app使用临时变量。请记住,临时变量仅在同一页面上有效。
首先,您在调查中有一个页面,您可以在其中询问受访者的身高和体重。然后在下一页上,您向他们展示他们的结果。结果页面看起来像这样:
体重: {{respondent.questions.weight}} 公斤
身高: {{respondent.questions.height}}米
{{设置“BMI”(圆(除respondent.questions.weight(pow respondent.questions.height 2))2)}}
您的体重指数是:
{{获取“BMI”}}
{{#if(lt(获取“BMI”)18,5)}}
你体重过轻。
{{else if (lt (get “BMI”) 25)}}
你有一个健康的体重。
{{else if (lt (get “BMI”) 30)}}
你超重了
{{别的}}
你很肥胖。
{{/ 如果}}
如果您想im体育官app使用磅和英寸而不是公制系统,请im体育官app使用此 CSL 计算:
{{设置“BMI”(整数倍((除respondent.questions.weight(pow respondent.questions.height 2))703)2)}}
一些提示:
CSL 计算总是从运算符开始。
当尝试将这个包含很多嵌套部分的计算放在一起时,请先尝试计算内部部分,然后继续添加。因此,在一个选项卡中有您工作的问题编辑器,在另一个选项卡中,您有打开该页面的调查,这样,您可以继续进行小的更改,然后刷新调查选项卡以查看结果。您还可以im体育官app使用更多临时变量来保存部分计算,然后在最终计算中im体育官app使用这些变量。
有时,您想在页面显示逻辑或分支中im体育官app使用计算或其他 CSL。由于这不能直接完成,您可以im体育官app使用您的计算来后填一个问题。然后您可以在您的显示逻辑或分支中im体育官app使用该问题。还有一个额外的好处,即问题也将在过滤器的报告中可用。假设您想要在受访者在复选框问题中选择超过 1 个答案时显示一个页面,也许是为了向他们展示一个排序问题。
首先,创建一个隐藏的单选按钮问题,“选择了超过 1 个选项?”,在带有复选框问题的页面底部有两个答案选择,“是”和“否”。确保您的复选框问题有数据标签,因为您将需要它来引用 CSL。然后在单选按钮问题中,转到预填充选项卡并选择“固定文本或 CSL”并输入以下 CSL:
{{#if (gt (count respondent.questions. myLabel .answerChoices) 1)}}yes{{else}}no{{/if}}
这就是说,如果在数据标签为“myLabel”的问题中选择的答案选项数大于 (gt) 一个,则选择“是”,否则选择“否”。
您也可以将代码中的“是”和“否”替换为“1”和“2”,分别代表第一个和第二个答案选择。如果您的调查是多语言的,您将需要这样做。
在提交页面后选择 Postfill 值 旁边的是?
'each' 带im体育浏览当前受访者给出的每个答案,然后im体育将其添加到一个临时变量中。最后,im体育im体育官app使用'get'写出变量的内容。
{{#each respondent.questions.myDataLabel.answerChoices}} {{set "answers" (get "answers") " | " caption.unformatted}} {{/each}} {{set "answers" (substring (get 'answers') 3)}} {{get "answers"}}
这是一个更复杂的示例,它只返回受访者回答的包含单词“快乐”的答案选项。
{{#each respondent.questions.myDataLabel.answerChoices}} {{#if (contains caption "happy")}} {{set "answers" (get "answers") " | " caption.unformatted}} {{/if}} {{/each}} {{set "answers" (substring (get 'answers') 3)}} {{get "answers"}}
下面的代码片段允许您将基于 CSL 的验证添加到您的上传问题类型中,例如当您想要限制受访者上传特定文件类型的文件时,在这种情况下,im体育不希望受访者上传PDF文件。
下面的 CSL 片段将从右到左检查上传文件的路径。im体育将检查此路径中的 4 个字符。如果这包含字符 pdf,那么im体育将显示一条自定义消息。您还可以im体育官app使用它来为隐藏的问题后填真或假。然后,您可以im体育官app使用分支将受访者重定向到另一个页面,告诉受访者他们需要上传正确的文件类型。im体育官app使用自定义 CSS,您可以隐藏该页面上的下一步按钮,这样受访者除了返回上传正确的文件类型外别无选择。
示例脚本会检查带有标签labelUploadQuestion的上传问题类型的上传文件路径的最后 4 个字符:
下面的示例可用于在与上传问题相同的页面上后填隐藏问题
下面的 CSS 片段将隐藏插入页面上的下一个按钮,在本例中为第 2 页,您可以根据需要进行调整: