网友作品 #000034 · 提交于 2026/08/05
Chrome侧边栏插件:WPS多维表数据填写质检
★★★★★业余水平browser


1 / 2
作品简介
这是一套 Chrome 侧边栏(Side Panel)扩展,用于检测 WPS 多维表格收集数据的填写质量:在侧边栏选择数据源与检查规则,一键开始检查,即给出总行数、通过数、错误数统计,并以饼图、柱状图分析与逐行错误明细呈现,可导出 CSV。技术上它实现了一套“页面主世界 → 内容脚本 → Side Panel”的完整桥接蓝图,解决扩展无法直接调用页面内 window.WPSOpenApi 对象的难题。
核心亮点
- 质检工作台:数据检查、规则配置、设置、历史记录、调试信息分区管理,已读取行数实时显示
- 规则化检查:按表启用活跃规则(如“每天需白班+夜班各一次”),违规行逐条列明细则与原因
- 可视化结果:通过/错误占比饼图、按错误类型分布的柱状图,质检情况一眼可见
- 结果导出:一键导出 CSV,便于存档与二次分析
- 主世界桥接:page-bridge 在页面主世界读取 WPSOpenApi 的选区与图片字段并转为纯 JSON,attach.js 注入并转发消息,规避“Promise could not be cloned”等跨世界报错
- 模板化蓝图:manifest、service-worker、内容脚本、侧边栏页面等以模板文件提供,可快速适配不同目标站点
- Mock 验证页:内置模拟 WPS 页面,离线即可验证桥接链路、序列化与选区同步
技术与工具
- 形态:Chrome 扩展(Side Panel 侧边栏 + Content Script 内容脚本 + Background 服务线程)
- 关键技术:页面主世界注入、postMessage 纯数据序列化、SelectionChange 选区自动同步
- 目标页面:默认针对 kdocs.cn(WPS 多维表格)配置 host_permissions,可按需修改匹配规则
开发过程
作者按“蓝图”思路组织开发:先把桥接链路拆成 page-bridge(读数据并序列化)、attach(注入与消息转发)、sidepanel(展示)三段模板,再用 mock 测试页离线验证链路完整性与数据正确性,最后到真实 WPS 页面验收整条函数链路。调试阶段 bug 较多,作者的应对是把报错信息持续扔给 AI 处理;多轮对话仍不满意时,重开对话并更换模型交叉比对。
适用场景
- 多维表数据质控:自动核验业务填报数据的完整性与规范性,降低人工核验成本
- 办公 SaaS 扩展开发:作为页面全局对象调用的通用桥接模板,快速开发适配各类办公产品的浏览器效率插件
原始提交内容(点开查看,可复制全文去问 AI)
Side Panel WPS 主世界桥接蓝图
适用场景
- 浏览器插件要在 WPS 多维表格页面读取当前选区
- 页面控制台能拿到
window.WPSOpenApi.Application,扩展里直接拿不到 - 需要 Side Panel 展示图片、附件、选区信息
- 需要保留“页面主世界 -> 内容脚本 -> Side Panel”完整桥接链路
蓝图目标
这个蓝图不是通用 side-panel 的替代品,而是 WPS 页面桥接专项模板。
它默认提供:
manifest.json.tmplsrc/background/service-worker.js.tmplsrc/content/attach.js.tmplsrc/content/page-bridge.js.tmplsrc/sidepanel/index.html.tmplsrc/sidepanel/sidepanel.js.tmpltests/mock-wps.html.tmpl
核心架构
-
page-bridge.js- 运行在页面主世界
- 读取
window.WPSOpenApi.Application - 读取选区和图片字段
- 把结果转成纯 JSON
-
attach.js- 运行在扩展内容脚本
- 注入
page-bridge.js - 把页面
postMessage转成扩展消息
-
sidepanel.js- 运行在侧边栏
- 请求读取结果
- 展示图片
什么时候优先用它
- 目标页面存在页面级 SDK、页面全局单例或业务前端挂载对象
- 需要访问的对象是
window.xxx - 需要跨世界通信
- 需要避免
#<Promise> could not be cloned
特别提醒
- 这个蓝图默认针对
kdocs.cn场景配置host_permissions - 如果目标站点不同,要同步改
matches、host_permissions - 如果要读取的不只是图片,优先在
page-bridge.js.tmpl里扩展序列化逻辑,不要直接把 SDK 原始对象往外传
本地验证建议
- 如果暂时不能直连真实 WPS 页面,优先先用
tests/mock-wps.html.tmpl - 这个测试页会模拟:
window.WPSOpenApi.ApplicationActiveView.Selectionrng.Value/cell.Value- 图片字段
LinkUrl为普通字符串或Promise
- 它适合先验证:
- 主世界桥接链路是否完整
postMessage前是否做了纯数据序列化SelectionChange自动同步是否正常
- 真实页面自动化验收时,默认优先直接打开 WPS 业务页面并验证
content-script -> page-bridge -> background/runtime的函数链路 side-panel交互页不再作为自动化必测项;是否展示符合预期,交给用户自行打开后反馈