新手写给新手:多维表格 AirScript 实用入门指南
大概两年前,因为工作原因选择了WPS多维表格,到现在走了两年的路程.我想,是时候总结一冠生涯了.是时候总结一下之前踩过的坑了.
和大多数小白一样,我属于那种对多维表格又爱又恨的人.很多功能做的还都不错,但是因为业务需求总是需要更多.于是,与其等待官方有所作为,不如自己动手突破多维表格的能力边界.用AirScript就是最好的选择.如今,我学会了接入API,使用webhook达到和外部软件的双向交互,从而使用互联网的各种有趣的厉害的工具,其中还有一个即将上线的微信小程序.
于是,出现了第一个问题: 我不会写代码. 相信很多初次选择多维表格就是因为自己不是计算机科班出身,自然就没有写过一行代码. 诚然, 今天和以往任何时候都不一样,因为有了AI大模型的出现,普通人也可以制作软件,不用写一行代码. 但相信我,如果你认为单靠大模型就可以实现自己的想法,那还是和"不写代码就像实现功能"一样天方夜谭.
但是这篇文章也不是说大模型一无是处,它是一个工具,用好了事半功倍,用不好就怎么都做不明白. 实际使用大模型的时候,必须针对Air Script的特点进行处理才能正常使用. 但是我也不打算直接给一个提示词或者skill,直接让大模型变成一个针对Air Script的特化模型,而是先教给你一些基本原理.只有懂得了原理,才能在出错的时候知道该干什么.
废话结束,正文开始:
首先,打开Air Script的页面.左边列出了所有脚本,右上是代码编辑区,右下是运行日志.
图片中展示的是批量获取字段照片的URL地址. 因为无论是本地的EXCEL,还是外部的API,认的不是照片本身,而是照片的URL地址(就类似于www.百度.com,但是后缀改成了.jpg或者.png, 如果直接输入链接的话浏览器会调用下载工具把这张照片下载下来)
首先,在写代码时,一定要注意使用英文标点而非中文标点. 就像我现在写文章的时候,使用的就是英文标点. 临时用的话就是切换到英文输入法,如果长期用的话就去自己的输入法里找找怎么切换.
写代码就像写文章, 只不过代码是可以执行的 . 一般的执行规律就是一行一行去执行. 比如示例代码中,解释一下就是:
1 加双//的就是注释,给人看的,不会运行
2 创建一个变量 Sheet ,这个变量的数值是自己写的字符串.变量名称你可以随便起,只要能自己看懂就行(不要用中文)
3 创建一个变量 id , 这个变量也是自己写的字符串
4 同上
5 注释,不会运行
6 for 循环功能 , 第一个小括号里分别是: 命令 i = i ; i小于等于 9999 的情况下都要运行 ; 运行完毕后i = i + 1 . 然后是大括号,一直括到第12行
7 创建一个变量 value , 它的数值是 Application.Sheets(第二行创建好的变量).RecordRange(for功能里的i,也就是当前循环次数 还有刚刚创建的id字段).Value
8 因为获取到的value 是个object类型的字段,相当于一个箱子,里面藏着有Value(注意大小写)以及其他内容.我们只需要Value,所以用value点Value的方式获取.
9 获取到的Value(也就是mid1)是一个复合数组,数组相当于多个数据的组合,比如[1,2,3].在图片场景中,因为用户可能上传很多照片,所以就用数组的形式包裹住了.要读取数组里的数据,就要用[]的方式,[0]就是获取第一个数据(数组是从0开始计算的).
然而,从数组中找到数据还没结束,这个数据本身也是一个object, 所以还需要获取它的LinkUrl变量.这时候拿到的才是真正的照片url地址
10 和第七行差不多.第七行是让value的数值等于多维表格里的某个字段的内容,相当于把多维表格里的某个数据拿过来.这一行就是把处理好的数据放到多维表格里面了.
11 打印,运行到这一行的时候,会在下方的运行日志里打印一条消息,消息内容就是这个图片的url地址.
12 括号结束,代表这个for循环功能包裹的代码执行结束了
13 没什么,就是多了个回车而已
14 同上
看懂这段代码,那么恭喜你,已经学会了如何从多维表格里批量获取图片url的操作,这就是多维表格获取数据最难的操作了.
我不会教太多写代码的东西, Air Script是基于JavaScript(JS)开发的,所以你可以直接搜索JS开发课程,学完前面的十到二十节课,就理解该怎么写了. 而大模型擅长的是js开发, 这一部分的代码可以让大模型代劳.
这里讲的是关于Air Script的特殊部分,就是如何获取,如何写入多维表格的数据,以及多维表格如何与外部API通信的数据.
写入数据:
const value = Application.Sheets(Sheet).RecordRange(i,id).Value
其中,Sheet是你的表格的名称,在下方的图片示例中, 应该写"监督报告",而非"总表","隐患记录"或者"维护表格"
再往后,i是字段所在的行数,id是字段名称.
作为脚本,我们肯定不能满足于获取特定行数的记录,或者像示例代码那样傻傻的写从1到9999的遍历,而是要精准抓取需要的行数,于是有了以下的代码:
const a = Context.argv.b[0]
这个是获取上下文内容的代码.上下文会从两个地方过来:
自动化流程中,使用比如"点击按钮时"作为触发条件时,动作选择"执行AirScript脚本".能看到里面有一个"脚本入参",那就是上下文.
其中,"键"指的是变量,也就是Context.argv.b[0]中的b,所以,在这里也应该填写"键"为b.
"值"需要点击右边的加号,找到"第1步按钮触发的记录",然后选择"记录ID",这样就可以获取"你按下按钮后,这一行"的ID了.
外部API使用webhook 运行这个脚本时,传入的content.这时候需要用 const c = Context.x的方式获取,不需要后面的argv.b[0]了.
然后是字段名称,需要用双括号包裹,而且前缀必须加@.
同时,这行代码还有几个变体:
const value = Application.Sheets(Sheet).RecordRange(i).Value 不写字段名,代表着获取的是整行的数据,用object类型表示,想要使用具体字段的话就需要再拆分.
const value = Application.Sheets(Sheet).RecordRange(a:b).Value 指的是从记录a到记录b的所有数据,当然,因为没写字段名,就相当于获取所有字段了.
const value = Application.ActiveSheet.RecordRange(i,id).Value 将具体的表格名称改为"当前表格",你从哪个表格按了按钮,这个表格就是ActiveSheet.
当然 , 这些东西不是我瞎编的,而是在https://open.wps.cn/documents/app-integration-dev/guide/dbsheet/Api/api-instro里面写的.这是WPS开放平台,理论上所有需要的东西在这里都能找到.
关于同外部API交互的内容,在https://bbs.wps.cn/topic/53432这篇文章中有所提及,不再赘述. 在这里就主要讲一下webhook 怎么使用
上述文章讲的是多维表格怎么调用外部API,但外部想要调用多维表格API应该怎么做呢?其实原理类似,只不过是要改两个内容: webhook地址和API token.然后就可以让外部以几乎相同的方式调用WPS的API了.
最后附上一段给大模型的提示词:
你是WPS 多维表格 AirScript 脚本编写专家,核心任务是帮编程新手编写、调试 AirScript 脚本,必须严格遵守以下核心规则:
一、核心前提:区分 AirScript 与 JavaScript(重中之重)
AirScript 是基于 JavaScript 开发的定制化同步脚本,通用 JS 语法(变量、循环、注释、数组 / 对象)可以直接使用;
致命禁忌:AirScript 不支持异步处理,严禁使用 async /await 语法!这是最核心的区别,绝对不能套用标准 JS 的异步代码;
你默认擅长通用 JavaScript,但绝对不能直接套用纯 JS 代码!所有与WPS 多维表格交互的逻辑,必须使用 AirScript 专属 API;
新手无需精通 JS,仅需掌握 JS 基础语法,你的工作是聚焦 AirScript 专属功能。
二、AirScript 基础编写规则(新手必守)
代码必须使用英文标点,严禁中文标点;
注释用 // 开头,仅用于说明,不执行;
变量命名禁止用中文,自定义名称即可;
代码按逐行执行逻辑编写。
三、AirScript 核心功能:多维表格数据读写(最关键)
1. 基础读写 API
js
表格名称:填写多维表格的真实表名;
简化写法:Application.ActiveSheet.RecordRange(行号, "@{{字段名}}").Value(当前激活表格);
字段名必须固定格式:@{{字段名称}};
读取的数据为object 类型,需要通过 .属性名 拆分取值。
2. API 语法变体
读取整行数据:RecordRange(行号).Value
读取范围数据:RecordRange(起始行:结束行).Value
3. 复杂数据处理(图片 URL 案例)
图片字段是数组 + 对象格式:值[0].LinkUrl 才是真实图片地址(数组从 0 开始计数)。
四、AirScript 上下文获取(自动化 / Webhook 专用)
按钮自动化触发:获取当前行 ID const a = Context.argv.b[0](脚本入参键为 b);
外部 Webhook 调用:获取传入参数 const c = Context.x;
支持多维表格与外部 API双向交互。
五、输出要求
代码极简、注释清晰、新手友好,全程同步写法;
禁用 async/await,禁用所有异步 JS 语法;
代码可直接复制运行,附带简单说明;
请根据我的需求,编写符合规则的 AirScript 代码。
有任何脚本相关的问题,可以在评论区友好讨论