Skip to main content
Version: latest

更新记录

2021-08-25 升级DSL逻辑运行引擎#

升级DSL的逻辑运行引擎,同时满足多种表达方式,优化逻辑互相覆盖的问题

比如想表达选Q1A1,显示Q2; 选Q1A2,显示Q2~3; 选Q1A3, 显示Q2~4

可以思考一道题显示的条件是什么?,写成

if Q1A1 then show Q2
if Q1A1 or Q1A2 then show Q3
if Q1A1 or Q1A2 or Q1A3 then show Q4

更新支持选了一个选项要显示哪些题目?,写成

if Q1A1 then show Q2
if Q1A2 then show Q2~3
if Q1A3 then show Q2~4

这种写法在之前会有先后覆盖的问题,现在已经优化。

详细运行原理见显示逻辑运行引擎

2021-06-09 新增连续题号缩写支持#

现在可以将 dsl 语句中的 Q1, Q2, Q3, Q4 的简写成 Q1~4 了,方便需要输入多题目或选项时的重复输入。 连续写法可以应用于问题,子问题和选项。如下:

# 隐藏 1~4 题
hide Q1~4
# 隐藏 Q1 中的 1~4 选项
hide Q1A1~4
# 隐藏 Q1 中的 1~4 子问题
hide Q1S1~4

目前会将 3 个及以上可合并的序号再页面刷新后自动转换成连续形式,题号必须按顺序写,否则不会合并。如下:

# 连续数量不足 3 个,所以不合并
hide Q1, Q2
# 页面刷新后,变为 hide Q1~3
hide Q1, Q2, Q3
# 由于不是按顺序写入,所以不变
hide Q1, Q3, Q2

2021-05-27 新增矩阵子问题随机抽取#

现在可以在矩阵单选题,矩阵多选题和矩阵量表题中使用 random 随机语句,随机抽取要显示的子问题了。

例如如下语句,即可从 Q1S1, Q1S2, Q1S3, Q1S4, Q1S5 中随机抽取两个子问题显示。

random show 2 from Q1S1, Q1S2, Q1S3, Q1S4, Q1S5

若想改变每个子问题出现的概率,可配合 weight by 使用,如下:

random show 3 from Q2S1, Q2S2, Q2S3, Q2S4, Q2S5 weight by 1:5:2:3:9

若想仅从状态不为 hide 的子问题中随机抽取,可配合 only_show 使用,如下:

if Q3A1 then show Q4S1
if Q3A2 then show Q4S2
if Q3A3 then show Q4S3
if Q3A4 then show Q4S4
random show 2 from only_show Q4S1, Q4S2, Q4S3, Q4S4

具体见矩阵子问题随机抽取

2021-05-21 题目替换支持多个内容替换#

现在可以在同一题目中使用多个 replace 替换语句了。

例如使用下面语句,当 Q1,Q2 回答时,即可将 Q3 标题中的 XXX,YYY 替换成 Q1,Q2的答案。

if Q1 then replace "XXX" in Q3 title with Q1
if Q2 then replace "YYY" in Q3 title with Q2

2021-03-23 新增随机抽取逻辑、加权随机抽取#

现在可以在DSL中创建题目随机抽取逻辑了,具体例子和效果见随机抽取

例如使用下面语句,即可从4道题中随机抽取1道。

random show 1 from Q1, Q2, Q3, Q4

如果你需要不同题被抽取到的概率不同,可以使用加权随机抽取。例如下面的语句,Q1被抽中的概率是其他题目的两倍

random show 1 from Q1, Q2, Q3, Q4 weight by 2:1:1:1

有时候我们想要随机抽取的题目是有前置的显示逻辑的,为了避免用户回答太多道题,我们可以限制从会被显示的题目中抽取最多n道题显示,从而减少用户的答题负担,提升回收率。

if Q1A1 then show Q2
if Q1A2 then show Q3
if Q1A3 then show Q4
if Q1A4 then show Q5
if Q1A5 then show Q6
if Q1A6 then show Q7
random show 2 from only_show Q2, Q3, Q4, Q5, Q6, Q7

2021-01-18 完善随机排序逻辑,包括全题型的选项、子问题、题目随机排序#

具体见随机排序

2020-11-13 答案位置比较逻辑(排序题排第1位)#

新增答案位置比较逻辑,满足"排序题中选项排第n位,显示后续题目"的需求。

if index Q1A2 == 1 then show Q2 # 第二个选项排在第一位,显示第二题

具体见比较逻辑中的例子

2020-11-06 连线跳转逻辑、文本描述内容应用等#

连线跳转逻辑(branch to,方便编写甄别题)#

在问卷中我们经常使用一些甄别题来确认回收样本符合我们的要求,比如我们调研20岁以上女性的消费习惯时,当受访者是男性或年龄小于20岁都会直接结束问卷。

这个时候我们可以使用连线跳转逻辑来实现,如

if Q1A1 then branch from Q1 to END

具体例子见连线跳转逻辑

优化以前使用显示逻辑来实现甄别题的弊端#

之前我们使用显示逻辑也可以实现类似的逻辑,但使用连线跳转逻辑会更加方便,比如你后续有20道题时,使用显示逻辑可能是这样的

if Q1A1 then hide Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19

如果后续题目上还带有逻辑的话,由于一个题目显示逻辑条件只能有一个,还必须把Q1A1这个条件拿出来与后续条件进行组合。

