飞书开发学习笔记(二)-云文档简单开发练习

news2024/11/29 4:45:27

飞书开发学习笔记(二)-云文档简单开发练习

一.云文档飞书开发环境API

首先还是进入开放平台
飞书开放平台:https://open.feishu.cn/app?lang=zh-CN
云文档相关API都在“云文档”目录中,之下又有"云空间",“文档”,“电子表格”,“多维表格”等子模块,
各自有对应的功能API。
在这里插入图片描述

二.利用飞书API操作文件夹和云文档

2.1 获取我的空间目录下的文件清单

对于一个企业用户而言,他拥有一个"个人空间"的目录,对应的就是"我的空间" root folder。
在这里插入图片描述
获取我的空间这个根目录下的文件清单的API如下:

真实请求地址: 
GET
https://open.feishu.cn/open-apis/drive/v1/files?direction=DESC&order_by=EditedTime

返回结果为Json字符串,由响应头和响应体构成,其中响应体为关键返回信息,如下:

{
  "code": 0,
  "data": {
    "files": [],
    "has_more": false
  },
  "msg": "success"
}

可以看到files:[]数组为空,也就是说,主目录下没有文件。
为了测试,我们在"我的空间"目录下新建一个"测试文档"的云文档以及一个“测试表格”的电子表格,以及一个"测试子目录"的子目录,然后再查询一次

在这里插入图片描述

返回的响应体结果如下:
code 0代表查询成功
files[]数组中不再是空,而是有三个元素,对应的分别是“测试子目录”,“测试表格”,“测试文档”

{
  "code": 0,
  "data": {
    "files": [
      {
        "created_time": "1691555",
        "modified_time": "1691555",
        "name": "测试子目录",
        "owner_id": "ou_3bd0cc",
        "parent_token": "nodcnfcMb",
        "token": "VGOkfIDnuf",
        "type": "folder",
        "url": "https://test-cptojg6atdfe.feishu.cn/drive/folder/VGOkrUnuf"
      },
      {
        "created_time": "16996",
        "modified_time": "169682",
        "name": "测试表格",
        "owner_id": "ou_3bd053a2cc",
        "parent_token": "nodcnEBAfcMb",
        "token": "SVT0Zh",
        "type": "sheet",
        "url": "https://test-cptojg6atdfe.feishu.cn/sheets/SVT0Rnhh"
      },
      {
        "created_time": "1699408",
        "modified_time": "1692455",
        "name": "测试文档",
        "owner_id": "ou_3bd053cc",
        "parent_token": "nodcnEcMb",
        "token": "PAiZdu4wuAe",
        "type": "docx",
        "url": "https://test-cptojg6atdfe.feishu.cn/docx/PAiZdunAe"
      }
    ],
    "has_more": false
  },
  "msg": "success"
}

files中每个元素有8个字段构成:
created_time:创建时间戳
modified_time:修改时间戳
name:文档名称
owner_id:文档拥有者Id
parent_token:父对象的令牌,这里也就是"我的空间"这个目录的令牌,可以通过这个令牌获取到父对象文件夹
token:本文档的令牌,也就是当前文档的"身份证",也可以通过这个令牌获取到这个文档
type:这里可以看到文件夹的类型是folder,电子表格的类型是sheet,而文档的类型是docx
url:当前文件的https链接地址,通过这个地址跳转访问

2.2 获取文件数据

这里的文件是不确定类型的,可能是doc,也可能是docx或者sheet
有了文件的token,就可以利用它来访问文档的元数据
在这里插入图片描述
返回数据

{
  "code": 0,
  "msg": "success",
  "data": {
    "metas": [
      {
        "doc_token": "doccnfbcef",
        "doc_type": "doc",
        "title": "测试文档",
        "owner_id": "ou_b13d41c02edc5f1abcef",
        "create_time": "1652045",
        "latest_modify_user": "ou_b13d1abcef",
        "latest_modify_time": "16520",
        "url": "https://sample.feishu.cn/docs/doccabcef",
        "sec_label_name": "L2-内部"
      }
    ],
    "failed_list": [
      {
        "token": "boxcachabcef",
        "code": 970005
      }
    ]
  }
}

