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

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

一.云文档飞书开发环境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.
    在这里插入图片描述
    这个就下次在开发环境中测试了。

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

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

相关文章

Antv/G2 自定义tooltip鼠标悬浮提示信息

Antv/G2 提示 - Tooltip 教程 Tooltip 提示信息文档 chart.line().position(label*value).color(type).tooltip(type*value, (type:string, value:number) > { return {name: type,value: value%}}) });demo&#xff1a; <!DOCTYPE html> <html lang&quo…

浅谈前端出现率高的设计模式

目录 六大原则&#xff1a; 23 种设计模式分为“创建型”、“行为型”和“结构型” 前端九种设计模式 一、创建型 1.构造器模式&#xff1a;抽象了对象实例的变与不变(变的是属性值&#xff0c;不变的是属性名) 2. 工厂模式&#xff1a;为创建一组相关或相互依赖的对象提…

MMdetection3.x个人笔记

1.在自定义数据集用训练出的权重进行可视化推理 input(jpg文件) model_config 这两个可以不用加前面的形参 然后用 \ 隔开 写上 --weight xx.pth python demo/image_demo.py data/coco_duck/train2017/10640.jpg work_dirs/solov2_r50_fpn_1x_coco/solov2_r50_fpn_1x_coco…

ChatGPT 实际上是如何工作的?

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ChatGPT 操作的两个主要阶段 我们再用谷歌来打个比方。当你要求谷歌查找某些内容时&#xff0c;你可能知道它不会——在你提出要求的那一刻——出去搜索整个网络来寻找答案。相反&#xff0c;谷歌会在其数…

Git extension 中合并工具kdiff3乱码问题

打开kdiff3合并工具&#xff0c;setting->region settings 设置下面的编码格式为utf-8就可以啦&#xff01; 注意&#xff1a;需要在合并工具中设置编码格式&#xff0c; 在git 中配置编码格式没有效果

LLM之Prompt(一):5个Prompt高效方法在文心一言3.5的测试对比

在Effective Prompt: 编写高质量Prompt的14个有效方法文中我们了解了14个编写Prompt的方法&#xff08;非常感谢原作者&#xff09;&#xff0c;那么这些Prompt在具体大模型中的效果如何呢&#xff1f;本文以百度文心一言3.5版本大模型在其中5个方法上做个测试对比。 第1条&am…

掌动智能:UI自动化测试工具的五大功能

在现代软件开发中&#xff0c;保证应用程序的质量和性能至关重要。UI自动化测试工具是一种关键的资源&#xff0c;它们能够有效地检查应用程序的用户界面&#xff0c;确保它们在各种情况下都能正常运行。本文将探讨UI自动化测试工具的功能有哪些! UI自动化测试工具的五大功能&a…

【SQL篇】一、Flink动态表与流的关系以及DDL语法

文章目录 1、启动SQL客户端2、SQL客户端常用配置3、动态表和持续查询4、将流转为动态表5、用SQL持续查询6、动态表转为流7、时间属性8、DDL-数据库相关9、DDL-表相关 1、启动SQL客户端 启动Flink&#xff08;基于yarn-session模式为例&#xff09;&#xff1a; /opt/module/f…

全自动批量AI改写文章发布软件【软件脚本+技术教程】

项目原理&#xff1a; 利用AI工具将爆款文章改写发布到平台上流量变现,通过播放量赚取收益 软件功能&#xff1a; 1.可以根据你选的文章领域&#xff0c;识别你在网站上抓取的文章链接进来自动洗稿生成过原创的文章&#xff0c;自动配图 2.同时还可以将管理的账号导入进脚本软…

oracle体系结构

oracle数据库主要有三种文件: control,log,dbf文件。 oracle实例是oracle内存和进程的统称。一个数据库一般对应一个实例。 多个实例对用一个数据库就是oracle的rac技术。 这样比如有100个用户连接数据库&#xff0c;可以让50个用户连接实例1&#xff0c; 另外50个用户连接用…

Filter 和 Listener

Filter 表示过滤器。是JavaWeb三大组件&#xff08;Servlet、Filter、Listener&#xff09;之一。 过滤器可以把对资源的请求 拦截 下来。浏览器可以访问服务器上所有的资源&#xff0c;而在访问到这些资源之前可以使用过滤器拦截下来&#xff0c;也就是说在访问资源之前会先经…

Android性能优化--Perfetto用SQL性能分析

Android性能优化–Perfetto用SQL性能分析 文章目录 Android性能优化--Perfetto用SQL性能分析介绍Perfetto SQL 基础使用 Perfetto SQL 进行性能分析总结 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134167741 最新更新地址 https://gitee.com/chenjim/che…

什么是本地存储的有效期?

前言 本地存储是一种在Web开发中常用的客户端存储数据的方式&#xff0c;它可以让网页应用程序在用户的浏览器中存储和检索数据&#xff0c;而无需依赖服务器来保存信息。本地存储的有效期是指数据存储在用户的设备上可以被访问和保留的时间段。在本地存储中&#xff0c;有两种…

嵌入式发展历史

MPU、MCU、SoC、Application Processors 在一个电子系统中&#xff0c;处理器占据最重要的位置&#xff0c;被称为中央处理器单元&#xff08;CPU&#xff1a;Central Processing Unit&#xff09;。它从IO设备读取数据&#xff0c;处理&#xff0c;然后输出。 CPU的发展历史…

【RabbitMQ】RabbitMQ 消息的可靠性 —— 生产者和消费者消息的确认,消息的持久化以及消费失败的重试机制

文章目录 前言&#xff1a;消息的可靠性问题一、生产者消息的确认1.1 生产者确认机制1.2 实现生产者消息的确认1.3 验证生产者消息的确认 二、消息的持久化2.1 演示消息的丢失2.2 声明持久化的交换机和队列2.3 发送持久化的消息 三、消费者消息的确认3.1 配置消费者消息确认3.2…

系统设计中的缓存技术:完整指南

Image.png 缓存是软件工程中用于提高系统性能和用户体验的基本技术。它通过临时存储频繁访问的数据在缓存中&#xff0c;缓存比数据的原始来源更容易访问。 作为一名软件工程师&#xff0c;了解缓存以及它在不同类型的系统中的工作方式是至关重要的。在本文中&#xff0c;我们将…

基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小

文章目录 基于AOSP源码Android-10.0.0_r41分支编译&#xff0c;framework开发&#xff0c;修改系统默认字体大小 基于AOSP源码Android-10.0.0_r41分支编译&#xff0c;framework开发&#xff0c;修改系统默认字体大小 主要修改一个地方就行 代码源码路径 frameworks/base/co…

旅游业为什么要选择VR全景,VR全景在景区旅游上有哪些应用

引言&#xff1a; VR全景技术的引入为旅游业带来了一场变革。这项先进技术不仅提供了前所未有的互动体验&#xff0c;还为景区旅游文化注入了新的生机。 一&#xff0e;VR全景技术&#xff1a;革新旅游体验 1.什么是VR全景技术&#xff1f; VR全景技术是一种虚拟现实技术&am…

【C++初阶(四)aoto关键字与基于范围的for循环】

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

python实现MC协议(SLMP 3E帧)的TCP服务端(篇二)

python实现MC协议&#xff08;SLMP 3E帧&#xff09;的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样&#xff0c;可以使用现成的pymodbus模块去实现。但是&#xff0c;我们可以根据协议帧进行组包&#xff0c;自己去实现帧的格式&#xff0c;而这一切可以基于socket模…