【Python飞书导出/下载在线文档】

飞书导出在线文档

调用飞书API,下载飞书在线文档:调用[API] 下载导出文件,[API] 创建导出任务,[API] 查询导出任务结果。不是在线文档可以直接调用下载API,在线文档需要3个步骤
在这里插入图片描述

创建应用,申请权限

创建应用。在开发者后台,根据实际需求,创建自建应用或者商店应用。

注意: 仅拥有 ISV 资质的用户可以创建商店应用。有关 ISV 的详细介绍,请参考如何入驻飞书开放平台。

申请权限。如果要调用 API,需要先获取接口调用权限;如果涉及到访问敏感字段,还需获取访问敏感字段的权限。
https://open.feishu.cn/document/server-docs/application-scope/introduction
在这里插入图片描述

获取 tenant_access_token

1.登录开发者后台,选择指定的自建应用。
2.在 基础信息 > 凭证与基础信息 页面,获取应用凭证 App ID 和 App Secret。
3.调用自建应用获取 tenant_access_token 接口,通过应用凭证 App ID 和 App Secret 获取自建应用的tenant_access_token。
在这里插入图片描述

代码

class Feishu_Download:

    def __init__(self):
        pass

    def export(self):
        token = 'XXX'
        # 连接飞书,获取token
        url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
        payload = {"app_id": "XXX", "app_secret": "XXX"}
        response = requests.post(url=url, json=payload)
        access_token = response.json()["tenant_access_token"]
        # 创建导出任务
        url1 = "https://open.feishu.cn/open-apis/drive/v1/export_tasks"
        headers = {"Content-Type": "application/json", "Authorization": "Bearer " + str(access_token)}  # 请求头
        payload1 = json.dumps({
            "file_extension": "xlsx",
            "token": token,
            "type": "sheet"
        })
        response = requests.request("POST", url=url1, data=payload1, headers=headers)
        print(response.json()["msg"])
        ticket = response.json()["data"]["ticket"]
        print(ticket)
        time.sleep(5)
        # 查看导出任务结果
        url2 = "https://open.feishu.cn/open-apis/drive/v1/export_tasks/" + ticket + "?token=" + token
        headers2 = {'Authorization': 'Bearer ' + str(access_token)}  # 请求头
        response = requests.request("GET", url2, headers=headers2)
        file_token = response.json()["data"]["result"]["file_token"]
        print(file_token)
        # 下载文件
        try:
            url = "https://open.feishu.cn/open-apis/drive/v1/export_tasks/file/" + file_token + "/download"
            payload = ''
            response = requests.request("GET", url, headers=headers, data=payload)
            with open("result.xlsx", "wb") as f:
                f.write(response.content)
            print('下载飞书在线文档成功')
        except Exception as e:
            traceback.print_exc()

如何获取云文档资源相关 token(id)?

