飞书云文档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 pymysqlapp_id = "cli_xxxxx"
app_secret = "xxxx"#获取tenant_access_tokenurl1 = "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_tokenpayload = ''
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.不足之处

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DIY】钱包的“电子卫士”的制作

一、工作原理 钱包的“电子卫士”电路如图1所示,其核心元件是微型蜂鸣器专用音响集成电路A,它与压电陶瓷蜂鸣片B、电池G等组成了一个体积小巧、发声响亮的简易蜂鸣器。 平时,钱包通过尼龙线与插头XP相接,而XP插入插孔XS内&#x…

AndroidUI--setContentView

我们的Activity通常继承自Activity或者AppCompatActivity,这两个setContentView流程是不同的 一、继承自Activity 1、Activity.setContentView Activity中setContentVIew调用了getWindow().setContentView(view, params); getWindow返回的是mWindow,mWi…

iOS 中的 UITextField 如何设置才能只输入数字和小数点?

刚接触 iOS不久&#xff0c;接到一个iOS项目&#xff0c;其中有一个需求就是在一个 UITextField中只能输入数字和小数点&#xff0c;这个需求在Android中非常容易&#xff0c;只需要设置 <EditTextandroid:id"id/id_et_price"android:layout_width"match_par…

RedisDesktopManager连接Ubuntu的Redis失败解决办法

配置redis 1.设置redis在后台服务&#xff0c;修改配置文件 默认情况下是 no ,修改为yes&#xff0c;可以后台服务 2、设置redis端口&#xff0c;默认端口是6379&#xff0c;可以根据自己的需要&#xff0c;找到/et/redis/redis.conf文件, 修改port 3、设置密码 配置文件中…

ubuntu20.04“E: 软件包 vim 没有可安装候选”“/etc/apt/sources.list:7 中被配置了多次”解决方法

问题一&#xff1a;ubuntu20.04安装vim时提示“E: 软件包 vim 没有可安装候选” **解决&#xff1a;**更换下载&#xff0c;比如我原先使用的是清华源&#xff0c;后切换成阿里云源&#xff0c;ubuntu直接在“软件和更新”切换 问题一解决。 问题二&#xff1a;ubuntu20.04提…

JavaEE+springboot教学仪器设备管理系统o9b00-springmvc

本文旨在设计一款基于Java技术的教学仪器设备销售网站&#xff0c;以提高网站性能、功能完善、用户体验等方面的优势&#xff0c;解决现有教学仪器设备销售网站的问题&#xff0c;并为广大教育工作者和学生提供便捷的教学仪器设备销售渠道。本文首先介绍了Java技术的相关基础知…

华为昇腾系列——入门学习

概述 昇腾&#xff08;Ascend&#xff09;是华为推出的人工智能处理器品牌&#xff0c;其系列产品包括昇腾910和昇腾310芯片等。 生态情况 众所周知&#xff0c;华为昇腾存在的意义就是替代英伟达的GPU。从事AI开发的小伙伴&#xff0c;应该明白这个替代&#xff0c;不仅仅是…

【自动驾驶坐标系基础】Frenet坐标系和Cartesian坐标系的相互转换

