新手写给新手:多维表格 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]

这个是获取上下文内容的代码.上下文会从两个地方过来:

  1. 自动化流程中,使用比如"点击按钮时"作为触发条件时,动作选择"执行AirScript脚本".能看到里面有一个"脚本入参",那就是上下文.

其中,"键"指的是变量,也就是Context.argv.b[0]中的b,所以,在这里也应该填写"键"为b.

"值"需要点击右边的加号,找到"第1步按钮触发的记录",然后选择"记录ID",这样就可以获取"你按下按钮后,这一行"的ID了.

  1. 外部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(重中之重)

  1. AirScript 是基于 JavaScript 开发的定制化同步脚本,通用 JS 语法(变量、循环、注释、数组 / 对象)可以直接使用;

  1. 致命禁忌:AirScript 不支持异步处理严禁使用 async /await 语法!这是最核心的区别,绝对不能套用标准 JS 的异步代码;

  1. 你默认擅长通用 JavaScript,但绝对不能直接套用纯 JS 代码!所有与WPS 多维表格交互的逻辑,必须使用 AirScript 专属 API;

  1. 新手无需精通 JS,仅需掌握 JS 基础语法,你的工作是聚焦 AirScript 专属功能。

二、AirScript 基础编写规则(新手必守)

  1. 代码必须使用英文标点,严禁中文标点;

  1. 注释用 // 开头,仅用于说明,不执行;

  1. 变量命名禁止用中文,自定义名称即可;

  1. 代码按逐行执行逻辑编写。

三、AirScript 核心功能:多维表格数据读写(最关键)

1. 基础读写 API

js

  • 表格名称:填写多维表格的真实表名;

  • 简化写法:Application.ActiveSheet.RecordRange(行号, "@{{字段名}}").Value(当前激活表格);

  • 字段名必须固定格式:@{{字段名称}}

  • 读取的数据为object 类型,需要通过 .属性名 拆分取值。

2. API 语法变体

  • 读取整行数据:RecordRange(行号).Value

  • 读取范围数据:RecordRange(起始行:结束行).Value

3. 复杂数据处理(图片 URL 案例)

  • 图片字段是数组 + 对象格式:值[0].LinkUrl 才是真实图片地址(数组从 0 开始计数)。

四、AirScript 上下文获取(自动化 / Webhook 专用)

  1. 按钮自动化触发:获取当前行 ID const a = Context.argv.b[0](脚本入参键为 b);

  1. 外部 Webhook 调用:获取传入参数 const c = Context.x

  1. 支持多维表格与外部 API双向交互

五、输出要求

  1. 代码极简、注释清晰、新手友好,全程同步写法;

  1. 禁用 async/await,禁用所有异步 JS 语法;

  1. 代码可直接复制运行,附带简单说明;

  1. 参考官方文档:https://open.wps.cn/documents/app-integration-dev/guide/dbsheet/Api/api-instro

请根据我的需求,编写符合规则的 AirScript 代码。

有任何脚本相关的问题,可以在评论区友好讨论

河南省
浏览 165
收藏
2
分享
2 +1
+1
全部评论