飞书开发学习笔记(三)-利用python开发调试云文档和电子表格

飞书开发学习笔记(三)-利用python开发调试云文档和电子表格

一.建立Python飞书开发环境

首先还是进入开放平台下的API调试台
飞书开放平台:https://open.feishu.cn/app?lang=zh-CN
以获取"我的空间"下的文件清单为例,通过获取飞书API调试台提供的示例代码,建立Python飞书开发环境。
在这里插入图片描述
在下方可以切换到开发的示例代码:
在这里插入图片描述

import requests

url = "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 json

json_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获取电子表格中的工作表,修改某一单元格值已经成功。

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

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

相关文章

51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机锅炉监控系统仿真设计( proteus仿真程序原理图报告讲解视频) 1.主要功能:讲解视频2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接(可点击): 51单片机锅炉监控系统仿…

企业电脑屏幕监控有哪些?如何实现电脑屏幕监控

企业电脑屏幕监控有哪些?如何实现电脑屏幕监控 下载使用安企神电脑屏幕监控软件 企业电脑屏幕监控是一种监测和记录员工在工作时间内在他们的计算机上执行的活动的技术。这种监控可以有多种目的,包括确保员工的生产力、确保数据安全性,或满…

Git 删除本地和远程分支

目录 删除本地和远程分支分支删除验证验证本地分支验证远程分支 开源项目微服务商城项目前后端分离项目 删除本地和远程分支 删除 youlai-mall 的 dev 本地和远程分支 # 删除本地 dev 分支(注:一定要切换到dev之外的分支才能删除,否则报错&…

46基于matlab的模拟退火算法(SA)优化车辆路径问题(VRP)

基于matlab的模拟退火算法(SA)优化车辆路径问题(VRP),在位置已知的条件下,确定车辆到各个指定位置的行程路线图,使得路径最短,运输成本最低。一个位置由一台车服务,且始于…

STM32中微秒延时的实现方式

STM32中微秒延时的实现方式 0.前言一、裸机实现方式二、FreeRTOS实现方式三、定时器实现(通用)4、总结 0.前言 最近在STM32驱动移植过程中需要用到微秒延时来实现一些外设的时序,由于网上找到的驱动方法良莠不齐,笔者在实现时序过…

集线器、交换机、网桥、路由器、网关

目录 集线器(HUB)交换机(SWITCH)网桥(BRIDGE)路由器(ROUTER)网关(GATEWAY)交换机和路由器的区别参考 集线器(HUB) 功能 集线器对数据的传输起到同步、放大和整形的作用 属于物理层设备 工作机制 使用集线器互连而成的以太网被称为共享式以太网。当某个主机要给另一个主机发送单…

webpack 高级

高级配置就是要进行 webpack 优化,让代码在编译、运行时性能更好 主要从以下角度去优化: 1、提升开发体验 2、提升打包构建速度 3、减少代码体积 4、优化代码运行性能 一、提升体验 1、SourceMap 为什么 打包出来的所有css和js合并成了一个文件&#…

手把手教程 | YOLOv8-seg训练自己的分割数据集

🚀🚀🚀手把手教程:教会你如何使用自己的数据集开展分割任务 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松…

一文读懂从 CPU 多级缓存 缓存一致性协议(MESI)到 Java 内存模型

文章目录 CPU 多级缓存 & 缓存一致性协议(MESI)CPU 多级缓存缓存一致性协议(MESI)缓存行(Cache line)四种缓存状态缓存行状态转换多核协同示例网站体验 MESI优化和引入的问题Store Bufferes & Inva…

python- 学生信息管理系统

偶然整的学生信息管理系统一个学生信息管理系统,包括录入学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、统计学生总数和显示所有学生信息等功能 开发环境要求本系统的软件开发及运行环境具体如下。 操作系统:Windows 10。 Python…

Object转List<>,转List<Map<>>

