飞书文档 API 入门指南 —— 电子表格篇(python) - 飞书官网
解决方案

飞书文档API入门指南——电子表格篇(python)

飞书

2024-12-23

推荐理由​
一、打工人自我介绍​
二、背景需求​
三、开发流程​
四、总结​
作者:张艺可​
推荐理由​
本文源自于一个想偷懒的打工人,她想把周报数据自动更新到飞书表格里,于是从创建应用开始,研究了怎么用python调用飞书的API去往电子表格里插入数据​
​
一、打工人自我介绍​
😇本人是卑微打工人,日常有好多重复性和周期性工作​
以下内容由一个实习生想偷懒的念头而产生​
​
二、背景需求​
我想让每周定期更新的周报数据能够一键生成,写好的爬虫,下一步就是怎么把爬到的数据放到飞书电子表格里​
于是,就涉及了电子表格权限获取、表格创建、插入行列、写入数据、写入公式等内容​
​
三、开发流程​
Step 1 创建应用​
打开飞书工作台,右上角创建应用,来到飞书开放平台,创建自己的应用,设置一下应用名字和描述就行。​
Step 2 设置应用及发布​
创建好应用后要给自己的应用配置权限,以便让你的应用获得访问各种文档、日历、会议等等模块的权限 这里我懒得纠结,于是把云文档的所有权限都开了​
选择好权限之后,一定记得要发布!!!!自己创建的飞书应用只有发布了之后这个API才能生效​
Step 3 调用API​
找到自己创建应用里的应用凭证就可以调用api了​
使用下面的代码获得你的token,即tat,这个代表着你的身份​
​
​
url= "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/" ​
#应用凭证里的 app id 和 app secret ​
post_data = {"app_id": "cli_**********", "app_secret": ******************}​
r = requests.post(url, data=post_data)​
tat = r.json()["tenant_access_token"] ​
​
Step 4 设置飞书文件权限​
将飞书的权限设成获得链接可编辑,这也是为你操作电子表格做准备​
Step 5 接入飞书表格​
接下来你就可以操作飞书表格了!!但还需要确定一个操作的url​
URL​
但是!在每一类操作前都需要有一个url,它的结构如下:​
📌url:“https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/表格名称/请求”​
表格名称​
表格名称是这个表格的token,可以从这个文档的网址中找到​
表格通过浏览器打开,查看网址,样子如下,sh开头的就是这个表格的token,?后的sheet=XXXXXX是代表工作表名称​
下面范例中,表格名称为shtcnjGdHzBm7Qa85UXQYk9OPxh​
📌https://企业地址/sheets/shtcnjGdHzBm7Qa85UXQYk9OPxh?sheet=402cb1​
请求​
它是你要进行的表格操作的标志,进行插入数据和插入行列等操作的时候,请求也是不一样的​
不同功能的url最后一部分都不一样,具体参考你想要进行的操作的飞书文档(插入数据 - 服务端 API - 开发文档 - 飞书开放平台)​
🎉下面简单介绍部分常用功能​
插入数据​
向范围之前增加相应数据的行和相应的数据这里的输入是value,格式类似矩阵,向range里放入value中的这一个矩阵​
📌“range”:"{sheet名}!{单元格范围}​
💡这里的sheet名一定是飞书文档地址中,sheet=******,这里的名称,而不是自己给sheet命名的名称,一般是六个数字或字母​
​
​
#飞书文档的储存地址结构:https://企业地址/sheets/shtcnjGdHzBm7Qa85UXQYk9OPxh?sheet=402cb1 #一般来说sh开头为文档地址,sheet=后跟工作簿地址,这两块是代码需要引用的参数​
import json​
url = "https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/shtcnxuRDo9QJDBCeowEAQqUIvd/values" #写入的sh开头的文档地址,其他不变​
header = {"Content-Type": "application/json", "Authorization": "Bearer " + str(tat)} #请求头​
post_data = {"valueRange": {"range": "402cb1!C3:N8" ,"values": [[ "Hello", 1],[ "World", 1]]}} #在402cb1这个工作簿内的单元格C3到N8写入内容为helloworld等内容​
r2 = requests.put(url, data=json.dumps(post_data), headers=header) #请求写入​
print( r2.json()["msg"]) #输出来判断写入是否成功​
可输入的数据类型可以参考飞书官方的开发文档​
特殊的,输入公式,官方给出的格式是​
​
​
{​
“type”: “formula”,​
“text”: “=A1”​
}​
​
因此只需要将post_data变为你要写的公式,输入的value变成了一个字典,包含type和内容​
​
​
#写入公式​
post_data = {"valueRange": {"range": "PSGHlz!I2:I2" ,"values": [[{"type":"formula","text":"=IFERROR((E2-E9)/E9,0)"}]]}}​
​
插入行/列​
⚠️注意!上一种插入数据实际上只是写入,只对指定范围的数据进行覆盖​
想要真正的插入数据就需要先插入行列​
官方请求体示例如下:​
​
​
{​
“dimension”:{​
“sheetId”:“string”,​
“majorDimension”:“ROWS”,​
“startIndex”:0,​
“endIndex”:0​
},​
“inheritStyle”:“BEFORE”​
}​
​
具体请求流程同插入数据,把url中的value改成insert_dimension_range,就是更换请求​
示例​
在第一行后插入一行​
​
​
url = "https://open.feishu.cn/open- apis/sheets/v2/spreadsheets/shtcnl9XOiwOCVWEtjHuXKeT3zd/insert_dimension_range" #写入的sh开头的文档地址,其他不变​
header = {"Content-Type": "application/json", "Authorization": "Bearer " + str(tat)} #请求头​
post_data ={​
"dimension":{​
"sheetId":"PSGHlz",​
"majorDimension":"ROWS",#可选COLUMNS​
"startIndex":1,​
"endIndex":2​
},​
"inheritStyle":"AFTER"#可选BEFORE​
}​
r2 = requests.post(url, data=json.dumps(post_data), headers=header) #请求写入​
print( r2.json()["msg"]) #输出来判断写入是否成功​
​
四、总结​
只讲述了表格相关的基础操作,其他操作也基本是相似的,需要做的也就是改url​
掌握了基本的API使用,其余任何想要完成的云文档操作基本都能够通过API访问,参考飞书开发文档都能够找到调用方法。​
​
预约飞书企业效能顾问 深度诊断企业痛点,定制专属 AI 办公方案

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题

字节跳动旗下 AI 工作平台

联系我们立即试用