其中code 0为成功返回
metas列表中则返回了文档的基本信息。
sec_label_name是保密等级名称
下面还有复制/移动/删除等操作的API函数,核心参数就是要拿到操作目录的token,以及当前文档的token。

2.3 获取云文档的详细内容

  1. 获取云文档基本信息

根据文档的document_id,在开通相关文档操作的API权限的情况下,就可以利用云空间->文档->新版文档下的API来获取文档的整个内容。
文档内容是由若干块组成的,所以获取文档以后,还需要获取块和子块的信息。
document_id就是文档的唯一id,在文档的地址中最后一部分即是,目前发现与当前文档的token是一致的。
在这里插入图片描述
获取文档基本信息,需要填入document_id
在这里插入图片描述
返回信息:
只有revision_id版本id和title

{
  "code": 0,
  "data": {
    "document": {
      "document_id": "PAiZdxxxx",
      "revision_id": 7,
      "title": "测试文档"
    }
  },
  "msg": "success"
}
  1. 获取云文档的纯文本内容
    在这里插入图片描述
    返回数据
{
  "code": 0,
  "data": {
    "content": "测试文档\n测试文档\n"
  },
  "msg": "success"
}

content中返回了纯文本内容,包括换行符等字符

  1. 获取云文档的所有块
    在这里插入图片描述
    返回数据
{
  "code": 0,
  "data": {
    "has_more": false,
    "items": [
      {
        "block_id": "PAiZdu4wuoNPxxxxx",
        "block_type": 1,
        "children": [
          "Vvabd8vG3ozusxxx"
        ],
        "page": {
          "elements": [
            {
              "text_run": {
                "content": "测试文档",
                "text_element_style": {
                  "bold": false,
                  "inline_code": false,
                  "italic": false,
                  "strikethrough": false,
                  "underline": false
                }
              }
            }
          ],
          "style": {
            "align": 1
          }
        },
        "parent_id": ""
      },
      {
        "block_id": "Vvabd8vGxxxx",
        "block_type": 5,
        "heading3": {
          "elements": [
            {
              "text_run": {
                "content": "测试文档",
                "text_element_style": {
                  "bold": false,
                  "inline_code": false,
                  "italic": false,
                  "strikethrough": false,
                  "underline": false
                }
              }
            }
          ],
          "style": {
            "align": 1,
            "folded": false
          }
        },
        "parent_id": "PAiZdu4wuoNPxxxxxxxx"
      }
    ]
  },
  "msg": "success"
}

从返回数据可以看到,在data下的items中有block的信息。
block的主要字段为
block_id为块的id
block_type为块的类型
children为子块的id列表
接下来为该block的类型名称,如page为正文, heading3则为标题3,名称后的列表则是子元素的格式和内容
text_run:为子元素类型
content:文本内容
text_element_style:文本元素的style,包粗体 下划线 删除线等等
子块的最后信息是父元素的id即parent_id
如以上,则获取了云文档的全部内容。

2.4 获取电子表格的详细内容

  1. 获取电子表格和工作表信息
    和云文档类似,通过另一个电子表格口令spreadsheet_token可以获取表格的信息
    在这里插入图片描述

返回信息

{
  "code": 0,
  "data": {
    "spreadsheet": {
      "owner_id": "ou_3bda2cc",
      "title": "测试表格",
      "token": "SVTxxxx",
      "url": "https://test-cptojg6atdfe.feishu.cn/sheets/SVhh"
    }
  },
  "msg": ""
}

返回了owner_id,title,token,url
获取工作表的详细信息
在这里插入图片描述

返回信息

