【在WPS里学Python】丨1.2:🚀如何通过API接口操作WPS智能表格

不说话 ✘
不说话 ✘ Lv.2 潜力创作者KVP

Lv.2潜力创作者

👍学习从什么时候开始都不晚:我要开始学习了

不用下载, 打开WPS智能表格--PY脚本, 立即开学!


📢

很多学习Python的小伙伴,其实就是为了上班更轻松:

👉 数据自动更新到表格、报表等

例如:

  • 每天自动同步业务数据

  • 自动生成日报

  • 自动更新数据看板

  • AI分析结果自动写回智能表格

这次我们来学习调用接口,只用到一个三方库,超级简单!一看就会!


🚫

前面我们学习过:

write_xl()

例如:

write_xl([
["渠道","数量"],
["H5",1000]
],"A1")

但是它有个限制。

🚫 只能操作当前打开的表格


💡

如果:

一张表格的数据(在线表格、本地表格、后台数据)
    ↓
另一张智能表格

怎么办?

这时候就需要:

API接口


💡

其实不用把API想得太复杂。

你可以把它理解成:

👉 软件之间交流的语言。


例如:

Python
  ↓
API
  ↓
WPS智能表格

Python告诉WPS:

👉 我要读取数据

或者:

👉 我要修改数据


WPS收到以后:

👉 帮你完成操作


这就是API接口最核心的作用。


  1. 创建应用
💡

首先打开:

WPS开放平台

https://open.wps.cn/previous/developer/kdocs

💡

创建一个:

👉 企业自建应用

填写:

  • 应用名称

  • 应用描述

  • 应用图标

即可。

💡

这里可以简单理解成:

给你的Python程序办一张身份证。

后面所有接口调用。

都要依赖这个应用身份。


二、申请权限

💡

进入:

👉 权限管理

💡

搜索:表格

申请所有和表格相关的权限

💡

没有权限。

后面代码再正确,也无法调用。


三、发布应用

💡

进入:

👉 版本管理


点击发布

💡

要注意:

创建应用

发布应用

等待公司管理员进行审核,如果自己有管理权限的话,点击下方链接进行审核:

https://work.wps.cn/xz/app/audit


四、获取应用ID和密钥

💡

进入:

👉 应用信息

💡

可以看到:

  • 应用ID = "AKxxxxxxxxxx"

  • 应用密钥 = "xxxxxxxxxx"

💡

可以简单理解成:

账号
 +
密码

后面获取权限时要用到。


五、获取文件ID

💡
  1. 打开需要更新的智能表格

  1. 右键点击顶部智能表格的标签

  1. 点击文档信息

💡

可以看到下方的文件ID

💡

这是每个文件独一无二的编号,用这个号码才知道修改哪个文档。


六、写代码

💡

还记的我们在https://bbs.wps.cn/topic/85219中提到的吗:学会查文档=解锁自主探索能力!

现在基础信息已经准备好了, 我们开始根据WPS开放平台文档,进行开发:

https://open.wps.cn/documents/app-integration-dev/wps365/server/introduce

1.我们需要先获取:access_token

代码:

应用ID = "应用ID"
应用密钥 = "密钥"

import requests

def 获取访问令牌():
  响应 = requests.post(
    "https://openapi.wps.cn/oauth2/token",
    data = {"grant_type":"client_credentials", "client_id":应用ID, "client_secret":应用密钥}
  )
  访问令牌 = 响应.json()['access_token']
  return 访问令牌

print(获取访问令牌())
💡

这里其实和很多网站登录一样。

💡

输入:

应用ID
 +
应用密钥

返回:

访问令牌

相当于获得了一张临时通行证。

2. 获取sheet_id

代码:

def 获取工作表ID(访问令牌):

  响应 = requests.get(
  f"https://openapi.wps.cn/v7/airsheet/{文件ID}/worksheets",
  headers= {"Authorization":f"Bearer {访问令牌}"}
  )
  print(响应.text)
  工作表ID = 响应.json()['data']['sheets']["name" == "工作表1"]['sheet_id']
  return 工作表ID

print(获取工作表ID(访问令牌))
💡

这里获取了名为"工作表1"的sheet_id

3. 更新A1单元格

代码:

def 更新A1(访问令牌, 工作表ID, 内容):
    响应 = requests.post(
    f"https://openapi.wps.cn/v7/airsheet/{文件ID}/worksheets/{工作表ID}/range_data/batch_update",
    headers= {"Authorization":f"Bearer {访问令牌}"},
    json = {"range_data" : [{
    "op_type":"cell_operation_type_formula",
    "formula":内容
    }]}
    )
    return 响应.json()

print(更新A1(访问令牌,工作表ID,"我是尊贵的WPS会员。"))
💡

就是告诉WPS,我要在哪个工作薄的哪个工作表中,上传什么数据。


七、让AI帮你写代码

😎

这里顺便说一句。

现在完全可以把文档丢给AI。

然后告诉它:

根据WPS开放平台文档

帮我写一个:

获取Access Token

获取工作表ID

修改A1单元格

的完整示例
😎

很多时候:

AI一次就能生成正确代码。

😎

然后:

👉 测试

👉 调整

👉 修复报错

即可。

AI直接生成代码, 略微修改:

import requests


# ========== 配置区域 ==========

应用ID = "应用ID"
应用密钥 = "密钥"

文件ID = "文件ID"#右键点击表格标签,文档信息中


