飞书API(2):通过 Python 读取多维表数据

2024-04-01 06:44

本文主要是介绍飞书API(2):通过 Python 读取多维表数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇介绍了怎么通过官方的控制台调用飞书的 API 读取多维表数据,本篇介绍怎么通过 Python 读取多维表数据。
通过 Python 读取多维表主要分两步:

  • 第一步是获取 access_token;
  • 第二步是拿 access_token 读取数据。

先说第二步,因为这一步比较简单。

1、使用 Python 读取多维表数据

1.1 获取 demo

上一篇介绍了怎么查看接口文档并调试 API,接着往下讲。

官方查询多维表数据记录的 API 链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/search

打开 API 调试台,如果打不开从飞书开放平台右上角进去
image.png
在 API 调试台,找到【查询记录】的接口,索引是云文档>多维表格>记录>查询记录。也可以直接在 API 列表下搜索。
image.png

先获取下 access_token,左边 tenant_access_token 下点击刷新符号
image.png
上篇的多维表链接为:https://xxxxxxxxxx.feishu.cn/base/PtRdbPjCFa5Og5sry0lcD1yPnKg?table=tblVBqxDbGXOJZPv&view=vewjgHC22S,其中 PtRdbPjCFa5Og5sry0lcD1yPnKg 就是 app_token,tblVBqxDbGXOJZPv 就是 table_id,vewjgHC22S 就是 view_id。
本次依旧使用该表单进行测试,填写必填参数 app_token 和 table_id 即可开始调试。
image.png
成功获取到数据
image.png

然后点击“示例代码”,可以看到几种主流语言的参考代码。点击“Python - Requests”,鼠标移到代码区域,可以看到右边有一个复制的符号,点它复制代码,然后本地新建一个 Python 文件便可以测试通过requests请求多维表数据。
image.png

1.2 本地调试

在本地执行代码,结果如下,可成功获取到多维表数据。

注意:需要安装第三方包 requests。如果没有自行安装:命令行输入:pip install requests

image.png

简单修改下代码,将 tenant_access_token、app_token 和 table_id 通过变量替换,使得变得更通用,更容易维护。

"""注意:需要修改 tenant_access_token、app_token 和 table_id"""
import requests
import jsontenant_access_token = 't-g1043vmpMSGVOXBVWYATGQCV6NL43NBK2U7OHKM7'
app_token = 'PtRdbPjCFa5Og5sry0lcD1yPnKg'
table_id = 'tblVBqxDbGXOJZPv'url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search"
payload = json.dumps({})headers = {'Content-Type': 'application/json','Authorization': f'Bearer {tenant_access_token}'
}response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)

2、获取 access_token

为什么要频繁获取 tenant_access_token,因为一个 tenant_access_token 的有效期只有 2 小时。如果使用过期的 tenant_access_token,将无法请求到数据。

2.1 请求数据

到目前为止,每次需要读取数据都是在 API 调试台手动获取 tenant_access_token,为了使得程序更加自动化,需要去掉手动获取 tenant_access_token 的操作。
查看飞书的 API 文档,可以看到有一个接口可以获取到 tenant_access_token。
image.png
文档链接:自建应用获取 tenant_access_token。
从文档中可以看到,需要 2 个参数:应用的 app_id 和 app_secret。
应用 app_id 和 app_secret 的获取,可以从开发者后台点击应用名称,然后进入到详情页获取
image.png
image.png

在 API 调试台找到对应的 API 名称【自建应用获取 tenant_access_token】,请求体输入应用的 app_id 和 app_secret,点击开始调试便可获取到 tenant_access_token。
image.png

同样,点击“示例代码”>“Python - Requests”>复制代码。
image.png

然后在本地跑代码,结果如下,可成功获取到 tenant_access_token。
image.png

2.2 处理数据

通过 2.1 请求到的数据,还不能直接使用,需要对数据进行预处理,提取响应体中tenant_access_token的值。
提取方法相对比较简单,将返回的对象response转为字典结构,然后通过键tenant_access_token直接取即可。参考如下:

response.json()['tenant_access_token']

image.png

3、合并代码

分别将获取 tenant_access_token 和获取多维表数据的代码封装成一个函数,然后将关键的参数提取出来通过函数的参数进行传递,最终参考代码如下:

import requests
import jsondef get_tenant_access_token(app_id, app_secret):url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"payload = json.dumps({"app_id": app_id,"app_secret": app_secret})headers = {'Content-Type': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)# print(response.text)return response.json()['tenant_access_token']def get_bitable_datas(tenant_access_token, app_token, table_id):url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search"payload = json.dumps({})headers = {'Content-Type': 'application/json','Authorization': f'Bearer {tenant_access_token}'}response = requests.request("POST", url, headers=headers, data=payload)print(response.text)app_id = 'your_app_id'
app_secret = 'your_app_secret'
tenant_access_token = get_tenant_access_token(app_id, app_secret)
app_token = 'your_app_token'
table_id = 'your_table_id'
get_bitable_datas(tenant_access_token, app_token, table_id)

执行结果参考:
image.png

4、小结

使用 Python 自动读取多维表主要分两步:

  • 第一步是取应用的 app_id 和 app_secret 获取临时 tenant_access_token,传递给第二步;
  • 第二步是取 tenant_access_token 加上 多维表的标识(app_token、table_id)读取数据。

注意一点,如果是使用应用第一次读取某个多维表,需要在多维表为应用开启读取权限,详情参考上篇【3、创建多维表,并设置应用操作多维表的权限】。

这篇关于飞书API(2):通过 Python 读取多维表数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866476

相关文章

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在