飞书开发学习笔记(三)-利用python开发调试云文档和电子表格
飞书开发学习笔记(三)-利用python开发调试云文档和电子表格
一.建立Python飞书开发环境
首先还是进入开放平台下的API调试台
飞书开放平台:https://open.feishu.cn/app?lang=zh-CN
以获取"我的空间"下的文件清单为例,通过获取飞书API调试台提供的示例代码,建立Python飞书开发环境。

在下方可以切换到开发的示例代码:

import requestsurl = "https://open.feishu.cn/open-apis/drive/v1/files?direction=DESC&order_by=EditedTime"
payload = ''headers = {'Authorization': 'Bearer u-fMw0FpV'
}response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
注意:这里的代码中,headers里面有口令信息,即 ‘Authorization’: ‘Bearer u-fMw0FpV’
这个是系统生成的,是必填信息。
一共有python SDK,Python-Requests,Python-http.client三种方式,也就是利用三个不同的python库进行开发,理论上应该是SDK最强大,实际还未知。
Requests是一个比较常用的库,这里就用这个库示例代码吧。
将此代码复制到Python中,开发就可以开始。

OK,运行成功了,良好的开始。

二.Python飞书开发架构的设计
2.1辅助工具准备json
json是返回数据字符串的格式,通过json的类工具可以很方便的读取,导入json工具
import jsonjson_Data=json.loads(response.text)
# 打印返回体信息
print(json_Data)
# 打印电子表格信息
print(json_Data['data']['files'][1])
返回信息
{'created_time': '16991126', 'modified_time': '16991138', 'name': '测试表格', 'owner_id': 'ou_3bd053e263b2734a2cc', 'parent_token': 'nodcnEByngMucMb', 'token': 'SVT0sVnhh', 'type': 'sheet', 'url': 'https://test-cptojg6atdfe.feishu.cn/sheets/SVT0sRnhh'}
2.2利用飞书API查询某电子表格内的工作表
同上篇的方法,利用飞书API”获取工作表“来获取电子表格内的工作表关键信息

#API范例
#url = "https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/SVTnhh/sheets/query"
user_access_token="u-dYWo5tGit1Bkg4P9h0FoV"url="https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/" + sheet_token + "/sheets/query"
Authorization_value="Bearer "+user_access_token
payload = ''
headers = {'Authorization': Authorization_value}response = requests.request("GET", url, headers=headers, data=payload)
json_Data=json.loads(response.text)
# 打印返回体信息
print(json_Data)
# 将工作表id用数组存起来
sheet_ids= [ sheet_info['sheet_id'] for sheet_info in json_Data['data']['sheets']]
sheet_titles= [ sheet_info['title'] for sheet_info in json_Data['data']['sheets']]
print(sheet_ids)
print(sheet_titles)
sheet_ids就获得了电子表格内的工作表id,sheet_titles则获得了电子表格内的工作表title
2.3利用飞书API查询某工作表内单元格信息
飞书服务器端API为利用接口用于根据 spreadsheetToken 和 range 读取表格单个范围的值,返回数据限制为10M

由于不支持API调试台,只能仿照其它API格式写查询字符串
#API范例
# 官方API格式
#url = https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/:spreadsheetToken/values/:range
# 示例API格式
#url ='https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/shtcngNygNfuqhxTBf588jwgWbJ/values/Q7PlXT!A3:D200?valueRenderOption=ToString&dateTimeRenderOption=FormattedString'
#headers= 'Authorization: Bearer t-ce3540c5f02ac074d64fa90fa49621c0'user_access_token="u-dYWo5tGKmTTfL3m290w0l0Mw0FoV"
sheet0_id=sheet_ids[0]
sheet0_range="A1:B2"
url="https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/" + sheet_token + "/values/"+sheet0_id+"!"+sheet0_range+'?valueRenderOption=ToString&dateTimeRenderOption=FormattedString'
Authorization_value="Bearer "+user_access_token
payload = ''
headers = {'Authorization': Authorization_value}response = requests.request("GET", url, headers=headers, data=payload)
json_Data=json.loads(response.text)
# 打印返回体信息
# print(json_Data)
sheet0_values= json_Data['data']['valueRange']['values']
print(sheet0_values)
返回信息
[['A1', '测试1'], ['A2', '测试2']]

