飞书云文档API操作详细介绍

img

1.场景分析

公司内部很多文档都是由多人进行维护的,随时发生变更,因此在利用这些数据的时候就需要直接读取云文档的数据,从而执行下一步动作。团队云文档api执行权限一般需要管理员审核才能使用。如果你就是管理员,那么恭喜你,你可以随意。下面具体介绍下如何开通云文档api操作权限,并使用python调用各种API。

2.开通云文档API操作权限

  1. 搜索开发者小助手,点击开发资源找到开发文档
    img
  2. 点击开发者后台
    img
  3. 创建企业应用
    img
  4. 开通所需权限
    img
  5. 版本发布,权限申请后发步才能进入审批环节
    img

申请成功后,飞书会发送一条权限开通成功的消息,收到之后,恭喜你可以进行下一步操作。

3.给予自建应用云文档编辑权限

access_token一般常用有两种:
tenant_access_token:访问应用非自有资源

  • 访问其他用户的文档、电子表格、多维表格需要取得文档所有者的授权
  • 需要应用开启机器人能力
  • 需要所有者打开对应的文档,在页面右上方「…」->「…更多」-> 「添加文档应用」入口添加
  • 访问 知识库需要获得知识库管理员的授权
  • 需要应用开启机器人能力
  • 需要知识库管理员打开知识库节点文档,在页面右上方「…」->「…更多」-> 「添加文档应用」入口添加

user_access_token:访问用户非自有资源

  • 访问其他用户的文档、电子表格、多维表格需要取得文档所有者的授权
  • 需要所有者打开对应的文档,在页面右上方「分享」入口添加
  • 访问其他用户文件夹需要取得文件夹所有者的授权
  • 需要所有者在我的空间找到目标文件夹,右键菜单中「分享」入口添加
  • 访问知识库需要获得知识库管理员的授权
  • 需要知识库管理员打开知识库节点文档,在页面右上方「分享」入口添加

注:user_access_token需要用户授权,脚本获取不到,建议使用tenant_access_token,之后想要编辑文档可以在文档中添加应用

云文档添加自己创建的应用,需要有文档的管理者权限
img

4.获取app_id和app_secret

img

5.程序调用api

飞书api开发文档:https://open.feishu.cn/document/server-docs/docs/faq

api调用实战

import json
import requests
import pymysql

app_id = "cli_xxxxx"
app_secret = "xxxx"

#获取tenant_access_token

url1 = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
payload = {
    "app_id": app_id,
    "app_secret": app_secret
}
response = requests.post(url1, json=payload)
# print(response.json())
tenant_access_token = response.json()["tenant_access_token"]
print(tenant_access_token)

#获取code,添加自定义的机器人应用到文档中,需要有文档管理权限,之后使用tenant_access_token即可

#获取表的元数据信息
sheet_token="xxx"
sheet_id="xxxx"
url="https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/" + sheet_token + "/sheets/"+sheet_id
Authorization_value="Bearer "+tenant_access_token
payload = ''
headers = {'Authorization': Authorization_value}

response = requests.request("GET", url, headers=headers, data=payload)
json_Data=json.loads(response.text)
row_count= json_Data['data']['sheet']['grid_properties']['row_count']
column_count= json_Data['data']['sheet']['grid_properties']['column_count']
# 打印返回体信息
print(row_count)
print(column_count)
print(ord('A'))
print(chr(65))



#查看表内容
sheet_range="A1:C"+str(row_count)
print(sheet_range)
url="https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/" + sheet_token + "/values/"+sheet_id+"!"+sheet_range+'?valueRenderOption=ToString&dateTimeRenderOption=FormattedString' 
Authorization_value="Bearer "+tenant_access_token
payload = ''
headers = {'Authorization': Authorization_value}

response = requests.request("GET", url, headers=headers, data=payload)
json_Data=json.loads(response.text)
# 打印返回体信息
sheet0_values= json_Data['data']['valueRange']['values']
print(sheet0_values)
# print(sheet0_values[0][0])

#向单个范围写入数据
# https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/:spreadsheetToken/values
# url="https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/" + sheet_token + "/values"
# Authorization_value="Bearer "+tenant_access_token
# sheet_range_in=sheet_id+"!A17:C18"
# payload = {
# "valueRange":{
#     "range": sheet_range_in,
#     "values": [
#       [
#         "Hello", 1,4
#       ],
#       [
#         "World", 1,5
#       ]
#     ]
#     }
# }
# headers = {
#     'Authorization': Authorization_value,
#     'Content-Type': 'application/json'
#            }

# response = requests.put( url, headers=headers, json=payload)
# print(response.text)

#获取筛选条件
# https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/:spreadsheet_token/sheets/:sheet_id/filter
url="https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/" + sheet_token + "/sheets/"+sheet_id + "/filter"
Authorization_value="Bearer "+tenant_access_token

payload = ''
headers = {
    'Authorization': Authorization_value,
    'Content-Type': 'application/json'
           }
response = requests.request("GET", url, headers=headers, data=payload)
json_Data=json.loads(response.text)
print(json_Data)

#删除筛选
# https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/:spreadsheet_token/sheets/:sheet_id/filter
# url="https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/" + sheet_token + "/sheets/"+sheet_id + "/filter"
# Authorization_value="Bearer "+tenant_access_token
# payload1 =''
# # payload2 ={
# #     "range": sheet_id+"!"+sheet_range,
# #     "col": "A",
# #     "condition": {
# #         "filter_type": "color",
# #         "compare_type": "backColor",
# #         "expected": ["#ffff00"]
# #     }
# # }

# headers = {
#     'Authorization': Authorization_value
#            }
# response = requests.request("DELETE", url, headers=headers, data=payload1)
# # response = requests.post( url,headers=headers, json=payload2)
# # print(response)
# print(response.text)


#创建筛选
url="https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/" + sheet_token + "/sheets/"+sheet_id + "/filter"
Authorization_value="Bearer "+tenant_access_token
payload ={
    "range": sheet_id+"!A:A",
    "col": "A",
    "condition": {
        "filter_type": "color",
        "compare_type": "backColor",
        "expected": ["#ffff00"]
    }
}



headers = {
    'Authorization': Authorization_value,
    'Content-Type': 'application/json'
           }
response = requests.get( url,headers=headers, json=payload)
# print(response)
print(response.text)


6.不足之处

飞书表格不能获取单元格的属性信息,只能查看单元格内容,使用很不方便。

  • 25
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值