1.通过浏览器地址栏获取 token (以下红色部分)(注意: 拷贝时 URL 末尾可能多余的 “#”)

文件夹 folder_token: https://sample.feishu.cn/drive/folder/cSJe2JgtFFBwRuTKAJK6baNGUn0
文件 file_token:https://sample.feishu.cn/file/ndqUw1kpjnGNNaegyqDyoQDCLx1
文档 doc_token:https://sample.feishu.cn/docs/2olt0Ts4Mds7j7iqzdwrqEUnO7q
新版文档 document_id:https://sample.feishu.cn/docx/UXEAd6cRUoj5pexJZr0cdwaFnpd
电子表格 spreadsheet_token:https://sample.feishu.cn/sheets/MRLOWBf6J47ZUjmwYRsN8utLEoY
多维表格 app_token:https://sample.feishu.cn/base/Pc9OpwAV4nLdU7lTy71t6Kmmkoz
知识空间 space_id(知识库管理员打开设置页面):https://sample.feishu.cn/wiki/settings/7075377271827264924
知识库节点 node_token:https://sample.feishu.cn/wiki/sZdeQp3m4nFGzwqR5vx4vZksMoe

2.通过开放平台接口获取
「云空间」资源的 token 和 type 获取

通过文件管理获取根文件夹 root_token 。
通过文件管理获取文件夹下文件清单 获取各种资源的 token 和 type。再通过 文档、电子表格、多维表格API 读写文档内容数据。

「知识库」资源的 token 和 type 获取

通过 知识库 获取知识空间列表获取 space_id。
通过 知识库 获取子节点列表获取 node_token。
通过 知识库 获取节点信息获取各种资源的 obj_token 和 obj_type。再通过 文档、电子表格、多维表格API 读写文档内容数据。

「文档」中嵌入的电子表格 spreadsheet_token (多维表格 app_token) 获取

通过 获取文档富文本内容 返回文档中嵌入的电子表格 spreadsheet_token 和 tableId (多维表格 app_token 和 tableId) 。例如:
电子表格(“_” 前面是 spreadsheet_token,后面是 tableId) MRLOWBf6J47ZUjmwYRsN8utLEoY_m7fMrN
多维表格(“_” 前面是 app_token,后面是 tableId) Pc9OpwAV4nLdU7lTy71t6Kmmkoz_tblC63QuAGFOJkU9

「电子表格」中嵌入的多维表格 app_token 获取

通过 获取表格元数据 返回电子表格中嵌入的多维表格 app_token 和 tableId 。例如:
多维表格(“_” 前面是 app_token,后面是 tableId) Pc9OpwAV4nLdU7lTy71t6Kmmkoz_tbliITl3F8GXBtKw

https://open.feishu.cn/document/server-docs/docs/drive-v1/export_task/export-user-guide
飞书开发者文档非常全面,此文章只是提供个思路。飞书API调试台对于每个接口都有代码示例,非常好用

【案例】 【案例】Python飞书机器⼈编辑表格 飞书机器⼈编辑表格 #!/usr/bin/env python # -*- coding: utf-8 -*- from .config import * import requests import json class Bot: def __init__(self, app): self.app = app # app为机器⼈ self.table = None # 共享⽂档的table_id self.sheet = None # 共享⽂档的sheet_id self.token = self.get_token() self.header = { "Authorization": self.token, "Content-Type": "application/json; charset=utf-8" } def get_token(self): """获取应⽤token""" url = url_api['url_token'] headers = {"Content-Type": "text/plain"} r = requests.post(url, headers=headers, json=self.app) return "Bearer " + json.loads(r.text)['tenant_access_token'] def use(self, table, sheet): self.table = table self.sheet = sheet return self def add_data(self, sheet_range="", values=[]): """增加数据,原始数据下移""" data = { "valueRange": { "range": self.sheet + sheet_range, "values": values } } r = requests.post(urls['插⼊数据'] % self.table, headers=self.header, json=data) return r.text def del_data(self, major=0, start_index=1, end_index=1): """删除数据""" data = { "dimension": { "sheetId": self.sheet, "majorDimension": ['ROWS', 'COLUMNS'][major], "startIndex": start_index, "endIndex": end_index } } r = requests.delete(urls['删除数据'] % self.table, headers=self.header, json=data) return r.text def union_cell(self, sheet_range, major=0): """合并单元格""" url = urls['合并单元格'] % self.table data = { "range": self.sheet + sheet_range, "mergeType": ['MERGE_ALL', 'MERGE_ROWS', 'MERGE_COLUMNS'][major] } r = requests.post(url, headers=self.header, json=data) return r.text def split_cell(self, sheet_range): """拆分单元格""" data = { "range": self.sheet + sheet_range } r = requests.post(urls['拆分单元格'] % self.table, headers=self.header, json=data) return r.text def set_style(self, sheet_range, kind): def set_style(self, sheet_range, kind): """设置单元格格式""" data = { "appendStyle": { "range": self.sheet + sheet_range, "style": self.style_list(kind) } } r = requests.put(urls['设置单元格格式'] % self.table, headers=self.header, json=data) return r.text def phone_to_open_id(self, mobile
### 飞书文档批量导出下载器的使用说明 飞书文档批量导出下载可以通过 `feishu2md` 工具实现,该工具可以将飞书文档转换为 Markdown 文件并进行本地化存储[^3]。以下是具体的功能描述和技术细节: #### 功能概述 `feishu2md` 是一款开源工具,旨在帮助用户高效地将飞书中的在线文档转化为标准的 Markdown 格式文件。其核心功能包括但不限于: - 支持单个或多个飞书文档的一键导出。 - 自动生成结构化的 Markdown 文件,保留原始文档的内容和格式。 - 提供灵活的命令行选项以便于自定义输出路径。 #### 安装方法 要使用此工具,需先完成安装过程。推荐通过以下方式获取最新版本: ```bash git clone https://gitcode.com/gh_mirrors/fe/feishu2md.git cd feishu2md pip install -r requirements.txt ``` #### 基本运行流程 1. **准备必要的认证信息** 用户需要登录飞书账户并通过 OAuth 授权机制生成 API Token 或 App Secret Key。这些凭证用于验证身份以及访问目标文档库的数据权限。 2. **执行转化脚本** 利用内置命令启动程序,并附加相应的参数来指定输入源(即待提取的文档列表ID)与期望的目标位置: ```bash python main.py --doc_ids="id1,id2,...,idN" --output_dir="./exported_docs" ``` 其中,“--doc_ids”接受逗号分隔的形式表示一组或多组独立对象;而“--output_dir”则用来设定最终产物存放的具体地址。 #### 注意事项 为了确保整个操作顺利无误,请注意以下几个要点: - 网络连接状态良好,因为过程中涉及频繁请求远程服务器接口; - 如果遇到编码异常情况,则可能是因为某些特殊字符未被妥善解析所致,在这种情况下建议调整默认编码集至 UTF-8 编码模式下重试一次即可恢复正常显示效果。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值