哈喽,大家好,我又来了。见字如面,每篇锤炼!这是本公众号第208篇原创文章。
上篇文章的阅读量远超我的预期,这让我意识到,分享那些能开拓思维的内容也很有价值。未来,只要我遇到触动我心灵的资源,我仍会毫不犹豫地撰写“推荐”文章。
一番思考休整后,我们再次投入“口袋数据库”系列的多维表格实操练习。在上篇文章中,有读者朋友提出疑问,为何在 Python 与多维表格联动时,我们选择了 http.client 库而非市面上更为流行的 requests 库。
【实用】Python 联动多维表格:WebHook 从 0 到 1 实操(附代码)
答案其实很简单,我最初的确使用了 requests 库,但为了更贴合 WPS 的《AirScript文档》,后来才改为 http.client 库。这次,我们一起来探讨如何将文档中的 http.client 库迁移到 requests 库。稍作梳理,分享于你。
特别说明:本文设置小实验,你可以跟着一步步操作,边调试边琢磨,逐步消化知识点。实验代码(含 AI 互动记录)可在本公众号后台回复wgsy获取。
关于口袋数据库、多维表格、AirScript、WebHook等概念,我已在之前的文章中进行了一些阐述和介绍。即使你没看过前序文章,也完全不用担心。你可以直接跟着我完成这次实验,等体验到它的实用价值后,再回过头去翻阅往期的内容。口袋数据库
这次,我们再探讨一个叫“视图”的概念。在多维表格中,视图就像是同一份原始数据的“多角度展示”,它并不存储新的数据,而是为你提供了一种全新的方式来审视原始表格。
举个实际例子,对网络工程师来说,你可以把它理解成给 “端口表” 这类数据做的专属监控看板:
这些概念实际上借鉴了数据库领域中的“视图”,但在多维表格中表现得更为简洁。在数据库中,视图不仅包括这些简单的筛选展示,还可能涉及从原始表、库中根据条件进行筛选、聚合、关联等操作,从而展示出更为复杂的定制化结果。

观察上图,对于张三和李四来说,他们各自的视图就像是“专属的操作窗口”(例如,他们可以各自设置筛选条件)只展示他们负责的设备端口,无需在全量数据中搜寻。然而,这个窗口是“透明”的,当他们在这个视图中修改端口描述、状态等信息时,实际上是在修改底层原始表的记录。因此,汇总表会实时同步这些更改。
打个比方,这类似于网络中的“ VLAN 隔离+共享核心”模式:视图充当了 VLAN 的角色,将每个人的操作范围隔离开来;而原始表则像是核心交换机,统一存储所有数据。这种模式既确保了每个人操作的便捷性,又避免了维护多份重复的表格。
虽然“视图”的概念与本次实验没有直接关联,但这个知识点对于理解和运用多维表格以及数据库来说都非常重要。之前我未曾提及,所以借此机会稍作展开。
好了,让我们直接进入实验环节,使用 Python 的 requests 库来读取表格内容。
本次实验的目标是激活多维表格的 WebHook 功能,并使用 Python 代码与之联动,从而读取表格中的记录。

如何手工搭建出这样一个多维表格,可参考我前序文章。
《AirScript 文档》链接:
https://airsheet.wps.cn/docs/apitoken/intro.html
我们申请一个脚本令牌:
5dqDjde9RU3UhFc8IbpvKA

特别提醒:实验结束后,我会立即删除令牌。请务必获取你自己的令牌,并妥善保管。同一账号下通常仅支持一个有效令牌,忘记后可删除旧令牌重新生成。
之前我们通过 AirScript 获取表 ID 的脚本:

此时,在多维表格中,只有 1 张数据表,名字为“登记表”,ID 为“1”。
为什么我知道要获取数据表的内容,需要先知道它的表 ID 呢?答案就藏在《AirScript 文档》中。

使用Application.Record.GetRecords({ SheetId: xxx })方法,需要先知道 ID 值。
const records = Application.Record.GetRecords({ SheetId: 1 })console.log(records)return records我们在 WPS 上直接测试脚本:

可见,已成功获取端口表的内容。
我们查看并记录这个脚本的 webhook 链接:

https://www.kdocs.cn/api/v3/ide/file/481683053453/script/V2-2vgkfRg5Do5gMlUmy6ykQ0/sync_task
脚本令牌(APIToken)每人只有一个,而 WebHook 链接每个 AirScript 脚本有一个。
APIToken、WebHook 链接都有了,剩下的就是如何把 http.client 库的 Python 示例代码迁移改成 requests 库的了。
我们如何编写和修改代码呢?一个有效的方法是利用AI(如 AI 在线聊天、集成开发环境 IDE 内嵌 AI 功能)工具,直接向它们提出需求。这个方法我在之前的文章中已经多次介绍过。AI 赋能
# 导入requests库import requests# 1. 配置请求相关参数url = "https://www.kdocs.cn/api/v3/ide/file/481683053453/script/V2-2vgkfRg5Do5gMlUmy6ykQ0/sync_task"payload = {"Context": {"argv": {}}} # 直接用Python字典,无需手动转JSON字符串headers = {'Content-Type': "application/json",'AirScript-Token': "5dqDjde9RU3UhFc8IbpvKA"# 你的脚本令牌}# 2. 发送POST请求(requests会自动处理HTTPS连接、JSON序列化等)response = requests.post(url, json=payload, headers=headers)# 3. 打印响应结果(自动解码为UTF-8字符串,无需手动decode)print(response.text)本次,我使用的 IDE 是字节 TRAE 国内版。我们测试一下。