可以看到,读取成功了
2.4利用飞书API向某工作表单元格写入信息
上述读取的操作成功以后,写入应该就是类似方法,并不困难了。
下方就是写入数据的API,也不支持调试工具台,但也有参考代码。

spreadsheetToken 和 range 是必须的2个参数

下方是研究后的Python修改单元格值的代码:
#API范例
# 官方API格式
#url = https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/:spreadsheetToken/values
# 示例API格式
#url = PUT 'https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/shtcnWbJ/values'
# headers= {'Authorization: Bearer t-ce3540c5f0c074530';'Content-Type: application/json'}
# valueRange={"range": "Q7PlXT!A1:B2","values": [[ "Hello", 1],[ "World", 1]]}sheet0_modi_range=sheet0_id+"!"+"A3:B4"
#print(sheet0_modi_range)
url="https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/" + sheet_token + "/values"
#print(url)
Authorization_value="Bearer "+user_access_token
#print(Authorization_value)
headers = {'Authorization': Authorization_value,'Content-Type':"application/json; charset=utf-8"}
pay_load = json.dumps({'valueRange':{'range': sheet0_modi_range,'values': [["Hello",11],["World",12]]}})
#print(pay_load)
response = requests.request("PUT", url, headers=headers, data=pay_load)
json_Data=json.loads(response.text)# 打印返回体信息
print(json_Data)
返回结果
{'code': 0, 'data': {'revision': 10, 'spreadsheetToken': 'SVT0sanhh', 'updatedCells': 4, 'updatedColumns': 2, 'updatedRange': '885d89!A3:B4', 'updatedRows': 2}, 'msg': 'success'}
可以看到msg为success,修改单元格值成功
这个API是有点难度的,因为其类型不是一般的”GET“或"POST",而是"PUT"
关键点是pay_load 这个字符串不能像其它案例是空值,而是要把修改的单元格地址和值提前写进去
提前制作一个valueRange的json对象,内容为range地址,类型string和values值,类型为list
这个json对象要传入参数,还需要使用json.dumps()转为json字符串,这是最关键的一步,在此由于提前没有理解知识,
琢磨了一个小时,最后重要理解为什么参数类型错误从而修改后成功。
下图中,修改后的结果已经显示。

