【开发文档分享】有AI编程加持,是时候重视WPS的JSA宏的价值了
@KVP
因帖子字数有限制,完整的代码可到公众号推文里获取:【开发文档分享】有AI编程加持,是时候重视WPS的JSA宏的价值了
上一篇推文中,分享了WPS多维表格的二次开发的接口文档,反响不错,在AI编程能力越发强大的今天,普通Excel/WPS中高级用户群体,真的挺有必要再进一步,将通过氛围编程(vibe coding)的方式,驾驭一下AI直接写代码。
当然上一篇谈及的是WPS多维表格,很多人遇见了一款工具,就把它当前瑞士军刀般来使用,什么需求,什么场景都用一个工具完成,其实是非常不合适的,例如在多维表格群体里,笔者能够感受到的氛围是大家都很排斥着用传统表格了,觉得多维表格,数据结构化程度高了,还可以直接有仪表盘出报告,没有传统表格什么事了,这也只能说有点天真。
传统表格的生态,仍然是非常旺盛的,因其面向的是单元格级别的颗粒度,可以无限自由地构建数据处理和报表。在新的OFFICE365新函数、动态数组公式效果的加持下,可以做出非常强大的效果。
还有,它是本地客户端的工具,可以和本地资源做连接的,这比起线上表格,有了太广阔的扩展空间了,无论是批量性读取其他系统导出的表格、文本等文件,还有对网页非结构化数据的抓取能力,都是在线表格类产品无法相比的。
当然最关键的,它还有VBA/JSA对象模型的生态,可以将绝大多数的界面操作转换为自动化后台代码完成。
有点扯远了,本篇分享的是WPS的JSA开发文档,老规矩,有兴趣的可加笔者微信 190262897 获取。
下面一些小插曲,有兴趣的可以往下看看,笔者亲自实践过,借助开发文档,交由AI来写代码,也是很可行的,当然,前提最好自己懂VBA对象模型、懂点JS语言语法。
本篇其实是一个小财务需求,需要将财务系统的导出xlsx文件,进行再加工,在Excel/WPS环境下方便地查看报告。当然要完全自动化,就需要用代码去驱动,综合评估了使用RPA软件,Excel/WPS的VBA代码和WPS的JSA代码来完成,最终选择了WPS的JSA方式实现。
简单说明下理由:
1、交付方便性:RPA软件,需要安装一个软件,增加交付成本。
2、本篇需求,完全是只以Excel/WPS作交互,RPA软件也没有太大的额外优势需要选择它。
3、交付的效果,只需要点击一个按钮,运行代码后即可,没有界面交互要求,RPA软件作界面(笔者还挺喜欢用RPA软件做简单的交互界面,比起VBA/JSA的古老窗体界面更舒服快捷)的优势也不明显。
4、VBA和JSA的选择上,选择了后者,是为了在数据处理过程中,可以有更现代的数据结构来处理,写出的代码也更加优雅,VBA来写就比较憋屈。
5、交付对象使用的是WPS,交付成VBA也憋屈,默认不自带VBA模块,虽然很容易通过安装实现,但想挑战下极端环境,没有VBA模块的交付场景。
AI编程里,相比JSA、VBA编程,应该更为成熟,毕竟语料更丰富,AI写出来的代码应该更稳,这个结论,估计今天仍然成立。
在人工写代码中,JSA的宏编缉器环境,实在很简陋,很难写代码,极少的智能提示,所以本篇需求,笔者是努力让AI全程来写代码,人只负责复制粘贴,AI写JS的前端项目代码很擅长,但写JSA代码,就非常容易有幻觉,乱写一通,所以,给它一份markdown格式的文档,就显得尤为重要。
当然笔者在今年年初已经爬取了WPS的JSA/WPSJS加载项官方文档,整理成pdf了,这一次重新拿来整理成markdown格式给AI参考,最终AI写出来的代码,正确率也还不错的。
总共整理了4个文件夹
为了尽可能验证可行性,本次的项目,使用的是TRAE CN版本,大家都能轻松获取到的,全免费使用的。用的模型以Kimi-K2-0905为主,
分享部分对话过程,写出来的代码,还真不错,个别有点小错误,多轮对话修正下,可以接受,关键是全程不用在WPS的JSA宏编程器上写代码,就算在TRAE CN上小改一下,也有AI智能提示,也是很流畅。
国产模型,多轮对话过程中,建议反复提交文档给它参考,不知道它哪一轮对话又放飞自我,用幻觉来写出各种不存在的接口方法。而为了多次一口次引用多个文档,最后使用了之前开发的ClipboardTool工具,识别出这个文档的剪切板数据类型,将它固化后多次使用,当然最后在Ditto上,也测试成功,可以添加这种自定义剪切板类型来固化它的内容,供下次粘贴使用。
最后,附上一个项目结果的效果,从财务系统导出的的文件,读到数据源中,通过函数的方式,将数据引用到报表层来使用,用Filter、TextBefore、LET等现代函数来制作,实现简单,又语义性极强,真的太舒服了,特别是WPS个人版全部函数同步到位后,函数能轻松解决的,还懒得写代码实现了。
让笔者有兴趣使用JSA来实现,很大原因是,类似以下这样的科目表数据处理,财务的科目是父子结构的,需要处理成这种多级分类,并且有些级别是长短不一的,例如有些到2级就没有了,有些是有3级分类的,还有有些三级分类下只有一个成员,不需要小计统计的等等,笔者看到这些需求,用VBA来写有些头皮发麻,就想着AI驱动下用JS语言来处理应该更流畅。
最后,附上本篇的JSA代码,大部分是AI写出来的,而且AI写的也很规范,叫它重构,多些注释和日志输出等,也很听话,写出来的代码可读性很不错。每个子方法上还有定义,在TRAE上跳转阅读和悬停也很流畅。