🚀 金山文档 AirScript 脚本队列系统 - 告别并发冲突,让脚本执行更稳定

大圣
大圣

创作者俱乐部成员

📌 前言

大家好!今天给大家分享一个我开发的金山文档 AirScript 脚本任务队列管理系统。相信很多使用金山文档脚本的朋友都遇到过类似的问题,这个工具就是为了解决这些痛点而生的。

😫 之前的痛点

1. 并发冲突导致数据错乱

当多个 Webhook 同时触发同一个脚本时,脚本会并发执行,导致:

数据写入冲突,记录被覆盖或丢失

同一条记录被重复处理

脚本执行结果不可预期

2. 脚本执行失败无感知

脚本执行失败后没有任何通知

不知道哪些任务失败了,需要手动排查

失败后需要手动重新触发,费时费力

3. 无法追踪执行历史

不知道脚本什么时候执行的

无法查看历史执行记录和结果

出问题时难以定位原因

4. 高并发场景下的限制

金山文档对单文件的并发请求有限制

大量请求同时涌入时容易触发限流

没有有效的流量控制手段

5. 手动管理多个 Webhook 繁琐

需要手动维护多个文件的 Webhook

无法自动分配请求到空闲的 Webhook

扩容需要手动复制文件、配置脚本

现在的优点

1. 🎯 智能排队,告别冲突

相同脚本排队执行:同一个脚本的任务自动排队,确保顺序执行

不同脚本并行执行:不同脚本之间互不影响,充分利用并发能力

防抖任务支持:相同脚本只执行最新一个,避免重复处理

2. 🔄 自动重试,稳定可靠

任务失败自动重试,支持配置重试次数和延迟

重试间隔可配置(默认 10 分钟),避免频繁请求

最大重试次数可配置(默认 3 次)

3. 📊 可视化仪表盘,一目了然

实时监控任务状态(等待中/执行中/已完成/失败)

执行趋势图表,了解任务分布

目标分布统计,掌握各脚本执行情况

4. 🔔 企业微信通知,及时告警

任务失败时自动推送通知

重试时也会通知,让你随时掌握状态

支持自定义 Webhook URL

5. 💾 持久化存储,历史可查

SQLite 本地存储,数据不丢失

支持查询历史任务记录

可配置任务保留天数

6. 🔗 Webhook 池管理,自动扩容

多 Webhook 并发调度,突破单文件限制

智能选择空闲的 Webhook 执行任务

一键克隆:自动复制文件创建新 Webhook

同文件串行、不同文件并行

7. 🌐 标准 RESTful API

完整的 CRUD 接口,支持 Sheet/View/Field/Record 操作

支持通过名称代替 ID,更加友好

批量操作支持,提高效率

8. ⚙️ 灵活配置,开箱即用

Web 界面配置系统参数

环境变量支持,方便部署

PM2 一键部署,稳定运行

🛠️ 核心功能一览

功能说明

智能排队相同脚本排队,不同脚本并行

自动重试失败自动重试,可配置次数和延迟

可视化监控实时仪表盘,任务状态一目了然

企业微信通知失败/重试自动推送

Webhook 池多 Webhook 并发,自动扩容

标准 APIRESTful 接口,支持名称查询

持久化存储SQLite 存储,历史可查

Cookie 管理支持设置 Cookie 开启脚本权限

📸 界面预览

系统提供了多个管理页面:

仪表盘:实时监控任务状态和执行趋势

设置页面:配置系统参数

Webhook 池管理:管理多个 Webhook,支持一键扩容

💡 使用场景

表单提交处理:多人同时提交表单时,确保数据按顺序处理

定时任务调度:配合定时触发,稳定执行批量任务

数据同步:多源数据同步时,避免并发冲突

自动化工作流:构建稳定的自动化处理流程

🤝 写在最后

这个项目是我在实际使用金山文档脚本过程中,为了解决各种痛点而开发的。希望能帮助到有同样需求的朋友!

如果你觉得有用,欢迎 Star 支持一下!有问题或建议也欢迎在评论区交流~

湖北省
浏览 334
8
8
分享
8 +1
3
8 +1
全部评论 3
 
OTB
您的帖子写得太棒了,干货满满,非常有参考价值! 我想请教一下,如何进入您图中提到的“金山脚本后台排队”界面? 可以麻烦分享一下进入路径或者链接吗?非常感谢!
· 广东省
回复
 
杨鼎
杨鼎

@金山办公

这个可以~~
· 湖北省
回复
 
办公助手
好厉害
· 江苏省
回复