找回密码
 会员注册
查看: 187|回复: 0

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

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64021
发表于 2024-9-13 16:31:37 | 显示全部楼层 |阅读模式
上一篇介绍了怎么通过官方的控制台调用飞书的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调试台,如果打不开从飞书开放平台右上角进去在API调试台,找到【查询记录】的接口,索引是云文档>多维表格>记录>查询记录。也可以直接在API列表下搜索。先获取下access_token,左边tenant_access_token下点击刷新符号上篇的多维表链接为:https://xxxxxxxxxx.feishu.cn/base/PtRdbPjCFa5Og5sry0lcD1yPnKg?table=tblVBqxDbGXOJZPv&view=vewjgHC22S,其中PtRdbPjCFa5Og5sry0lcD1yPnKg就是app_token,tblVBqxDbGXOJZPv就是table_id,vewjgHC22S就是view_id。本次依旧使用该表单进行测试,填写必填参数app_token和table_id即可开始调试。成功获取到数据然后点击“示例代码”,可以看到几种主流语言的参考代码。点击“Python-Requests”,鼠标移到代码区域,可以看到右边有一个复制的符号,点它复制代码,然后本地新建一个Python文件便可以测试通过requests请求多维表数据。1.2本地调试在本地执行代码,结果如下,可成功获取到多维表数据。注意:需要安装第三方包requests。如果没有自行安装:命令行输入:pipinstallrequests。简单修改下代码,将tenant_access_token、app_token和table_id通过变量替换,使得变得更通用,更容易维护。"""注意:需要修改tenant_access_token、app_token和table_id"""importrequestsimportjsontenant_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)1234567891011121314151617182、获取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。文档链接:自建应用获取tenant_access_token。从文档中可以看到,需要2个参数:应用的app_id和app_secret。应用app_id和app_secret的获取,可以从开发者后台点击应用名称,然后进入到详情页获取在API调试台找到对应的API名称【自建应用获取tenant_access_token】,请求体输入应用的app_id和app_secret,点击开始调试便可获取到tenant_access_token。同样,点击“示例代码”>“Python-Requests”>复制代码。然后在本地跑代码,结果如下,可成功获取到tenant_access_token。2.2处理数据通过2.1请求到的数据,还不能直接使用,需要对数据进行预处理,提取响应体中tenant_access_token的值。提取方法相对比较简单,将返回的对象response转为字典结构,然后通过键tenant_access_token直接取即可。参考如下:response.json()['tenant_access_token']13、合并代码分别将获取tenant_access_token和获取多维表数据的代码封装成一个函数,然后将关键的参数提取出来通过函数的参数进行传递,最终参考代码如下:importrequestsimportjsondefget_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)returnresponse.json()['tenant_access_token']defget_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)123456789101112131415161718192021222324252627282930执行结果参考:4、小结使用Python自动读取多维表主要分两步:第一步是取应用的app_id和app_secret获取临时tenant_access_token,传递给第二步;第二步是取tenant_access_token加上多维表的标识(app_token、table_id)读取数据。注意一点,如果是使用应用第一次读取某个多维表,需要在多维表为应用开启读取权限,详情参考上篇【3、创建多维表,并设置应用操作多维表的权限】。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 01:21 , Processed in 0.351099 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表