测试顺利,我们成功获取了端口表的记录。至此,无论我们使用 http.client 库还是 requests 库,都已经实现了 Python 脚本与 WPS 多维表格的联动功能。
再次强调数据安全的重要性。我目前使用的脚本令牌(APIToken)和 AirScript 脚本的 WebHook 链接地址都仅用于示例测试,对于你自己的真实数据,这些信息绝对不可泄露。
通过上面的代码,我们使用 Python 成功获取了多维表格 wgsy.dbt 中端口表的数据。然而,仔细观察,你会发现这些数据看起来有些“杂乱无章”。接下来,我们可以利用 Python 的基础知识,从中提取出我们所需的数据。
同样地,在利用Python进行字符串数据提取方面,借助AI工具,也比以前“轻松”了许多。AI 赋能
代码修改如下:
import requestsfrom pprint import pprintimport json# 1. 配置请求相关参数url = "https://www.kdocs.cn/api/v3/ide/file/481683053453/script/V2-2vgkfRg5Do5gMlUmy6ykQ0/sync_task"payload = {"Context": {"argv": {}}} # 直接用Python字典,无需手动转JSON字符串headers = {'Content-Type': "application/json",'AirScript-Token': "5dqDjde9RU3UhFc8IbpvKA"# 你的脚本令牌}# 2. 发送POST请求(requests会自动处理HTTPS连接、JSON序列化等)response = requests.post(url, json=payload, headers=headers)# 3. 打印响应结果(自动解码为UTF-8字符串,无需手动decode)## print(response.text)result = json.loads(response.text)pprint(result['data']['result']['records'])我们再次运行 Python 脚本:

好了,接下来,你想要怎么样的数据,就可以自助尝试处理了。
本次实验的相关示例代码,AI 聊天互动过程整理,我都整理放在本微信公众号后台,回复wgsy即可获取。
本文将 Python 第三方 requests 库与 WPS 的 AirScript(基于 JavaScript)相结合,通过 HTTP 协议实现了与多维表格的联动,成功读取了数据表的全量内容,同时也顺带介绍了多维表格与数据库中重要的“视图”概念。本次实操也清晰展示了从 Python 内置 http.client 模块迁移至 requests 库的便捷性。Requests 库的自动 JSON 序列化、HTTPS 处理、UTF-8 解码等特性,可以让多维表格的联动开发更高效。
需要特别补充几点实操注意事项:一是 AirScript 的脚本令牌(APIToken)为全局权限,并非仅针对单张表格生效,一旦泄露可能导致账号下所有多维表格数据被读取或篡改,务必严格保密并妥善管理;二是实操中数据表的 SheetId 需按自身表格的实际 ID 获取,并非固定为 1,直接照搬示例中的 ID 会导致调用失败;三是代码开发中需做好异常处理,网络错误、权限失效、服务限流等场景下,接口返回的response.text不一定是合法 JSON 格式,正式使用时建议先判断response.status_code响应状态码,避免脚本因解析失败崩溃。当然,查阅产品文档,官方手册,都是我们网络工程师的日常必备技能。
实际上,若多维表格中数据量较大(如上万行),全量获取数据后再筛选的方式并非最优解,后续可从分页查询、条件筛选等方向优化。对于多维表格和数据库的学习,无需一开始深究复杂技术细节,可从连接、增删改查等基础操作入手,结合实际应用不断实践打磨,兼顾学习与生产需求。
最后,我想再补充两句。为了演示的便利性,本“口袋数据库”系列采用了国内广泛使用的金山办公 WPS 产品进行整理。需要注意的是,WPS 的多维表格是在线的,对于涉及敏感信息等特定场景,最好使用离线本地部署的多维表格系统。市场上存在许多国外、国内,在线、离线,闭源、开源的多维表格产品,尽管它们在功能和特性上有所不同,但整体的使用思路是相似的,产品之间也会“相互致敬”(抄来抄去)。
附上广东省汕头市濠江区玉新街道玉石社区“崎石问天”作为配图。巨岩如柱,静立在蓝天下,仿佛在向苍穹诉说着海岛的千年故事。暖阳穿过枝叶,在石板路上投下斑驳光影,海风轻拂,连时光都跟着慢了下来,让人沉醉在这山海相依的诗意里。

今晚先分享这些,后续将继续梳理分享。
我知乎总目录 https://zhuanlan.zhihu.com/p/370526806 读者再创作目录 https://zhuanlan.zhihu.com/p/498090646
感谢阅读,欢迎关注点赞,转发分享。
觉得有帮助,特别认可,可打赏 1 元鼓励!
2026 年 2 月于广东汕头
(本人在家乡广东汕头工作和生活。汕头位于大陆海岸线与北回归线的交界处,是著名侨乡和“美食孤岛”,也是中国数字经济创新发展大会的永久会址。欢迎我的读者和同行朋友们有机会来汕头进行商务出差或旅游。如果你们有空来汕头,欢迎与我交流本地的风土人情和网络技术实践。我们的团队专注于大型数据中心和通信基础网的建设与运维,业务辐射华南乃至全国全球。欢迎交流洽谈合作。另,《网络工程师的Python之路》、《网络工程师的AI之路》已被多所院校、培训机构列为教材,也是 NetDevOps 生产工具书,欢迎购买支持。购书可加入读者交流群,享受更多增值服务。)