【金山文档SKILL功能更新】支持智能表单功能
Lv.2潜力创作者
此前的反馈帖:【建议】金山文档SKILL增加智能表单功能
一、什么是智能表单
智能表单(Form)是金山文档提供的一种轻量级在线信息收集工具,支持通过 API 完成从创建草稿、编辑题目、预览确认到发布收集的完整生命周期。表单发布后生成独立的填写链接,可分发用于数据采集,收集结果在管理后台统一查看。
智能表单通过 form.lite.* 系列四个原子工具驱动,覆盖表单全生命周期:
工具 | 功能 | 阶段 |
form.lite.create_draft | 创建智能表单草稿 | 创建 |
form.lite.update_draft | 更新智能表单草稿 | 编辑 |
form.lite.get_form_info | 获取智能表单信息 | 预览/验证 |
form.lite.publish_draft | 发布智能表单草稿 | 发布 |
二、支持 14 种题型
题型 | 类型标识 | 说明 |
文本输入 | input | 单行文本输入 |
电话 | telphone | 电话号码格式 |
邮箱 | 邮箱地址格式 | |
身份证 | idcard | 身份证号码格式 |
数字输入 | numberInput | 整数数字输入 |
小数 | decimal | 小数数字输入 |
单选 | select | 从选项中选择一项 |
多选 | multiSelect | 从选项中选择多项 |
下拉选择 | dropdown | 下拉菜单选择 |
日期 | date | 选择日期 |
日期时间 | dateTime | 选择日期和时间 |
月份 | month | 选择月份 |
时间 | time | 选择时间 |
地址 | address | 地址选择器 |
选择题(select、multiSelect、dropdown)通过 selects 数组定义选项,每项包含一个 value(选项文本)。地址题(address)可配 location_type 控制地址层级(省/市/区/乡镇/村)。
三、生命周期详解
3.1 创建草稿
调用 create_draft 创建表单草稿,支持两种方式:
空草稿:传入空题目数组 questions: [],后续通过 update_draft 逐步添加
完整草稿:直接在 questions 中定义全部题目和选项
创建时传入 title(表单标题)和 questions(题目列表)。每道题目包含 question(标题)、type(题型)和可选的 selects(选项)。
3.2 更新草稿
调用 update_draft 修改草稿。关键语义:questions 是完整覆盖,不是增量追加。
只改标题:只传 title,不传 questions
改题目:传入完整的题目列表整体替换
修改后必须调用 get_form_info 回读验证
3.3 预览确认
每次创建或更新草稿后,需调用 get_form_info 获取最新内容,整理为可读的文字版表单供用户确认。预览内容包括:
表单名称
当前状态
管理页面地址
题目预览表格(序号、题目、类型、必填、选项)
3.4 发布表单
调用 publish_draft 将草稿发布为正式表单。发布后无法修改,因此发布前必须获得用户明确确认。
发布成功后返回两个关键信息:
form_id — 用于拼接管理页面(查看结果、管理设置)
sid — 用于拼接填写页面(分发给填写人)
四、表单状态与生命周期流
完整调用链条:
create_draft
│
▼
get_form_info(预览确认)
│
▼
update_draft(如需修改)
│
▼
get_form_info(再次确认)
│
▼ 用户确认发布
publish_draft
│
▼
get_form_info(验证发布成功)两个关键状态:
Draft — 草稿状态,可编辑,sid 为空
Release — 已发布,不可编辑,sid 非空
五、安全约束与最佳实践
要点 | 说明 |
写后回读 | 每次创建或更新后,强制调用 get_form_info 验证实际结果 |
发布不可逆 | 发布前必须用户明确确认,未确认时只交付管理页面 |
完整覆盖语义 | update_draft 的 questions 是完整替换,误传会导致题目丢失 |
非幂等操作 | create_draft 和 update_draft 重试前须先查询当前状态 |
草稿确认模板 | 更新后按标准模板整理文字版表单给用户确认 |
六、典型场景:创建客户满意度调查
1. create_draft("客户满意度调查", questions=[...]) → 获取 form_id
2. get_form_info(form_id) → 预览草稿内容
3. 整理文字版预览 → 用户确认
4. 用户提出修改意见 → update_draft(...)
5. get_form_info(form_id) → 再次预览确认
6. 用户确认"发布" → publish_draft(form_id)
7. get_form_info(form_id) → 验证发布成功
8. 交付管理页面 + 填写页面