至此,利用python操作API获取电子表格中的工作表,修改某一单元格值已经成功。
相关文章:
飞书开发学习笔记(三)-利用python开发调试云文档和电子表格
飞书开发学习笔记(三)-利用python开发调试云文档和电子表格 一.建立Python飞书开发环境 首先还是进入开放平台下的API调试台 飞书开放平台:https://open.feishu.cn/app?langzh-CN 以获取"我的空间"下的文件清单为例,通过获取飞书API调试台提…...
爆火的正规号卡推广分销 流量卡分销代理平台
正规号卡推广和流量卡分销代理可以通过“聚量推客”申请 聚量推客上的号卡单价高 数据及时 结算快,你还可以搭配平台上的拉新产品各种推广场景,更值得拥有哦...
Gin框架入门实战系列教程之Gin环境搭建 Gin程序的热加载 Gin路由 GET POST PUT DELETE
Gin框架入门实战系列教程之Gin环境搭建 Gin程序的热加载 Gin路由 GET POST PUT DELETE 主讲教师:(大地) 在线文档见网盘下载: 百度网盘 请输入提取码 提取码:abcd 一、Gin介绍 Gin 是一个 Go (Golang) 编写的轻量级…...
浏览器自动播放音视频-前端实现方案
目录 前言 浏览器自动播放策略 策略详情: 实现方案 方案1: 互动后播放 方案2: 互动后出声 总结 前言 在开发中可能有遇到这样的需求,当用户打开页面后,需要自动播放视频或音频,按理说那就打开页面…...
HttpUtils工具类
作为Java开发程序员,需要我们经常写一些工具类来简化开发过程,我们自己肯定写过或者用过HttpUtils用来发送http请求,但是每次手写太繁琐了,于是就按照标准写了一个Http工具类,现在分享出来。 1.HTTP请求简介 HTTP(Hy…...
AI:59-基于深度学习的行人重识别
🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...
TCP编程及基础知识
一、端口号 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区分TCP端口号与UDP端口号独立端口用两个字节来表示 2byte(65535个) 众所周知端口:1~1023(1~255之间为众所周知端口ÿ…...
二百零一、Flink——Flink配置状态后端运行后报错:Can not create a Path from an empty string
一、目的 在尚硅谷学习用Flink配置状态后端的项目中,运行报错Exception in thread "main" java.lang.IllegalArgumentException: Can not create a Path from an empty string 二、Flink的状态后端(state backend)类型 (一)Memo…...
Python 爬虫基础
Python 爬虫基础 1.1 理论 在浏览器通过网页拼接【/robots.txt】来了解可爬取的网页路径范围 例如访问: https://www.csdn.net/robots.txt User-agent: * Disallow: /scripts Disallow: /public Disallow: /css/ Disallow: /images/ Disallow: /content/ Disallo…...
亚马逊云科技大语言模型的创新科技
陈老老老板🤴 🧙♂️本文专栏:生活(主要讲一下自己生活相关的内容)生活就像海洋,只有意志坚强的人,才能到达彼岸。 🧙♂️本文简述:亚马逊云科技大语言模型的创新科技 🧙♂️上…...
Qt 各种数据类型
目录 1. 基础类型 2. log 输出 3. 字符串类型 3.2 QByteArray 构造函数 数据操作 子字符串查找和判断 遍历 查看字节数 类型转换 3.3 QString 4. QVariant 4.1 标准类型 4.2 自定义类型 5. 位置和尺寸 5.1 QPoint 5.2 QLine 5.3 QSize 5.4 QRect 6. 日期和…...
电动车展示预约小程序的作用如何
电动车可以说是现在出行常见的方法,覆盖年龄广几乎是每家必备,也有不小大小品牌和经销商,市场需求较高,但在实际经营中,对经销商来时也面临着一些痛点: 1、品牌传播产品展示难 不同品牌竞争很大ÿ…...
「随笔」浅谈2023年云计算的发展趋势
在2023年,云计算的发展趋势将受到政治、经济、社会和科技四个维度的影响。以下是对这些维度的具体分析: 1.1 政治维度: 全球政策推动: 随着全球各国政策对云计算的重视程度不断提高,云计算服务将获得更广泛的市场准入…...
高性能三防工业平板电脑 防摔防爆电容屏工控平板
HT1000是一款高性能工业三防平板,10.1英寸超清大屏,厚度仅14.9mm,超薄机身,可轻松插入袋中,方便携带,搭载8核2.0GHz高性能CPU,行业领先的Android 11.0,设备性能大幅提升,…...
mac flutter pb解析报错:protoc-gen-dart: program not found or is not executable
在mac对pb文件转dart文件的时候报错:protoc-gen-dart: program not found or is not executable 原因是没有安装protoc-gen-dart或者protoc-gen-dart没有设置到环境变量中 解决办法: 1、安装protoc-gen-dart flutter pub global activate protoc_plu…...
PostgreSQL 连接是否要通过SSL,为什么使用SSL 连接后,业务部门会投诉我?
开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…...
Linux驱动开发——USB设备驱动
目录 一、 USB 协议简介 二、 Linux USB 驱动 三、 USB 设备驱动实例 一、 USB 协议简介 USB(Universal Serial Bus,通用串行总线)正如它的名字一样,是用来连接PC外设的一种通用串行总线,即插即用和易扩展是它最大的特点。所谓即插即用&am…...
微服务使用指南
微服务使用指南 1.初识微服务 微服务可以认为是一种分布式架构的解决方案,提供服务的独立性和完整性,做到服务的高内聚、低耦合。 目前服务架构主要包含:单体架构和分布式架构。 1.1 单体架构 单体架构:把所有业务功能模块都…...
MYSQL运维篇(已完结)
一、日志 1. 错误日志 2. 二进制日志 😎 介绍 😎 日志格式 😎 日志查看 😎 日志删除 3. 查询日志 4. 慢查询日志 二、主从复制 1. 概述 2. 原理 3. 搭建 4. 总结 三、分库分表 1. 介绍 🍤 问题分析 🍤…...
MapReduce性能优化之小文件问题和数据倾斜问题解决方案
文章目录 MapReduce性能优化小文件问题生成SequenceFileMapFile案例 :使用SequenceFile实现小文件的存储和计算 数据倾斜问题实际案例 MapReduce性能优化 针对MapReduce的案例我们并没有讲太多,主要是因为在实际工作中真正需要我们去写MapReduce代码的场…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