Frenet坐标系和Cartesian坐标系的相互转换 2023.12.12 1 变量含义 Frenet和Cartesian相互转换即 [ s , s ˙ , s , d , d ˙ , d ] ↔ [ X , θ x , κ x , v x , a x ] [s,\dot{s},\ddot{s},d,\dot{d},\ddot{d}] \leftrightarrow[\boldsymbol{X},\theta_x,\kappa_x,v_x,a_…

【Unity开发】【VR】PICO项目在运行编辑器时无法正常显示游戏场景

【背景】 做了一个PICO项目&#xff0c;真机在手边时开发后用PC的Preview模式直接调试&#xff0c;真机不在手边时希望用VRTK的Simulation Rig&#xff0c;用键鼠模拟控制器输入进行快速调试。但是发现Simulation Rig状态下运行后&#xff0c;游戏场景变得很怪&#xff0c;很多…

机器学习之DeepSequence软件使用学习3-预测突变效应

import theano import numpy as np import sys import pandas as pd import scipy from scipy.stats import spearmanr%matplotlib inline import matplotlib.pyplot as plt我们将介绍加载模型和预测突变影响的基本函数。 下载预训练参数。 请首先使用 download_pretrained.s…

计算机软件分类、编程知识体系、编程工作岗位

计算机软件分类、编程知识体系、编程工作岗位 一、计算机软件分类二、计算机语言编程知识体系三、人工智能/机器学习工程师知识体系四、工作岗位 计算机软件分类、计算机编程知识体系、人工智能/机器学习工程师需要掌握的知识体系、计算机语言编程相关工作岗位。存此备查。 一、…

RLT8762D---添加service

0 Preface/Foreword 1 系统初始化LE profile过程 正常开机流程中&#xff0c;gap初始化完成之后&#xff0c;才能进行LE profile初始化。 1.1 添加服务 1.1.1 注册支持服务个数(GATT Server) 函数&#xff1a; server_init 目的&#xff1a;set the number of services th…

MySql缓冲池命中率

缓冲池 大小查看 show variables like innodb_buffer_pool_size; 太小的innodb_buffer_pool_size是不利于性能的提升 命中率查看 一 、 通过以下命令查看相关数据&#xff1a; show global status like Innodb_buffer_pool_read%;结果如下&#xff1a; 命中率公式&#xff1…

已解决com.netflix.client.ClientException Eureka客户端异常的正确解决方法,亲测有效!!!

已解决com.netflix.client.ClientException Eureka客户端异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 总结 在微服务架构中&#xff0c;Eureka作为服务发现组件&#xff0c;…

SpringBoot集成mail

发送邮件&#xff1a;SMPT、MIME&#xff0c;是一种基于"推"的协议&#xff0c;通过SMPT协议将邮件发送至邮件服务器&#xff0c;MIME协议是对SMPT协议的一种补充&#xff0c;如发送图片附件等 接收邮件&#xff1a;POP、IMAP&#xff0c;是一种基于"拉"的…

Zabbix监控容器MongoDB,报错:Unknown metric mongodb.server.status

在Zabbix中配置监控MongoDB容器时&#xff0c;如果遇到Unknown metric mongodb.server.status这样的错误&#xff0c;通常意味着Zabbix Agent尝试从MongoDB获取某个预定义的性能指标&#xff08;例如mongodb.server.status&#xff09;&#xff0c;但是未能成功识别或解析该指标…

GPT4+Python近红外光谱数据分析及机器学习与深度学习建模教程

原文链接&#xff1a;GPT4Python近红外光谱数据分析及机器学习与深度学习建模教程 第一&#xff1a;GPT4 1、ChatGPT&#xff08;GPT-1、GPT-2、GPT-3、GPT-3.5、GPT-4模型的演变&#xff09; 2、ChatGPT对话初体验 3、GPT-4与GPT-3.5的区别&#xff0c;以及与国内大语言模…

简易版axios实现-基于promise+XMLHttpRequest

/*** 目标&#xff1a;封装_简易axios函数_获取省份列表* 1. 定义myAxios函数&#xff0c;接收配置对象&#xff0c;返回Promise对象* 2. 发起XHR请求&#xff0c;默认请求方法为GET* 3. 调用成功/失败的处理程序* 4. 使用myAxios函数&#xff0c;获取省份列表展示*/functi…

[数据集][目标检测]芒果叶病害数据集VOC+YOLO格式4000张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4000 标注数量(xml文件个数)&#xff1a;4000 标注数量(txt文件个数)&#xff1a;4000 标注…

微信小程序开发系列(十六)·事件传参·data-*自定义数据

事件传参&#xff1a;在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参。 在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在事件处理函数中获取这些自定义数据,从而完成业务逻辑的开发。 在组件上通过data-"的方式定义需要传递的数据,其…