飞书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

相关文章

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v