Skip to main content
Version: latest

更新记录

2024-11-04 新增LANG函数,用于获取答题者的语言#

使用方法如下:

if LANG() == "zhs" then show Q1 # 如果答题者语言是中文,显示Q1if LANG() == "en" then show Q2 # 如果答题者语言是英文,显示Q2

更多见题目显示逻辑

2024-06-05 支持选项随机抽取逻辑#

支持选项随机抽取逻辑,支持仅从显示的选项中抽取,支持选项的权重设置。

使用方法同题目的随机抽取,更多例子

# Q2引用Q1已答选项if Q1A1 then show Q2A1if Q1A2 then show Q2A2if Q1A3 then show Q2A3if Q1A4 then show Q2A4if Q1A5 then show Q2A5if Q1A6 then show Q2A6if Q1A7 then show Q2A7if Q1 then show Q2
# Q2选项随机排序shuffle Q2A1~7
# Q2选项从显示的选项中抽取4个,并保证A2一直会被抽中random show 4 from only_show Q2A1~7 weight by 1:99999:1:1:1:1:1

2024-05-24 升级随机排序逻辑, 支持组间、组内随机排序,支持特定选项不参与随机排序#

全题型的选项、子问题、题目随机排序逻辑,支持组间、组内随机排序,支持特定选项不参与随机排序

描述keyword
题目分组,组间随机,组内不随机shuffle (Q1~3), (Q4~6)
题目分组,组间随机,组内随机shuffle (shuffle Q1~3), (shuffle Q4~6)
题目分组,组间随机,组内随机和不随机混合shuffle (shuffle Q1~3), (Q4~6)
题目分组,组间随机,组内随机和不随机混合,特定题目固定位置
(没指定Q6,Q6不参与随机,因此位置固定)
shuffle (shuffle Q1~3), (Q4~5)
题目分组,组间不随机,组内随机shuffle Q1~3
shuffle Q4~6
选项分组,组间随机,组内不随机shuffle (Q1A1~3), (Q1A4~6)
选项分组,组间不随机,组内随机shuffle Q1A1~3
shuffle Q1A4~6
选项分组,组间随机,组内随机和不随机混合shuffle (shuffle Q1A1~3), (Q1A4~6)
选项分组,组间随机,组内随机和不随机混合,特定选项固定位置
(没指定Q1A6,因此位置固定)
shuffle (shuffle Q1A1~3), (Q1A4~5)
选项分组,组间不随机,组内随机shuffle Q1A1~3
shuffle Q1A4~6
矩阵题行分组,组间随机,组内不随机shuffle (Q1S1~3), (Q1S4~6)
矩阵题行分组,组间不随机,组内随机shuffle Q1S1~3
shuffle Q1S4~6
矩阵题行分组,组间随机,组内随机和不随机混合shuffle (shuffle Q1S1~3), (Q1S4~6)
矩阵题行分组,组间随机,组内随机和不随机混合,特定行固定位置
(没指定Q1S6,因此位置固定)
shuffle (shuffle Q1S1~3), (Q1S4~5)
矩阵题行分组,组间不随机,组内随机shuffle Q1S1~3
shuffle Q1S4~6

2024-05-14 支持矩阵填空题逻辑#

  • 支持用 Q1A1指代矩阵填空题第一列
  • 支持用 Q1S1指代矩阵填空题第一行
  • 可以使用显示逻辑控制行列的显示隐藏
  • 也可以使用Q1S1A1指代第一行第一列已填,用于条件判断

自定义逻辑

# 矩阵填空题列显示逻辑if Q1A1 then show Q2A1
# 矩阵填空题行显示逻辑if Q1A2 then show Q2S1
# 矩阵填空题填空已填逻辑if Q2S1A1 then show Q3

2024-03-25 RANDBETWEEN 生成随机数替换题干内容#

例子

Q1. 你家有几个孩子参加过或正在参加继续教育项目?【单行文本题】Q1

Q01. 请根据您家这{{Q1}}名孩子中,年龄第{{n}}大的孩子情况,回答以下问题【文本描述题】Q01

自定义逻辑

replace "{{n}}" in Q01 title with RANDBETWEEN(1, Q1)replace "{{Q1}}" in Q01 title with Q1

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

2023-02-07 按条件替换题干内容为指定字符串#

if Q1 >= 18 then replace "XXX" in Q01 title with "成年"if Q1 < 18 then replace "XXX" in Q01 title with "未成年"

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

2022-11-28 时间日期题比较逻辑#

新增时间日期题的比较逻辑,如

if Q1 > 2020-10-24 then show Q2

更多时间格式如下表

时间格式
2020
年月2020-10
年月日2020-10-24
时分10:24
年月日时分2020-10-24 10:24

详见比较逻辑

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

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

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

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

if Q1A1 then show Q2if Q1A1 or Q1A2 then show Q3if Q1A1 or Q1A2 or Q1A3 then show Q4

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

if Q1A1 then show Q2if Q1A2 then show Q2~3if 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~3hide 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 Q4S1if Q3A2 then show Q4S2if Q3A3 then show Q4S3if 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 Q1if 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 Q2if Q1A2 then show Q3if Q1A3 then show Q4if Q1A4 then show Q5if Q1A5 then show Q6if Q1A6 then show Q7random 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 Q3if Q1 and Q2A1 then show Q4if Q1 and Q2A1 then show Q5if 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#