{
  "code": 0,
  "data": {
    "sheets": [
      {
        "grid_properties": {
          "column_count": 20,
          "frozen_column_count": 0,
          "frozen_row_count": 0,
          "row_count": 200
        },
        "hidden": false,
        "index": 0,
        "resource_type": "sheet",
        "sheet_id": "885d89",
        "title": "Sheet1"
      },
      {
        "grid_properties": {
          "column_count": 20,
          "frozen_column_count": 0,
          "frozen_row_count": 0,
          "row_count": 200
        },
        "hidden": false,
        "index": 1,
        "resource_type": "sheet",
        "sheet_id": "xBuAyL",
        "title": "Sheet2"
      }
    ]
  },
  "msg": ""
}

返回的信息主体sheets列表中,共有2个元素,因此查询到两张工作表
Sheet1 id:885d89
Sheet2 id:xBuAyL
grid_properties则包含了行数和列数信息,以及冻结的行列数信息

  1. 先利用spreadsheet_token和sheet_id查询工作表信息
    在这里插入图片描述
    返回数据
{
  "code": 0,
  "data": {
    "sheet": {
      "grid_properties": {
        "column_count": 20,
        "frozen_column_count": 0,
        "frozen_row_count": 0,
        "row_count": 200
      },
      "hidden": false,
      "index": 0,
      "resource_type": "sheet",
      "sheet_id": "885d89",
      "title": "Sheet1"
    }
  },
  "msg": ""
}

与获取电子表格信息类似,是指定工作表信息,内容比较简单。

  1. 根据工作表id获取表中的具体单元格和值信息
    调试工具台不支持API调试,但是回到开发文档,服务端API是有介绍的,因此只能通过开发程序来应用API能力读取单元格和值信息了。
    4.
    在这里插入图片描述
    这个就下次在开发环境中测试了。

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

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

相关文章

LLM系列 | 26:阿里千问Qwen模型解读、本地部署

引言 简介 预训练 数据来源 预处理 分词 模型设计 外推能力 模型训练 实验结果 部署实测 对齐 监督微调(SFT) RM 模型 强化学习 对齐结果(自动和人工评估) 自动评估 人工评估 部署实测 总结 引言 人生自是有情痴,此恨不关风与月。 ​ 今天这篇小…

从零开始:开发你的第一个抖音小程序

抖音小程序提供了独特的机会,能够让你将自己的创意和内容传播给数百万的抖音用户。本文将带你走一趟开发抖音小程序的旅程,从零开始,无需编程经验。你将了解到如何准备开发环境、创建你的第一个小程序,以及如何将它发布到抖音平台…

辅助驾驶功能开发-功能规范篇(22)-9-L2级辅助驾驶方案功能规范

1.3.7.2 行人、骑行者(横向)AEB 系统 1.3.7.2.1 状态机 1.3.7.2.2 信号需求列表 同 1.3.2.1.2。 1.3.7.2.3 系统开启关闭 同 1.3.2.1.3。 触发横向 AEB 的目标包括横向运动的行人、骑行者(包括自行车、摩托车、电瓶车和平衡车上的行人)。 1.3.7.2.4 制动预填充 制动系统…

Global-aware siamese network for change detection on remote sensing images

遥感图像中的变化检测是以有效的方式识别观测变化的最重要的技术选择之一。CD具有广泛的应用,如土地利用调查、城市规划、环境监测和灾害测绘。然而,频繁出现的类不平衡问题给变化检测应用带来了巨大的挑战。为了解决这个问题,我们开发了一种…

Spring Boot 整合SpringSecurity和JWT和Redis实现统一鉴权认证

📑前言 本文主要讲了Spring Security文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力…

VPN网络环境下 本地客户端能连上mysql 本地启服务连不上mysql的原因

背景 公司mysql使用的是华为云RDS,由于要做一些测试验证,需要本地通过VPN直连华为RDS节点;找运维配置好网络后,本地 telnet 内网ip 3306 以及通过navicat客户端都能正常连接数据库;但是本地启动的服务就是连接不上。问…

【PyQt学习篇 · ⑩】:QAbstractButton的使用

