飞书开发学习笔记(二)-云文档简单开发练习
一.云文档飞书开发环境API
二.利用飞书API操作文件夹和云文档
2.1 获取我的空间目录下的文件清单
真实请求地址:
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"
}
{
"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"
}
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
}
]
}
}
2.3 获取云文档的详细内容
{
"code": 0,
"data": {
"document": {
"document_id": "PAiZdxxxx",
"revision_id": 7,
"title": "测试文档"
}
},
"msg": "success"
}
- 获取云文档的纯文本内容
{
"code": 0,
"data": {
"content": "测试文档\n测试文档\n"
},
"msg": "success"
}
content中返回了纯文本内容,包括换行符等字符
- 获取云文档的所有块
{
"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 获取电子表格的详细内容
- 获取电子表格和工作表信息
和云文档类似,通过另一个电子表格口令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": "885d",
"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:885d
Sheet2 id:xBuAyL
grid_properties则包含了行数和列数信息,以及冻结的行列数信息
- 先利用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": "885d",
"title": "Sheet1"
}
},
"msg": ""
}
与获取电子表格信息类似,是指定工作表信息,内容比较简单。
- 根据工作表id获取表中的具体单元格和值信息
调试工具台不支持API调试,但是回到开发文档,服务端API是有介绍的,因此只能通过开发程序来应用API能力读取单元格和值信息了。
这个就下次在开发环境中测试了。