目标工作表名称 = "工作表1"

# ============================


def 获取访问令牌():
    响应 = requests.post(
        "https://openapi.wps.cn/oauth2/token",
        headers={
            "Content-Type": "application/x-www-form-urlencoded"
        },
        data={
            "grant_type": "client_credentials",
            "client_id": 应用ID,
            "client_secret": 应用密钥
        }
    )

    响应.raise_for_status()

    return 响应.json()["access_token"]


def 获取工作表ID(访问令牌):
    请求头 = {
        "Authorization": f"Bearer {访问令牌}"
    }

    响应 = requests.get(
        f"https://openapi.wps.cn/v7/airsheet/{文件ID}/worksheets",
        headers=请求头
    )

    响应.raise_for_status()

    工作表列表 = 响应.json()["data"]["sheets"]

    for 工作表 in 工作表列表:
        if 工作表["name"] == 目标工作表名称:
            return 工作表["sheet_id"]

    raise Exception(f"未找到工作表:{目标工作表名称}")


def 更新A1(访问令牌, 工作表ID, 内容):
    请求头 = {
        "Authorization": f"Bearer {访问令牌}",
        "Content-Type": "application/json"
    }

    数据 = {
        "range_data": [
            {
                "row_from": 0,
                "row_to": 0,
                "col_from": 0,
                "col_to": 0,

                # 根据文档:
                # formula = 公式或内容
                "op_type": "cell_operation_type_formula",
                "formula": 内容
            }
        ]
    }

    响应 = requests.post(
        f"https://openapi.wps.cn/v7/airsheet/{文件ID}/worksheets/{工作表ID}/range_data/batch_update",
        headers=请求头,
        json=数据
    )

    响应.raise_for_status()

    return 响应.json()


# ========= 主程序 =========

访问令牌 = 获取访问令牌()

工作表ID = 获取工作表ID(访问令牌)

结果 = 更新A1(
    访问令牌,
    工作表ID,
    "我是尊贵的WPS会员。"
)

print("更新结果:")
print(结果)
📌

AI生成的代码更加规范,更加通用全面。

📌

虽然代码写了很多行, 但是运行起来就几秒的事:

(我觉得这个运行速度还是挺慢的)


七、代码核心流程

📌

其实核心流程只有三步:

获取访问令牌

获取工作表ID

修改单元格

📌

飞书/钉钉/腾讯文档,市面大多数开放平台逻辑其实都差不多。

找到开发文档,把文档直接发给AI,让AI写代码;

现在直接让AI根据某平台来写代码,正确率也很高。

懂得Python一些基本原理之后,自己修改也很容易,给AI的提示词也会写得更加精准。


🥳

恭喜!

你已经成功学会用Python修改云端智能表格。

🔥

这意味着:

以后可以:

自动生成日报

自动同步后台数据

自动更新看板

自动写入AI分析结果

自动推送运营数据

🎉

小结 & 成就感

💡 你已经学会:

创建WPS开放平台应用

配置权限

发布应用

获取应用ID和应用密钥

获取Access Token

获取工作表ID

修改智能表格

第一次调用真实开放平台接口

给AI喂开发文档,让AI生成代码


✍️试着自己用AI生成代码,并且将整个流程跑通吧

📸 未来属于终身学习者:我要开始学习了

金融投资通识——股票、期货、期权、基金
@不说话 ✘
四川省
浏览 350
1
8
分享
8 +1
16
1 +1
全部评论 16
 
林振华
希望能出视频教程,这期跟着操作了还是报错
   广东省
举报
0
2
林振华
问ai,说是代码错误
· 广东省
举报
0
0
 
嗯
大佬好厉害呀,get新知识了
   湖北省
举报
0
0
 
拾光漫行
厉害 学习了
   重庆
举报
0
1
不说话 ✘
不说话 ✘Lv.2 潜力创作者KVP

Lv.2潜力创作者

向大佬学习
· 四川省
举报
0
0
 
HC.旋
HC.旋 WPS资深用户WPS寻令官Lv.2 潜力创作者

Lv.2潜力创作者

点赞支持
   福建省
举报
0
1
不说话 ✘
不说话 ✘Lv.2 潜力创作者KVP

Lv.2潜力创作者

向大佬学习WPS Query
· 四川省
举报
0
0
 
Hypnotist
Hypnotist WPS资深用户Lv.3 优质创作者WPS寻令官WPS产品体验官

Lv.3优质创作者

很符合你影刀优质开发者的身份
   四川省
举报
0
1
不说话 ✘
不说话 ✘Lv.2 潜力创作者KVP

Lv.2潜力创作者

我纯摸鱼党, 向8级大佬学习
· 四川省
举报
0
0
 
fbfbzz
学习了,看起来有点复杂。
   江苏省
举报
0
1
不说话 ✘
不说话 ✘Lv.2 潜力创作者KVP

Lv.2潜力创作者

好叭, 发布前就担心跨度会不会太大
· 四川省
举报
0
0
 
Tam Kingsley
Tam Kingsley WPS资深用户Lv.2 潜力创作者KVPWPS产品体验官WPS金话筒WPS寻令官

Lv.2潜力创作者

跟着王成大神在WPS中学python
   广东省
举报
0
3
不说话 ✘
不说话 ✘Lv.2 潜力创作者KVP

Lv.2潜力创作者

不是哥们
· 四川省
举报
0
0