WPS AirScript脚本合集(二十):单选项字段选项内容跨表引用文本字段
一、多维表格数据表及字段结构
1.1 数据录入表A
1、数据表名:数据录入表
2、视图名称:表格视图
3、字段设置:
字段名称:编号 - 字段类型:编号 - 编号类型:自增数字-编号格式:000001
字段名称:业务员-字段类型:单选项-选项:选项1、选项2-允许填写时添加选项-默认值:无
1.2 基础档案表B
1、数据表名:基础档案表
2、视图名称:表格视图
3、字段设置:
字段名称:文本 - 字段类型:编号 - 编号类型:自增数字-编号格式:000001
字段名称:业务员 - 字段类型:文本- 不限制字数 - 不禁止录入重复值 - 默认值:无
二、AirScript脚本说明
因字数限制,内容做部分删减,完整文章见公众号文章链接:https://mp.weixin.qq.com/s/E1YytsETDgCrSXBaKppnQg
代码逻辑解释
1、配置加载与初始化
脚本首先读取 `CONFIG` 对象中的配置,如数据表名称和字段名称,只需修改配置区域即可适配自己的表格。随后,脚本会获取这两个数据表的唯一标识ID,这是后续所有API调用的基础。
2、从基础表读取数据
脚本使用 `Application.Record.GetRecords`方法,以分页的方式(通过 `PageSize`和 `Offset`参数)读取“基础档案表”中的所有记录。这能有效避免单次请求数据量过大导致的问题。读取到的“业务员”字段值会被存入 `Set`集合中,利用其特性自动去重,最终得到一份唯一的业务员名单。
`Application.Record.GetRecords`用法指路链接:
1️⃣ https://airsheet.wps.cn/docs/api/dbsheet/Record.html
2️⃣WPS多维表格:“开发”功能使用说明文档 https://365.kdocs.cn/l/ctzsgDlAGF0l
3、获取当前单选项配置
脚本通过 `Application.Sheets().FieldDescriptors()`获取“数据录入表”中“业务员”单选项字段的描述符,进而读取其现有的选项列表(`Select.Items`)。每个选项通常包含 `value`(显示文本) 和 `colorHex` (颜色值) 等属性。
`Application.Sheets().FieldDescriptors()`用法指路链接:
https://open.wps.cn/documents/app-integration-dev/guide/dbsheet/Api/SelectField_Items
4、比较差异并生成新选项列表
将通过步骤2得到的业务员集合与步骤3得到的现有选项集合进行对比,找出存在于基础表但不存在于当前单选项中的值,这些就是需要新增的选项。
5、更新单选项字段
这是最关键的一步。脚本为每个需要新增的选项生成一个随机的浅色系颜色,然后构建符合要求的选项对象(包含 `value`和 `colorHex`),并将其添加到从字段描述符中获取的 `Items`数组末尾。最后,通过 `prop.Items = Items`和 `fieldKeys.Apply()`这两行代码,将新的选项列表应用回字段,完成更新。
脚本编辑器运行结果
有新增选项的长这样(blingbling~
不用新增选项的长这样(blingbling~
三、自动化流程
四、自动化流程运行输出示例
重点说明
该自动化流程+AirScript脚本只有新增逻辑,无删除逻辑,也就是说:
1️⃣当基础档案表中业务员文本内容被删除时,数据录入表的单选项内容不会同步删除;
举例:基础档案表中业务员有“小林”“大林”“林林”共3个,数据录入表的单选项内容同样也有这3个选项,当基础档案表中业务员删除“大林”时,数据录入表的单选项内容依然存在“大林”选项;
2️⃣当基础档案表中业务员文本内容被修改时,数据录入表的单选项内容不会同步修改,而是新增1个选项;
举例:基础档案表中业务员有“小林”“大林”“林林”共3个,数据录入表的单选项内容同样也有这3个选项,当基础档案表中业务员“林林”修改为“林子”,即“小林”“大林”“林子”共3个文本,此时数据录入表的单选项为“小林”“大林”“林林”“林子”共4个。
创作者俱乐部成员