飞书云文档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.不足之处

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433840.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进程的奥德赛:并发世界中的核心概念与动态管理

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

【轮式平衡机器人】——TMS320F28069片内外设之ePWM

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习! 引入 脉冲宽度调制(PWM)是一种对模拟信号进行数字编码的方法,硬件原理是根据相应载荷的变化来调制晶体管栅极或基极的偏置&…

代码随想录算法训练营第11天

20. 有效的括号 方法: 1. 如果 !st.empty() return false2.如果st.top() ! s[i] return false3. 如果 st.empty() return false注意: 以下这种写法 不满足 题目要求的第二点,不能以正确的顺序闭合 if(s[i] st.top()){return true;s…

世界级通讯社发稿-法新社海外发稿渠道-大舍传媒

世界级通讯社发稿-法新社海外发稿渠道-大舍传媒 美联社:全球最大的通讯社之一 美联社(Associated Press)是全球最大的通讯社之一,成立于1846年,总部位于美国纽约。该社拥有一支庞大的全球新闻团队,涵盖了…

x86使用PID模式检测磁盘是否存在--代码实现

磁盘 视频教程以及实际代码可以看这一个教程 ATA PIO Mode - OSDev Wiki 下面的大部分来自这一个网址的翻译 在磁盘的第一个扇区里面可以有4个描述分区的描述符 电脑有两个总线, Primary Bus, Secondary Bus, 这两个都有一个Msater Driver和一个Slave Driver According to t…

Ceph qos 限速

因为1 Mbps 1,000,000 bps rbd_qos_bps_limit、rbd_qos_read_bps_limit和rbd_qos_write_bps_limit都是与RBD(Rados Block Device)的QoS(Quality of Service,服务质量)相关的参数,用于限制I/O操作的速率。这…

【EI会议征稿通知】第四届人工智能,大数据与算法国际学术会议 (CAIBDA 2024)

第四届人工智能,大数据与算法国际学术会议 (CAIBDA 2024) 2024 4th International Conference on Artificial Intelligence, Big Data and Algorithms 由河南省科学院、河南大学主办,河南省科学院智慧创制研究所、河南大学学术发展部、河南大学人工智能…

【MATLAB源码-第157期】基于matlab的海马优化算法(SHO)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 海马优化器(Sea Horse Optimizer, SHO)是一种近年来提出的新型启发式算法,其设计灵感来源于海洋中海马的行为模式,特别是它们在寻找食物和伴侣时表现出的独特策略。海马因其独特…

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复,初步分析是vue发布3.4版本以后引起的兼容性问题。 问题截图: 1.isFucntion is not function,是由于vue升级后众多插件版本不匹配造成的问题 2.弹框…

iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践

移动端的自动化测试,最常见的是 Android 自动化测试,我个人觉得 Android 的测试优先级会更高,也更开放,更容易测试;而 iOS 相较于 Android 要安全稳定的多,但也是一个必须测试的方向,这个系列文…

计算机能转嵌入式吗?

我是电气工程转的嵌入式单片机方向。 那是2011年的事了,当时贴吧也是一片哀嚎。 有找不到工作的,也有干了7,8年月薪不过万的。 这么年过去了,如果你仔细观察每个行业,都有一群骂娘的,也一群混得风生水起的。 主要和圈子…

IDEA修改git提交者的信息

git提交后,idea会记录下提交人的信息,如果不修改提交人信息的话,会有一个默认值。避免每次提交都要填提交人信息,直接设置成自己想要的默认值,该怎么操作? 提交的时候在这里修改提交人信息 避免每次都去设置…

显示高考天数倒计时——vba实现

以下代码实现高考倒计时: Sub 高考倒计时() 高考日期 CDate("06,07," & Year(Date)) If Date > 高考日期 Then高考日期 CDate("06-07-" & Year(Date) 1) End If 年月日 Year(Date) & "年" & Month(Date) &am…

【Python】新手入门(5):# -*- coding: UTF-8 -*- 的作用详解

【Python】新手入门(5):# -*- coding: UTF-8 -*- 的作用详解 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础…

code: 500 ] This subject is anonymous - it does not have any identifying

项目场景: 相关背景: 使用idea 开发java 项目,前端页面请求 页面中相关的接口时,idea 控制台有报错信息出现,前端请求失败。 问题描述 问题: 使用idea 开发java 项目,前端页面请求 页面中相…

【Linux】磁盘情况、挂载,df -h无法看到的卷

文章目录 解决挂载、解决挂载完重启就消失1、查看linux下的硬盘挂载的空间、使用空间2、查看没有挂载的硬盘是否检测在系统中3、挂载 (挂载完,要在/etc/fstab 下面配置挂载信息 要不然重启挂载就消失了) 解决挂载、解决挂载完重启就消失 linu…

STP---生成树协议

STP的作用 a)Stp通过阻塞端口来消除环路,并能够实现链路备份目的 b)消除了广播风暴 c)物理链路冗余,网络变成了层次化结构的网络 STP操作 选举一个根桥每个非根交换机选举一个根端口每个网段选举一个指定端口阻塞非根,非指定端口 STP--生成树…

windows11配置电脑IP

windows11配置电脑IP 选择"开始>设置>“网络&Internet >以太网”。在 "属性"下,编辑IP地址,子网掩码,网关以及DNS。

【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0

目录 一、 Kubernetes 的概述 二、服务器配置 2.1 服务器部署规划 2.2服务器初始化配置 三、安装Docker/kubeadm/kubelet【所有节点】 3.1 安装Docker 3.2 添加阿里云YUM软件源 3.3 安装kubeadm,kubelet和kubectl 四、部署Kubernetes Master 五、部署Kube…

企业对接Walmart平台API流程 On-request Reports API(二)

对接On-request Reports API 1、对接指南1.1 报告生成时间1.2 报告保留期1.3 请求限制1.4 报告请求工作流如何申请报告第 1 步:申请取消报告第 2 步:获取报表可用性状态第 3 步:下载报告 URL 2、代码实现2.1、获取访问API的token2.2、构建公共…