前置条件: 先阅读
../lark-shared/SKILL.md了解认证、全局参数和安全规则。
将本地文件(如 Word、TXT、Markdown、Excel 等)导入并转换为飞书在线云文档(docx、sheet、bitable)。底层统一通过 POST /open-apis/drive/v1/import_tasks 接口创建导入任务,并在 shortcut 内做有限次数轮询 GET /open-apis/drive/v1/import_tasks/:ticket。
[!IMPORTANT] 当用户说“把本地 Excel / CSV 导入成 Base / 多维表格 / bitable 文档”时,第一步必须使用
drive +import --type bitable。 这是 Drive 导入场景,不是lark-base的建表 / 写记录场景。 只有导入完成并拿到新文档的token/url后,后续字段、记录、视图等表内操作才切换到lark-cli base +...。
# 导入 Markdown 为新版文档 (docx)
lark-cli drive +import --file ./README.md --type docx
# 导入 Excel 为电子表格 (sheet)
lark-cli drive +import --file ./data.xlsx --type sheet
# 导入 Excel 为多维表格 / Base (bitable)
lark-cli drive +import --file ./crm.xlsx --type bitable --name "客户台账"
# 导入到指定文件夹,并指定导入后的文件名
lark-cli drive +import --file ./data.csv --type bitable --folder-token <FOLDER_TOKEN> --name "导入数据表"
# 预览底层调用链(上传 -> 创建任务 -> 轮询)
lark-cli drive +import --file ./README.md --type docx --dry-run
| 参数 | 必填 | 说明 |
|---|---|---|
--file |
是 | 本地文件路径,根据文件后缀名自动推断 file_extension;文件需满足对应格式的导入大小限制,超过 20MB 且仍在允许范围内时会自动切换分片上传 |
--type |
是 | 导入目标云文档格式。可选值:docx (新版文档)、sheet (电子表格)、bitable (多维表格) |
--folder-token |
否 | 目标文件夹 token,不传则请求中的 point.mount_key 为空字符串,Import API 会将其解释为导入到云空间根目录 |
--name |
否 | 导入后的在线云文档名称,不传默认使用本地文件名去掉扩展名后的结果 |
file_token:
POST /open-apis/drive/v1/medias/upload_allupload_prepare -> upload_part -> upload_finishimport_tasks 接口发起导入任务,自动根据本地文件提取扩展名并构造挂载点(mount_point)参数ticket、当前状态和后续查询命令--folder-token 时,shortcut 会保留空的 point.mount_key,Lark Import API 会将其视为“导入到调用者根目录”。本地文件扩展名与目标云文档类型的对应关系如下:
| 本地文件扩展名 | 可导入为 | 说明 |
|---|---|---|
.docx, .doc |
docx |
Microsoft Word 文档 |
.txt |
docx |
纯文本文件 |
.md, .markdown, .mark |
docx |
Markdown 文档 |
.html |
docx |
HTML 文档 |
.xlsx |
sheet, bitable |
Microsoft Excel 表格 |
.xls |
sheet |
Microsoft Excel 97-2003 表格 |
.csv |
sheet, bitable |
CSV 数据文件 |
[!IMPORTANT] 用户口头说的 “Base” / “多维表格” / “bitable”,在命令里统一对应
--type bitable。文件扩展名与目标文档类型必须匹配,否则会返回验证错误:
- 文档类文件(.docx, .doc, .txt, .md, .html)只能导入为
docx.xlsx/.csv文件只能导入为sheet或bitable.xls文件只能导入为sheet- 例如:
.csv文件不能导入为docx,.md文件不能导入为sheet[!IMPORTANT] 如果在线文档是以应用身份(bot)导入创建的,如
lark-cli drive +import --as bot,当某次结果已经返回最终在线文档目标后,CLI 会尝试为当前 CLI 用户自动授予该资源的full_access(可管理权限)。这个自动授权有两种触发时机:
drive +import的内置轮询窗口内已经完成,直接在+import中进行自动授权drive +import先返回ready=false/timed_out=true,之后你再执行lark-cli drive +task_result --scenario import --ticket <TICKET>,当该查询第一次拿到最终在线文档目标时会自动授权只有在已经拿到最终在线文档目标的那次结果里,才会返回
permission_grant字段,明确说明授权结果:
status = granted:当前 CLI 用户已获得该导入结果的可管理权限status = skipped:本地没有可用的当前用户open_id,或当前结果还没有可授权目标,因此不会自动授权;可提示用户先完成lark-cli auth login,再让 AI / agent 继续使用应用身份(bot)授予当前用户权限status = failed:导入已成功返回最终在线文档,但自动授权用户失败;会带上失败原因,并提示稍后重试或继续使用 bot 身份处理该文档
permission_grant.perm = full_access表示该资源已授予“可管理权限”。不要擅自执行 owner 转移。 如果用户需要把 owner 转给自己,必须单独确认。
除扩展名与目标类型匹配外,drive +import 还会在本地上传前校验格式级大小限制:
| 本地文件扩展名 | 导入目标 | 大小上限 |
|---|---|---|
.docx, .doc |
docx |
600MB |
.txt |
docx |
20MB |
.md, .mark, .markdown |
docx |
20MB |
.html |
docx |
20MB |
.xlsx |
sheet, bitable |
800MB |
.csv |
sheet |
20MB |
.csv |
bitable |
100MB |
.xls |
sheet |
20MB |
“超过 20MB 自动切换分片上传”只表示上传链路会切到 multipart,不代表所有格式都允许导入超过 20MB 的文件。
若导入任务执行失败,会返回失败时的 job_status 及错误信息。
若内置轮询超时但任务仍在处理中,shortcut 会成功返回,并带上:
ready=falsetimed_out=truenext_command:可直接复制执行的后续查询命令,例如 lark-cli drive +task_result --scenario import --ticket <TICKET>若使用 --as bot 且内置轮询窗口内已经拿到最终在线文档,输出还会额外带上 permission_grant,用于说明是否已自动为当前 CLI 用户授予可管理权限。
若使用 --as bot 但当前只返回 ready=false,此时还不会返回 permission_grant;应继续执行返回值里的 next_command,等 drive +task_result --scenario import 拿到最终文档后再触发自动授权。
如果文件扩展名不被支持,执行时将抛出验证错误。
当 +import 的内置轮询窗口结束但任务尚未完成时,使用返回结果中的 ticket 继续查询:
lark-cli drive +task_result --scenario import --ticket <TICKET>
如果这里最终返回 ready=true 且使用的是 --as bot,结果还会额外带上 permission_grant,用于说明是否已自动为当前 CLI 用户授予可管理权限。
[!CAUTION]
drive +import是写入操作 —— 执行前必须确认用户意图。