python 飞书API调用——电子表格操作

为了将爬出来的数据写入到飞书的电子表格里,这里就需要用到飞书提供的api了

目录

  • Step 1 创建应用
  • Step 2 设置应用及发布
  • Step 3 调用API
  • Step 4 设置飞书文件权限
  • Step 5 接入飞书表格
    • 插入数据
    • 插入行/列

Step 1 创建应用

打开飞书工作台,右上角创建应用,来到飞书开放平台,创建自己的应用,随便设置一下应用名字和描述就行。
python 飞书API调用——电子表格操作_第1张图片

Step 2 设置应用及发布

要给自己的应用配置一下权限
这里我懒得纠结,于是把云文档的所有权限都开了
python 飞书API调用——电子表格操作_第2张图片
==一定记得要发布!!!!==自己创建的飞书应用只有发布了之后这个API 才能生效

Step 3 调用API

找到自己创建应用里的应用凭证就可以调用api了,返回的tat就是代表着身份的token

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 设置飞书文件权限

将飞书的权限设成获得链接可编辑
python 飞书API调用——电子表格操作_第3张图片

Step 5 接入飞书表格

url:“https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/sheet名称/请求”

“range”:"{sheet名}!{单元格范围}

这里的sheet名一定是飞书文档地址中,sheet=****,这里的名称,而不是自己给sheet命名的名称,一般是个串乱七八糟的六位字符

下面简单介绍部分常用功能

插入数据

向范围之前增加相应数据的行和相应的数据
这里的输入是value,格式类似矩阵,向range里放入value中的这一个矩阵

#飞书文档的储存地址结构: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变为

 #写入公式
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最后一部分都不一样,具体参考[飞书开发文档(请求部分http url)](https://open.feishu.cn/document/ukTMukTMukTM/uIjMzUjLyIzM14iMyMTN)
示例:在第一行后插入一行

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"])  #输出来判断写入是否成功

(持续更新中。。。待添加更多操作示例)

你可能感兴趣的:(飞书,json,restful,python)