这样就不会局限在转换到List<Map<String,Object>>这一种类型上了.可以转换成List<Map<String,V>>上等,进行泛型转换虽然多了一个参数,但是可以重载啊注: 感觉field.get(key) 这里处理的不是很好,如果有更好的办法可以留言 public static <K, V> …

7-2 数论中的模幂运算

solution 欧拉函数法可以解决模幂运算 #include<stdio.h> #include<math.h> int main(){int a, m, n, r1;scanf("%d%d%d", &a, &m, &n);while(m){if(m&1) r(r*a)%n;a(a*a)%n;m>>1; }printf("%d", r);return 0; }给定伪…

AtCoder Beginner Contest 327 G. Many Good Tuple Problems(带标号二分图计数+有区别小球放入有区别盒子)

题目 一个长为n(n<30)的原始序列x&#xff0c;x[i]可以取值0或1 一个长为m(m<1e9)的点对序列(s,t)&#xff0c; s序列第i项和t的第i项&#xff0c;均可以取值[1,n]&#xff0c; 如果构造好s和t后&#xff0c;对任意都存在01序列x使得&#xff0c; 则称这个序列是合法…

Python入门:6个好用的Python代码,快来收藏!

文章目录 1.类有两个方法&#xff0c;一个是 new,一个是 init,有什么区别&#xff0c;哪个会先执行呢&#xff1f;2.map 函数返回的对象3.正则表达式中 compile 是否多此一举&#xff1f;4.[[1,2],[3,4],[5,6]]一行代码展开该列表&#xff0c;得出[1,2,3,4,5,6]5.一行代码将字符…

01-开发第一个Vue程序,了解Vue构造函数的配置项data,template,插值语法,el

Vue的快速入门 下载并安装vue.js Vue是一个基于JavaScript实现的框架, 要使用它就需要从Vue官网下载 vue.js文件 第一步&#xff1a;打开Vue2官网&#xff0c;点击下图所示的起步 第二步&#xff1a;继续点击下图所示的安装 第三步&#xff1a;在安装页面向下滚动&#xff0…

[架构之路-254/创业之路-85]:目标系统 - 横向管理 - 源头:信息系统战略规划的常用方法论,为软件工程的实施指明方向!!!

目录 总论&#xff1a; 一、数据处理阶段的方法论 1.1 企业信息系统规划法BSP 1.1.1 概述 1.1.2 原则 1.2 关键成功因素法CSF 1.2.1 概述 1.2.2 常见的企业成功的关键因素 1.3 战略集合转化法SST&#xff1a;把战略目标转化成信息的集合 二、管理信息系统阶段的方法论…

图解系列--路由器和它庞大的功能

03.01 何为路由器 路由器是指主要负责 OSI参考模型中网络层的处理工作&#xff0c;并根据路由表信息在不同的网络 之间转发IP 分组的网络硬件(图3-1)。这里的网络一般是指IP 子网&#xff0c;也可以称为广播域。此外&#xff0c;现在的路由器还会搭载其他各种各样的功能。 0…

mapbox使用marker创建html点位信息

mapbox使用marker创建html点位信息 codePen地址 mapboxgl.accessToken "pk.eyJ1IjoibGl1emhhbzI1ODAiLCJhIjoiY2xmcnV5c2NtMDd4eDNvbmxsbHEwYTMwbCJ9.T0QCxGEJsLWC9ncE1B1rRw"; const center [121.29786, 31.19365]; const map new mapboxgl.Map({container: &quo…

仿写知乎日报第三周

新学到的 本周新学习了FMDB数据库&#xff0c;并对Masonry的使用有了更近一步的了解&#xff0c;还了解了cell的自适应高度 FMDB数据库的介绍和使用&#xff1a;iOS——FMDB的介绍与使用 cell自适应高度和Mansonry自动布局 本周写了评论区&#xff0c;在写评论区的时候&…

XUbuntu22.04之解决桌面突然放大,屏幕跟着鼠标移动问题(一百九十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…