# feishu_export **Repository Path**: BlueRocket/feishu_export ## Basic Information - **Project Name**: feishu_export - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-10 - **Last Updated**: 2026-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # feishu-export-api 用飞书开放平台 API 把云文档导出为 Markdown / docx 的脚本。 > 适用于**你自己的应用能访问到的文档**(应用已在文档协作人里)。对"带密码的他人分享链接", > 见同目录其他方案或参考本仓库配套的浏览器导出工具。 ## 依赖 - Python 3.9+(仅标准库 `urllib`,无需第三方包) ## 1. 准备飞书自建应用 1. 到 [飞书开放平台](https://open.feishu.cn) → 开发者后台 → 创建/进入你的**企业自建应用**。 2. 在「权限管理」开通并**发布版本**: - `docx:document`(读取云文档内容) - `drive:drive`(云空间文件导出) - 权限修改后必须到「版本管理与发布」发布一个新版本,否则不生效。 3. 把目标文档分享给该应用:文档右上角「分享」→ 添加应用/应用负责人为**可阅读**协作者。 - 漏掉这步会报 `HTTP 403 code=1770032`。 ## 2. 配置凭证(二选一) 脚本读取顺序:**环境变量**优先,其次 `.env` 文件。 ### 方法 A:注册表环境变量(推荐,Windows) 在**新开的终端**里执行(值替换为开发者后台的「凭证与基础信息」): ```cmd setx FEISHU_APP_ID "cli_你的AppId" setx FEISHU_APP_SECRET "你的AppSecret" ``` - 之后**再新开**一个终端,变量才会生效(`setx` 只影响新进程)。 - 移除: ```cmd reg delete HKCU\Environment /v FEISHU_APP_ID /f reg delete HKCU\Environment /v FEISHU_APP_SECRET /f ``` ### 方法 B:.env 文件 ```bash # 复制模板为真实文件,再填入值 cp .env.example .env ``` `.env` 已被 `.gitignore` 排除,**不会提交**;`.env.example`(占位符模板)**会提交**,供他人复制。 ## 3. 使用 ```bash # 验证凭证 + 文档访问权限 python export.py --check # 导出为 Markdown(默认,走 raw_content 接口) python export.py # 导出为 .docx(导出任务接口,飞书 API 不支持直接导 md) python export.py --docx # 指定文档 / 输出路径 python export.py --doc --out ``` ## 4. 常见问题 | 现象 | 原因 | | --- | --- | | `code=10003 invalid param` | `FEISHU_APP_ID` / `FEISHU_APP_SECRET` 为空或不对(检查是否真的设了环境变量,并新开终端) | | `HTTP 403 code=1770032` | 应用没权限访问该文档:未把文档分享给应用,或缺 `docx:document` 权限/未发布版本 | | `code=1069902 no permission` | 导出任务 API 无权限:缺 `drive:drive`,或文档未授权给应用 | | 导出任务 `file_extension` 只接受 docx/pdf/xlsx/csv/base/pptx | 飞书导出任务 API 不支持 `md`,Markdown 走 `raw_content` 接口 | ## 安全说明 - 真实凭证只放**环境变量**或 **gitignored 的 `.env`**,绝不提交。 - `.env.example` 是占位模板,可放心提交。