文章目录 QAbstractButton简介子类化抽象类图标设置快捷键设置自动重复状态设置排他性点击设置点击有效区域可用信号 QAbstractButton简介 QAbstractButton 是一个抽象类,无法直接实例化,但它提供了很多在 PyQt 中使用按钮时常用的功能和特性。开发人员…

c++ 实现 AVL 树

AVL 树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家 G.M.Adelson-Velskii 和 E.M.Landis 在 1962 年发明了一…

实现Git增量代码的Jacoco覆盖率统计

今天我们给大家分享,如何使用Jacoco集合Git来做增量代码的覆盖率测试。实现的基本原理是: 使用Git的diff指令,计算出两个版本的差异;改造Jacoco源代码,只针对增量代码生成报告。 基本的功能滴滴的super-jacoco项目已…

使用Selenium IDE录制脚本

今天,我们开始介绍基于开源Selenium工具的Web网站自动化测试。 Selenium包含了3大组件,分别为:1. Selenium IDE 基于Chrome和Firefox扩展的集成开发环境,可以录制、回放和导出不同语言的测试脚本。 2. WebDriver 包括一组为不同…

2023年道路运输企业主要负责人证考试题库及道路运输企业主要负责人试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年道路运输企业主要负责人证考试题库及道路运输企业主要负责人试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人…

助力企业数智化转型,网易数帆是这样做的

伴随着云计算、大数据、人工智能等新兴技术的飞速发展,数字经济在国民经济中的重要性也变得愈发凸显。席卷全球的数字化和智能化浪潮不但深切地改变了人们的工作和生活方式,而且也给企业和组织带来了全新的发展机遇。 然而在数智化转型升级的道路上&…

免费外文文献检索网站,你一定要知道

01. Sci-Hub 网址链接:https://tool.yovisun.com/scihub/ Sci-hub是一个可以无限搜索、查阅和下载大量优质论文的数据库。其优点在于可以免费下载论文文献。 使用方法: 在Sci—hub搜索栏中粘贴所需文献的网址或者DOI,然后点击右侧的open即可…

分库分表自定义路由组件

1. 定义路由注解 Documented Retention(RetentionPolicy.RUNTIME) // Target用来表示注解作用范围,超过这个作用范围,编译的时候就会报错。 // Target(ElementType.TYPE)——接口、类、枚举、注解,Target(ElementType.METHOD)——方法 Target({Elem…

【Qt之事件过滤器】使用

介绍 事件过滤器是Qt中一种重要的机制,用于拦截并处理窗口和其他对象的事件。 它可以在不修改已有代码的情况下,动态地增加、删除一些处理事件的代码,并能够对特定对象的事件进行拦截和处理。 在Qt中,事件处理经过以下几个阶段&…

C++零散问题总结

什么是析构函数? return 0

图解Linux进程优先级

目录 1.什么是进程优先级? 2.进程优先级原理 3.查看进程优先级 4.修改进程优先级 4.1 setpriority函数原型 4.2 getpriority函数原型 4.3 sched_setscheduler函数原型 4.4 sched_getscheduler函数原型 4.5 sched_setparam函数原型 4.6 sched_getparam函数…

终极秘诀:打破无代码状态的小方法

终极秘诀:打破无代码状态的小方法 大家有没有遇到过不想写代码或学习的时候呢?这种情况下,你们会选择放松还是停下来呢?我很好奇大家是怎么度过这段时间的。我个人的情况是,当我不想写代码或学习的时候,我会…

Python基础入门例程39-NP39 字符串之间的比较(运算符)

最近的博文: Python基础入门例程38-NP38 牛牛的逻辑运算(运算符)-CSDN博客 Python基础入门例程37-NP37 不低于与不超过(运算符)-CSDN博客 Python基础入门例程36-NP36 谁的数字大(运算符)-CSD…

Hybrid App(原生+H5)开发

介绍 市面上主流的hybrid app框架主要有 React Native:由FaceBook开发,使用JavaScript和React来构建原生应用程序Flutter:由Google开发,使用Dart语言。Flutter使用自己的渲染引擎Ionic:基于 Web 技术(HTM…