前置条件: 先阅读
../lark-shared/SKILL.md了解认证、全局参数和安全规则。
查询异步任务结果。该 shortcut 聚合了导入、导出、移动/删除文件夹、Wiki 节点 / 文档迁入 Wiki 等多种异步任务的结果查询,统一接口方便调用。
[!IMPORTANT] 对于
import场景,如果使用--as bot且这次查询已经拿到最终在线文档目标(ready=true且返回了最终token/url),CLI 会再次尝试为当前 CLI 用户自动授予该资源的full_access(可管理权限)。此时结果里会额外返回
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 转给自己,必须单独确认。
# 查询导入任务结果
lark-cli drive +task_result \
--scenario import \
--ticket <IMPORT_TICKET>
# 查询导出任务结果
lark-cli drive +task_result \
--scenario export \
--ticket <EXPORT_TICKET> \
--file-token <SOURCE_DOC_TOKEN>
# 查询移动/删除文件夹任务状态
lark-cli drive +task_result \
--scenario task_check \
--task-id <TASK_ID>
# 查询 Wiki 移动任务结果(wiki +move 异步超时后的续跑)
lark-cli drive +task_result \
--scenario wiki_move \
--task-id <TASK_ID>
| 参数 | 必填 | 说明 |
|---|---|---|
--scenario |
是 | 任务场景,可选值:import (导入任务)、export (导出任务)、task_check (移动/删除文件夹任务)、wiki_move (Wiki 移动任务) |
--ticket |
条件必填 | 异步任务 ticket,import/export 场景必填 |
--task-id |
条件必填 | 异步任务 ID,task_check / wiki_move 场景必填 |
--file-token |
条件必填 | 导出任务对应的源文档 token,export 场景必填 |
| 场景 | 说明 | 所需参数 |
|---|---|---|
import |
文档导入任务(如将本地文件导入为云文档) | --ticket |
export |
文档导出任务(如云文档导出为 PDF/Word) | --ticket、--file-token |
task_check |
文件夹移动/删除任务 | --task-id |
wiki_move |
Wiki 移动任务(wiki +move 的 docs-to-wiki 异步流程,超时后续跑用) |
--task-id |
{
"scenario": "import",
"ticket": "<IMPORT_TICKET>",
"type": "sheet",
"ready": true,
"failed": false,
"job_status": 0,
"job_status_label": "success",
"job_error_msg": "success",
"token": "<IMPORTED_DOC_TOKEN>",
"url": "https://example.feishu.cn/sheets/<IMPORTED_DOC_TOKEN>",
"extra": ["2000"],
"permission_grant": {
"status": "granted",
"perm": "full_access",
"member_type": "openid",
"user_open_id": "<CURRENT_USER_OPEN_ID>",
"message": "Granted the current CLI user full_access (可管理权限) on the new spreadsheet."
}
}
字段说明:
ready: 是否已经导入完成,可直接使用 token / urlfailed: 是否已经失败job_status: 服务端返回的原始状态码job_status_label: 便于阅读的状态标签,例如 success / processingtoken: 导入后的文档 tokenurl: 导入后的文档链接permission_grant: 仅 --as bot 且这次查询已经拿到最终在线文档目标时返回,用于说明是否已自动为当前 CLI 用户授予可管理权限;如果当前仍是 ready=false,则不会返回这个字段{
"scenario": "export",
"ticket": "<EXPORT_TICKET>",
"ready": true,
"failed": false,
"file_extension": "pdf",
"type": "doc",
"file_name": "docName",
"file_token": "<EXPORTED_FILE_TOKEN>",
"file_size": 34356,
"job_error_msg": "success",
"job_status": 0,
"job_status_label": "success"
}
字段说明:
ready: 是否已经完成导出,可直接使用 file_tokenfailed: 是否已经失败job_status: 服务端返回的原始状态码job_status_label: 便于阅读的状态标签,例如 success / processingfile_token: 导出文件的 token,用于下载file_extension: 导出文件扩展名file_size: 导出文件大小(字节){
"scenario": "task_check",
"task_id": "<TASK_ID>",
"status": "success",
"ready": true,
"failed": false
}
字段说明:
status: 任务状态,success=成功,failed=失败,pending=处理中ready: 是否已经完成failed: 是否已经失败{
"scenario": "wiki_move",
"task_id": "<TASK_ID>",
"ready": true,
"failed": false,
"status": 0,
"status_msg": "success",
"wiki_token": "wikcnXXX",
"node_token": "wikcnXXX",
"space_id": "<TARGET_SPACE_ID>",
"obj_token": "<OBJ_TOKEN>",
"obj_type": "docx",
"parent_node_token": "",
"node_type": "origin",
"origin_node_token": "",
"title": "项目计划",
"has_child": false,
"node": {
"space_id": "<TARGET_SPACE_ID>",
"node_token": "wikcnXXX",
"obj_token": "<OBJ_TOKEN>",
"obj_type": "docx",
"parent_node_token": "",
"node_type": "origin",
"origin_node_token": "",
"title": "项目计划",
"has_child": false
},
"move_results": [
{
"status": 0,
"status_msg": "success",
"node": { "...": "同上" }
}
]
}
字段说明:
ready: 所有 move_results[].status 都为 0 时为 truefailed: 任一 move_results[].status 小于 0 时为 truestatus / status_msg: 第一个 move_result 的状态码 / 标签(无结果时回退为 1 / processing)wiki_token / node_token: 移入 Wiki 后的目标节点 token(首个结果有 node.node_token 时镜像到顶层,便于下游脚本使用)space_id、obj_token、obj_type、title 等:从首个 move_results[0].node 平铺到顶层,方便直接引用move_results: 保留完整列表(适用于一次任务移动多个文档的场景)# 1. 创建导入任务
lark-cli drive +import --file ./data.xlsx --type sheet
# 若任务很快完成:直接返回 token / url
# 若内置轮询超时:返回 ready=false、ticket 和 next_command
# 2. 轮询导入结果
lark-cli drive +task_result --scenario import --ticket <IMPORT_TICKET>
# 如果这里返回 ready=true 且使用 --as bot,结果还会包含 permission_grant
# 1. 移动文件夹(异步操作)
lark-cli drive +move --file-token <FOLDER_TOKEN> --type folder --folder-token <TARGET_FOLDER_TOKEN>
# 若轮询窗口内完成:直接返回 ready=true
# 若内置轮询结束仍未完成:返回 ready=false、task_id 和 next_command
# 2. 轮询移动结果
lark-cli drive +task_result --scenario task_check --task-id <TASK_ID>
# 1. 把 Drive 文档迁入 Wiki(异步任务可能返回 task_id)
lark-cli wiki +move --obj-type docx --obj-token <DOC_TOKEN> --target-space-id <TARGET_SPACE_ID>
# 若内置轮询窗口内完成:直接返回 ready=true 和 wiki_token
# 若轮询窗口结束仍未完成:返回 ready=false、task_id、timed_out=true 和 next_command
# 2. 续跑查询 Wiki 移动结果(next_command 即下面这条)
lark-cli drive +task_result --scenario wiki_move --task-id <TASK_ID> --as user
身份保持一致:续跑命令的
--as必须与原wiki +move调用一致;wiki +move的next_command已自动带上正确的--as。
# 1. 发起导出
lark-cli drive +export --token <SOURCE_DOC_TOKEN> --doc-type docx --file-extension pdf
# 若轮询窗口内完成:直接下载本地文件
# 若内置轮询结束仍未完成:返回 ready=false、ticket 和 next_command
# 2. 继续查询导出结果
lark-cli drive +task_result --scenario export --ticket <EXPORT_TICKET> --file-token <SOURCE_DOC_TOKEN>
# 3. 拿到 file_token 后下载
lark-cli drive +export-download --file-token <EXPORTED_FILE_TOKEN>
| 场景 | 所需 scope |
|---|---|
| import | drive:drive.metadata:readonly |
| export | drive:drive.metadata:readonly |
| task_check | drive:drive.metadata:readonly |
| wiki_move | wiki:space:read |
[!NOTE]
import场景在--as bot且任务最终就绪时,还可能额外尝试一次协作者授权;如果permission_grant.status = failed,请根据失败信息检查应用是否具备相应的文档协作者授权能力。