给WPS表格写个“外挂”零基础JavaScript入门AirScript脚本开发第一次看到表格里密密麻麻的数据就头疼每天重复操作上百次复制粘贴感觉像机器人别急用10行代码就能让WPS表格自动干活。这不是魔法而是藏在WPS里的秘密武器——AirScript。很多人以为编程是程序员专属技能其实现代办公场景下写几行脚本就像用Excel公式一样自然。AirScript基于JavaScript语言不需要安装任何软件直接在WPS里就能运行。想象一下当你把手机号校验、数据清洗这些重复工作交给脚本每天至少能省出半小时咖啡时间。1. 为什么选择AirScript作为编程第一课传统编程学习往往从打印Hello World开始但对着黑底白字的控制台新手很难获得即时反馈。AirScript的特殊之处在于每写一行代码都能直接在表格里看到变化——给单元格上色、自动填充数据、高亮错误内容这些可视化效果让抽象的逻辑变得触手可及。WPS官方文档显示AirScript可以操作这些常见对象Application整个WPS应用入口ActiveSheet当前工作表Selection用户选中的区域Range特定单元格范围对比其他自动化方案AirScript有三大优势零环境配置无需安装Node.js或浏览器即时反馈代码修改后秒级生效对象直观操作的都是看得见的表格元素实际测试发现在WPS 2023个人版中通过开发工具→脚本编辑器即可打开编码界面所有API自动补全。2. 从零编写第一个手机号校验脚本让我们用具体案例理解编程基础概念。假设需要校验B列所有手机号错误数据标红只需要30行代码就能完成传统需要VLOOKUP条件格式的复杂操作。2.1 基础代码结构解析const API Application // 获取WPS应用接口 const sheet API.ActiveSheet // 当前活动工作表 const usedRange sheet.UsedRange // 已使用的数据范围 // 定义手机号正则规则1开头第二位3-9共11位数字 const PHONE_REGEX /^1[3-9]\d{9}$/ for (let row 1; row usedRange.RowEnd; row) { const cell sheet.Range(B${row}) // 获取B列当前行单元格 const value cell.Text // 读取单元格显示值 if (!PHONE_REGEX.test(value)) { cell.Interior.Color 0xFF0000 // 设置背景色为红色 } }这段代码包含编程四大基础要素变量API,sheet等存储对象的容器循环for遍历每一行数据条件判断if检查是否匹配正则规则方法调用Interior.Color设置单元格格式2.2 常见问题调试技巧新手常遇到的三类问题及解决方案问题现象可能原因检查方法脚本无任何效果未正确获取活动工作表添加console.log(sheet.Name)输出检查部分单元格未高亮正则表达式不匹配用[regex101.com]在线测试正则报权限不足错误尝试修改受保护区域先检查sheet.ProtectContents属性实际测试时发现WPS的列号从1开始计数与Excel VBA保持一致这与很多前端库的0起始索引不同需要特别注意。3. 脚本进阶让代码更健壮实用基础版本虽然能用但存在三个明显缺陷①全列校验性能差 ②无法自定义颜色 ③没有错误统计。通过以下改进让脚本达到生产可用水平。3.1 添加用户交互界面// 弹出对话框获取用户设置 const colorInput API.InputBox(输入高亮颜色值(十六进制), FF0000) const highlightColor parseInt(colorInput, 16) // 仅处理选中区域而非整个工作表 const selection API.Selection const startRow selection.Row const endRow selection.RowEnd3.2 增加统计功能在脚本末尾添加// 创建新工作表存放统计结果 const reportSheet API.Sheets.Add() reportSheet.Name 校验报告 reportSheet.Range(A1:B1).Value [[错误手机号, 所在位置]] let errorCount 0 // ...在循环内部增加 errorCount reportSheet.Range(A${errorCount1}).Value value reportSheet.Range(B${errorCount1}).Value B${row}改进后的脚本执行流程用户选择待校验区域弹出颜色选择对话框执行校验并高亮生成错误报告表显示完成提示框4. 举一反三改造为邮箱校验工具掌握手机号校验后只需修改核心匹配规则就能实现其他校验功能。邮箱校验的正则表达式更为复杂const EMAIL_REGEX /^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$/ // 在循环体内替换为 if (value !EMAIL_REGEX.test(value)) { cell.Interior.Color highlightColor errorCount }不同校验场景的参数对比校验类型正则表达式常见问题手机号^1[3-9]\d{9}$含空格、86前缀邮箱包含和.字符大小写敏感、特殊字符身份证15/18位校验码末尾X大写问题银行卡号16-19位数字含分隔符情况5. 效率提升常用代码片段封装为避免重复编写相似代码可以将通用功能封装为可复用函数function highlightInvalidCells(api, regex, color) { const selection api.Selection const sheet api.ActiveSheet // 获取选区行列范围 const rows [] for (let r selection.Row; r selection.RowEnd; r) { const row sheet.Rows(r) for (let c selection.Column; c selection.ColumnEnd; c) { const cell row.Columns(c) if (!regex.test(cell.Text)) { cell.Interior.Color color rows.push(r) } } } return [...new Set(rows)] // 返回包含错误的所有行号 } // 使用示例 const errorRows highlightInvalidCells( API, /^1[3-9]\d{9}$/, 0xFF0000 ) console.log(发现${errorRows.length}行错误数据)封装后的优势一套代码适配多种校验规则错误行号去重返回函数可保存为代码片段随时调用在最近一个客户数据清洗项目中通过组合使用手机号、邮箱校验脚本原本需要3小时人工检查的工作缩短到5分钟自动完成。特别是当数据量超过5000行时脚本方案的优势更加明显——不会因为疲劳导致漏检。
给WPS表格写个“外挂”:零基础JavaScript入门AirScript脚本开发
发布时间:2026/5/20 5:56:37
给WPS表格写个“外挂”零基础JavaScript入门AirScript脚本开发第一次看到表格里密密麻麻的数据就头疼每天重复操作上百次复制粘贴感觉像机器人别急用10行代码就能让WPS表格自动干活。这不是魔法而是藏在WPS里的秘密武器——AirScript。很多人以为编程是程序员专属技能其实现代办公场景下写几行脚本就像用Excel公式一样自然。AirScript基于JavaScript语言不需要安装任何软件直接在WPS里就能运行。想象一下当你把手机号校验、数据清洗这些重复工作交给脚本每天至少能省出半小时咖啡时间。1. 为什么选择AirScript作为编程第一课传统编程学习往往从打印Hello World开始但对着黑底白字的控制台新手很难获得即时反馈。AirScript的特殊之处在于每写一行代码都能直接在表格里看到变化——给单元格上色、自动填充数据、高亮错误内容这些可视化效果让抽象的逻辑变得触手可及。WPS官方文档显示AirScript可以操作这些常见对象Application整个WPS应用入口ActiveSheet当前工作表Selection用户选中的区域Range特定单元格范围对比其他自动化方案AirScript有三大优势零环境配置无需安装Node.js或浏览器即时反馈代码修改后秒级生效对象直观操作的都是看得见的表格元素实际测试发现在WPS 2023个人版中通过开发工具→脚本编辑器即可打开编码界面所有API自动补全。2. 从零编写第一个手机号校验脚本让我们用具体案例理解编程基础概念。假设需要校验B列所有手机号错误数据标红只需要30行代码就能完成传统需要VLOOKUP条件格式的复杂操作。2.1 基础代码结构解析const API Application // 获取WPS应用接口 const sheet API.ActiveSheet // 当前活动工作表 const usedRange sheet.UsedRange // 已使用的数据范围 // 定义手机号正则规则1开头第二位3-9共11位数字 const PHONE_REGEX /^1[3-9]\d{9}$/ for (let row 1; row usedRange.RowEnd; row) { const cell sheet.Range(B${row}) // 获取B列当前行单元格 const value cell.Text // 读取单元格显示值 if (!PHONE_REGEX.test(value)) { cell.Interior.Color 0xFF0000 // 设置背景色为红色 } }这段代码包含编程四大基础要素变量API,sheet等存储对象的容器循环for遍历每一行数据条件判断if检查是否匹配正则规则方法调用Interior.Color设置单元格格式2.2 常见问题调试技巧新手常遇到的三类问题及解决方案问题现象可能原因检查方法脚本无任何效果未正确获取活动工作表添加console.log(sheet.Name)输出检查部分单元格未高亮正则表达式不匹配用[regex101.com]在线测试正则报权限不足错误尝试修改受保护区域先检查sheet.ProtectContents属性实际测试时发现WPS的列号从1开始计数与Excel VBA保持一致这与很多前端库的0起始索引不同需要特别注意。3. 脚本进阶让代码更健壮实用基础版本虽然能用但存在三个明显缺陷①全列校验性能差 ②无法自定义颜色 ③没有错误统计。通过以下改进让脚本达到生产可用水平。3.1 添加用户交互界面// 弹出对话框获取用户设置 const colorInput API.InputBox(输入高亮颜色值(十六进制), FF0000) const highlightColor parseInt(colorInput, 16) // 仅处理选中区域而非整个工作表 const selection API.Selection const startRow selection.Row const endRow selection.RowEnd3.2 增加统计功能在脚本末尾添加// 创建新工作表存放统计结果 const reportSheet API.Sheets.Add() reportSheet.Name 校验报告 reportSheet.Range(A1:B1).Value [[错误手机号, 所在位置]] let errorCount 0 // ...在循环内部增加 errorCount reportSheet.Range(A${errorCount1}).Value value reportSheet.Range(B${errorCount1}).Value B${row}改进后的脚本执行流程用户选择待校验区域弹出颜色选择对话框执行校验并高亮生成错误报告表显示完成提示框4. 举一反三改造为邮箱校验工具掌握手机号校验后只需修改核心匹配规则就能实现其他校验功能。邮箱校验的正则表达式更为复杂const EMAIL_REGEX /^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$/ // 在循环体内替换为 if (value !EMAIL_REGEX.test(value)) { cell.Interior.Color highlightColor errorCount }不同校验场景的参数对比校验类型正则表达式常见问题手机号^1[3-9]\d{9}$含空格、86前缀邮箱包含和.字符大小写敏感、特殊字符身份证15/18位校验码末尾X大写问题银行卡号16-19位数字含分隔符情况5. 效率提升常用代码片段封装为避免重复编写相似代码可以将通用功能封装为可复用函数function highlightInvalidCells(api, regex, color) { const selection api.Selection const sheet api.ActiveSheet // 获取选区行列范围 const rows [] for (let r selection.Row; r selection.RowEnd; r) { const row sheet.Rows(r) for (let c selection.Column; c selection.ColumnEnd; c) { const cell row.Columns(c) if (!regex.test(cell.Text)) { cell.Interior.Color color rows.push(r) } } } return [...new Set(rows)] // 返回包含错误的所有行号 } // 使用示例 const errorRows highlightInvalidCells( API, /^1[3-9]\d{9}$/, 0xFF0000 ) console.log(发现${errorRows.length}行错误数据)封装后的优势一套代码适配多种校验规则错误行号去重返回函数可保存为代码片段随时调用在最近一个客户数据清洗项目中通过组合使用手机号、邮箱校验脚本原本需要3小时人工检查的工作缩短到5分钟自动完成。特别是当数据量超过5000行时脚本方案的优势更加明显——不会因为疲劳导致漏检。