# WPS AirScript脚本库 **Repository Path**: web/wps_airscript ## Basic Information - **Project Name**: WPS AirScript脚本库 - **Description**: WPS AirScript脚本库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-31 - **Last Updated**: 2026-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WPS AirScript 脚本库 金山文档 AirScript 平台上的实用脚本集合。AirScript 是金山文档内置的脚本引擎,支持读写表格、调用 HTTP 接口,但有个限制:**内置定时任务只能每天触发一次**。因此本库里所有需要高频运行的脚本,都借助 [cron-job.org](https://console.cron-job.org/) 之类的外部 cron 服务,通过 webhook 触发 AirScript 执行。 ## 环境要求 - 一个 [金山文档(kdocs.cn)](https://www.kdocs.cn) 账号(微信扫码即可登录) - 每个脚本各自的 API Key / 凭证(详见下方脚本说明) - [cron-job.org](https://console.cron-job.org/) 或其他支持 webhook 的定时服务(免费版足够用) - [企业微信webhook获取方法](https://open.work.weixin.qq.com/help2/pc/14931) ## 通用配置流程(所有脚本共用) 每个脚本第一次使用都要走下面 6 步,之后外部 cron 会自动定时触发。 1. **新建表格** — 打开 kdocs.cn,新建一个空白电子表格。建议每个脚本用独立表格,避免凭证和结果混在一起。 2. **创建 AirScript** — 顶部菜单 `效率` → `高级开发` → `AirScript 脚本编辑器` → 创建脚本 → 选择"文档共享脚本"。 3. **启用网络 API** — 脚本编辑器左侧 `服务` → `添加服务` → 选"网络API"。不添加这步的话 `HTTP.get` / `HTTP.post` / `HTTP.put` 会不存在。 4. **粘贴代码 & 填配置** — 把脚本 `.js` 文件内容粘贴进编辑器。每个脚本的配置约定不同(见对应小节),都是写在表格固定单元格里,脚本运行时读取。 5. **手动试跑** — 点编辑器的 `运行` 按钮,在表格里检查结果单元格(一般是 B2 或 B3)确认跑通。 6. **接入外部 cron**(仅高频脚本需要;每日一次的脚本可以直接用 WPS 内置定时): - 在脚本编辑器左侧面板找到脚本,点三个点 → 复制 **webhook 链接**,同时拿到 **AirScript-Token** - 打开 [cron-job.org](https://console.cron-job.org/),创建任务: - **Cron 表达式**: 按需设置(每个脚本下方有推荐值) - **HTTP 方法**: `POST` - **目标 URL**: 刚才复制的 webhook 链接 - **请求体**: ```json {"Context":{"argv":{}}} ``` - **Headers**: ``` AirScript-Token: 你的token Content-Type: application/json ``` - **超时**: 至少 30 秒 ## 脚本列表 ### WorkBuddy.js — Buddy 加油站每日签到 | 项目 | 内容 | |------|------| | 功能 | 腾讯 WorkBuddy(CodeBuddy 桌面端配套服务)每日自动签到,获取积分 | | 表格约定 | B1 = refresh_token(脚本每次运行自动续期并回写)
B2 = 执行结果(积分、连签天数等) | | cron 推荐 | 每天一次即可(WPS 内置定时足够,无需外部 cron) | | 幂等 | 同一天重复触发只会签到一次,重复执行自动跳过 | **令牌获取**:电脑登录 WorkBuddy 客户端后,打开文件: - macOS: `~/Library/Application Support/CodeBuddyExtension/Data/Public/auth/workbuddy-desktop.info` - Windows: `%APPDATA%\CodeBuddyExtension\Data\Public\auth\workbuddy-desktop.info` - Linux: 同上路径在 `~/.config/` 下 - 解密方法 https://gitee.com/web/workbuddy_checkin/releases/download/1.0.0/wb_token_gui.exe 找到 `"refreshToken": "eyJ..."` 那串内容填到 B1。 ### instabox.js — Instabox activity-lease 自动续租 | 项目 | 内容 | |------|------| | 功能 | 每 10 分钟为 Instabox VM 刷新一次 activity-lease,防止空闲机器被自动挂起 | | 表格约定 | B1 = Instabox API Key
B2 = Machine ID(形如 `m_xxxxx`)
B3 = 执行结果 | | cron 推荐 | `*/10 * * * *`(每 10 分钟,TTL 900s 下留足余量) | | 幂等 | 续租接口本身幂等,多次调用不会有副作用 | **安全模型**:脚本采用"先检查再续租"策略。`GET /v1/machines/{id}` 确认机器同时满足 `state=running`、`desiredState=running`、`operationId=null`、无 `autoSuspendedAt`,才会 `PUT` 续租。任何一个条件不满足(重启中 / 已挂起 / 有操作进行中)都会拒绝续租,避免对非运行状态的机器盲目刷新。 ### domain-monitor.js — 域名 + SSL 证书到期监控 | 项目 | 内容 | |------|------| | 功能 | 批量扫描域名的 whois 到期时间和 SSL 证书到期时间,低于阈值时通过 PushPlus / 企业微信机器人推送告警 | | 表格约定 | A = 域名(输入,如 `example.com` 或 `www.example.com`)
B = whois 到期时间(输出)
C = whois 距到期天数(输出)
D = 证书到期时间(输出)
E = 证书距到期天数(输出)
F = 状态(正常 / 警告 / 已过期 / 查询失败)
H = 上次查询时间(输出)
I1 = whois 告警阈值(天,默认 30)
I2 = 证书告警阈值(天,默认 14)
I3 = PushPlus token(留空跳过)
I4 = 企业微信 webhook(留空跳过) | | cron 推荐 | 每天一次(WPS 内置定时足够) | | 幂等 | 纯只读查询,不对外产生副作用;重复域名和同主域下的子域均有缓存去重 | **whois 查询链**(实测可用,从上到下降级): 1. **VeriSign RDAP**(ICANN 官方)— `.com` / `.net` 后缀,`events[].eventAction=="expiration"` 100% 有值 2. **PIR RDAP** — `.org` 后缀 3. **chinaz HTML** — 通用后缀兜底,正则解析页面里的 `YYYY年MM月DD日` 中文日期 **证书查询链**: 1. **ssl.bitefu.net**(主,实时 TLS 握手)— 返回 `validTo_time_t` Unix 时间戳 2. **check-host.net/check-cert** 3. **crt.sh**(证书透明度日志) 4. **certspotter.com** **去重策略**:whois 按主域名(eTLD+1)缓存,`www.example.com` 和 `api.example.com` 共享一次 whois 查询;证书按完整 hostname 缓存,`www.example.com` 和 `api.example.com` 各自查询一次证书(因为证书本来就不同)。 ## 安全注意 - **API Key / Token 等同于账号密码**,放有凭证的表格 **不要分享给任何人**。 - AirScript-Token 也是私钥,**不要 commit 到 git 仓库**。 - 所有脚本的设计原则是:密钥只读不写(B1/B2 是输入),结果只写入执行状态(B3),不回显任何密钥内容。 - 如果你的公司或团队多人共用同一金山文档账号跑脚本,考虑每个脚本用独立的子账号 + 独立表格。 ## 目录结构 ``` wps_airscript/ ├── WorkBuddy.js # Buddy 加油站每日签到(腾讯 WorkBuddy) ├── instabox.js # Instabox VM activity-lease 自动续租 ├── domain-monitor.js # 域名 + SSL 证书到期监控(whois + 证书双检查) ├── README.md # 本文档 ├── README.en.md # English version └── instabox.txt # Instabox 官方 Cloudflare Worker 参考实现 ``` 每个 `.js` 文件内部都有完整的使用说明注释,复制进 AirScript 编辑器即可直接运行。