现在使用branch to逻辑将变成,可以大幅度减轻工作量,并且使得DSL可读性更强。

if Q1A1 then branch from Q1 to END

文本描述支持内容引用#

使用方法同题目内容引用替换, 例如replace "xxx" in Q01 title with Q1

文本描述题使用序号Q01Q02来指代,原因是文本描述题不参与问卷题目序号的计算。

详见题目内容引用替换中的例子。

支持"其他"选项的显示逻辑#

之前如果条件中包含"其他"选项会导致DSL出错,现在已经支持。

2020-10-16 全量对外发布,文档更新#

感谢大家对腾讯问卷自定义逻辑的支持,目前已全量对外开发。

2020-09-16 问卷编辑器优化,准备对外发布#

  • 编辑器新UI
  • 编辑器入口
  • 编辑器一些体验细节
    • 未保存不允许离开
    • "查看语法"和"查看示例"弹窗
    • 右侧问卷预览的题目和选项序号tag展示
  • 更新文档
    • 文档中代码的语法高亮
    • 按照新的编辑器UI更新已有文档
    • 编写了全新的快速入门

2020-08-24 编辑器UI左右分栏、可调编辑器大小、矩阵题子问题选项的已答逻辑#

  • 编辑器左右分栏、可以调节左边编辑器和右边预览区域的大小。

  • 支持矩阵题子问题选项的已答逻辑,语法如Q1S1A1,其余使用方法同普通选项的已答逻辑。

2020-08-17 show/hide支持多个参数、hover显示题目内容、错误提示、编辑即应用#

show/hide支持多个参数#

当同一个条件同时控制多道题目的显示的时候,之前我们需要写多行

if Q1 and Q2A1 then show Q3
if Q1 and Q2A1 then show Q4
if Q1 and Q2A1 then show Q5
if Q1 and Q2A1 then show Q6

现在可以直接写

if Q1 and Q2A1 then show Q3, Q4, Q5, Q6

详细见例子

hover显示题目内容。#

将鼠标移到题目序号(蓝色高亮的部分,Q1Q1A1等)上方,显示题目内容。更多技巧见编辑器

错误提示#

当这一行有错误时,会在底部显示错误。

编辑即应用#

去掉"应用"按钮,直接在编辑器输入自定义逻辑即可直接在预览区域预览效果。逻辑实时应用。

2020-08-10 语法高亮、自动补全、快速注释#

  • 语法高亮
    • 对题目,选项部分进行高亮。
    • 对普通的关键词,字符串进行语法高亮。
  • 自动补全
    • 对题目、选项、子问题进行自动补全,会弹出下拉菜单供选择。详见自动补全章节
    • 对关键词进行语法补全
  • 快速注释
    • 快速注释光标所在的行或被选中的所有行
    • Mac下使用快捷键 CMD + / , Windows下使用CTRL + /

2020-08-03 语义化和去id化#

  • 语义化
    • 新增条件语句"if...then...",效果同 "=>"
    • 新增逻辑与"and",效果同 "&&"
    • 新增逻辑或"or",效果同 "||"
    • 新增逻辑非"not",效果同 "!"
  • 去id化
    • 用户不在需要理题目和选项id,直接使用Q1表示第一道题,Q1A1表示第一道题的第一个选项。由后台自动做题目序号和id的转换

举个例子,"第一题已答并且第二题已答,显示第三题" 这一个逻辑

这个逻辑用以前符号化的写法为 ${q-1-abcd} && ${q-2-abcd} => show(q-3-abcd)

现在还可以使用语义化和去id化的写法 if Q1 and Q2 then show Q3

你可以选择你喜欢的写法,我们建议使用语义化的写法

整份文档已经修改成按最新语法展示,详见语法章节例子章节

!> Q1,Q1A1代表的题目序号指题目在整份问卷所有题目的真实序号,即与在编辑页看到的题目序号一致,不是指回答页显示给答题者的序号。你也可以在DSL编辑器的预览区域看到这个标签。

2020-07-27 新增len函数#

具体应用场景和示例可见题目答案个数比较

2020-07-20 比较逻辑(大于、小于、等于)#

  • 新增比较逻辑和符号:><==>=<=
  • 可用于设置量表题和矩阵量表题的逻辑。

具体应用场景和示例可见比较逻辑

2020-07-13 show函数、独立保存接口#

  • 新增show函数,之前有很多同学反馈使用hide函数总是要在条件部分最外面套一层取反 !( xxx ) , 所以增加了show函数,原本的hide函数也可以照常使用。例如原本实现Q1已答显示Q2需要写if !Q1 then hide Q2,现在可以写成if Q1 then show Q2。注意事项查看这里
  • 新增独立保存接口,防止跟问卷编辑页同时打开时互相覆盖。

2020-07-06 矩阵题子问题和选项的显示逻辑、在线文档预览例子#

  • 在线文档示例下方都加入了实时预览的问卷,可以直接体验。
  • 矩阵题子问题显示逻辑,详见例子
  • 矩阵题选项显示逻辑,详见例子
  • DSL编辑器中下拉题、排序题、矩阵题子问题和选项的id显示。

2020-06-18 选项显示逻辑#

  • 支持选项显示逻辑,详见例子

2020-06-12 复制问卷#

  • 支持复制问卷的同时复制DSL

2020-06-09 正式立项#

2020-05-20 基础demo#