@amaster.ai/pi-lark 0.1.2-beta.51 → 0.1.2-beta.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/package.json +2 -2
  2. package/skills/lark-base/SKILL.md +11 -4
  3. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +17 -1
  4. package/skills/lark-base/references/lark-base-dashboard.md +17 -4
  5. package/skills/lark-base/references/lark-base-field-json.md +2 -0
  6. package/skills/lark-calendar/SKILL.md +1 -1
  7. package/skills/lark-doc/SKILL.md +1 -0
  8. package/skills/lark-doc/references/lark-doc-history.md +13 -14
  9. package/skills/lark-drive/references/lark-drive-apply-permission.md +1 -1
  10. package/skills/lark-drive/references/lark-drive-export.md +3 -0
  11. package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
  12. package/skills/lark-event/SKILL.md +7 -4
  13. package/skills/lark-event/references/lark-event-vc.md +8 -2
  14. package/skills/lark-im/SKILL.md +5 -5
  15. package/skills/lark-im/references/lark-im-chat-list.md +9 -2
  16. package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
  17. package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
  18. package/skills/lark-im/references/lark-im-chat-search.md +9 -2
  19. package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
  20. package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
  21. package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
  22. package/skills/lark-im/references/lark-im-flag-list.md +2 -2
  23. package/skills/lark-im/references/lark-im-messages-search.md +3 -2
  24. package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
  25. package/skills/lark-mail/references/lark-mail-triage.md +19 -4
  26. package/skills/lark-minutes/SKILL.md +1 -1
  27. package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
  28. package/skills/lark-shared/SKILL.md +3 -3
  29. package/skills/lark-slides/SKILL.md +25 -40
  30. package/skills/lark-slides/references/lark-slides-add-slide.md +92 -0
  31. package/skills/lark-slides/references/lark-slides-create.md +16 -35
  32. package/skills/lark-slides/references/lark-slides-delete-slide.md +65 -0
  33. package/skills/lark-slides/references/lark-slides-edit-workflows.md +5 -3
  34. package/skills/lark-slides/references/lark-slides-media-upload.md +3 -25
  35. package/skills/lark-slides/references/lark-slides-replace-pages.md +6 -4
  36. package/skills/lark-slides/references/lark-slides-replace-slide.md +22 -1
  37. package/skills/lark-slides/references/lark-slides-screenshot.md +31 -13
  38. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +5 -5
  39. package/skills/lark-slides/references/slides_chart_demo.xml +1 -1
  40. package/skills/lark-slides/references/slides_xml_schema_definition.xml +48 -4
  41. package/skills/lark-slides/references/troubleshooting.md +1 -2
  42. package/skills/lark-slides/references/validation-checklist.md +3 -3
  43. package/skills/lark-slides/references/xml-schema-quick-ref.md +23 -9
  44. package/skills/lark-slides/scripts/sxsd_validator.py +154 -10
  45. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +360 -76
  46. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +1138 -214
  47. package/skills/lark-wiki/SKILL.md +5 -3
  48. package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
  49. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -219
  50. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -126
@@ -27,14 +27,14 @@ metadata:
27
27
  - 用户要**按特定主题 / 关键词 / 内容线索查找资料并收集到知识库节点或新建知识库节点下**,必须先阅读 [`../lark-drive/references/lark-drive-workflow.md`](../lark-drive/references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`topic_move_collector`](../lark-drive/references/lark-drive-workflow-topic-move-collector.md) workflow。该 workflow 使用 Drive 全量搜索召回,再按 Wiki 目标解析、确认和移动;不要只用 Wiki 节点列表做局部遍历。
28
28
  - 用户要**整理 / 盘点 / 归类 / 重构知识库、个人文档库、文档库目录或 Wiki 节点结构**,或要生成整理方案、目标目录树、移动计划时,不要只使用 Wiki 节点 API。必须先阅读 [`../lark-drive/references/lark-drive-workflow.md`](../lark-drive/references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`knowledge_organize`](../lark-drive/references/lark-drive-workflow-knowledge-organize.md) workflow;该 workflow 负责 Drive / Wiki / 个人文档库的统一入口解析、资源盘点、分类计划、写前确认和结果验证。
29
29
  - 用户要把**已有 Wiki 节点移出知识库,放到 Drive 文件夹或“我的空间”根目录**:使用 `wiki +move-to-drive`,不要使用 `wiki +move` 或 `drive +move`。这是会改变节点归属和权限继承的写操作,执行前确认源节点与目标位置。
30
- - 用户给的是知识库 URL(`.../wiki/<token>`),且后续要查成员/加成员/删成员:先调用 `lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}'` 获取 `space_id`,后续成员接口统一使用 `space_id`。
30
+ - 用户给的是知识库 URL(`.../wiki/<token>`),且后续要查成员/加成员/删成员:先确定下游成员操作的身份(默认 `user`;用户明确要求应用 / bot 视角时用 `bot`),再调用 `lark-cli wiki +node-get --node-token '<wiki_url>' --as user --format json`,从 `data.space_id` 获取空间 ID;下游使用 bot 时将示例中的身份改为 `--as bot`。节点解析与后续成员操作必须使用相同身份。
31
31
  - 用户要**删除**知识空间(`wiki +delete-space`)但只给了名称或 URL:**不能**把名称 / URL 原样传给 `--space-id`,必须先解析出真实 `space_id`。解析方式:
32
- - URL(`.../wiki/<token>`):`lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}' --format json`,读 `data.node.space_id`。
32
+ - URL(`.../wiki/<token>`):先确定后续 `wiki +delete-space` 的身份(默认 `user`;明确要求 bot 视角时用 `bot`),再调用 `lark-cli wiki +node-get --node-token '<wiki_url>' --as user --format json`,读取 `data.space_id`;下游使用 bot 时将示例中的身份改为 `--as bot`。解析和删除必须使用相同身份。
33
33
  - 只知名称:`lark-cli wiki spaces list --format json`,边翻页边收集 items 并按 `name` 精确匹配;**一旦任一页累计到至少 1 条精确匹配就停止翻页**。只有当翻完所有页(`has_more=false`)仍无精确匹配时,才对已收集的全量 items 做宽松匹配(`name` trim 空格、大小写不敏感、子串包含)。
34
34
  - **关键安全约束**:无论精确还是模糊,**无论命中 1 条还是多条,发起删除前都必须把候选(`name` + `space_id` + `description` + `space_type`)列给用户,由用户明确选定一个 `space_id` 再执行**。不要因为"只命中一条"就自动执行删除。
35
35
  - 命中 0 条:停下来问用户是名称拼错了还是调用方无权限;**不要**自行改名字重试。
36
36
  - 用户明确选定后再执行 `lark-cli wiki +delete-space --space-id <ID> --yes`(高风险写操作,必须显式 `--yes`)。
37
- - 反例:不要把 wiki URL / 名称直接当 `--space-id`(如 `--space-id "https://.../wiki/<wiki_token>"`);务必先用 `wiki spaces get_node` 解析出 `data.node.space_id` 再传。
37
+ - 反例:不要把 wiki URL / 名称直接当 `--space-id`(如 `--space-id "https://.../wiki/<wiki_token>"`);务必先用 `wiki +node-get` 解析出 `data.space_id` 再传。
38
38
  - 用户要在知识库中创建新节点,优先使用 `lark-cli wiki +node-create`。
39
39
  - 用户要列出 Wiki 节点:先用 `wiki +space-list --as user` 拿数字 `space_id`,再用 `wiki +node-list --space-id <space_id>`。不要把 wiki URL、node token、doc token、名称直接当 `--space-id`。钻子节点时 `--parent-node-token` 必须是 wiki node token;如果用户给的是 docx/sheet/base URL,先用 `wiki +node-get --node-token <url>` 解析出 `node_token`。
40
40
  - `wiki +node-list` 命中 `invalid_parameters`、`not_found`、`permission_denied` 时,不要重复调用同一参数;按 hint 修 `space_id` / `parent_node_token` / 权限。只有 `rate_limit` 才做退避重试。
@@ -48,6 +48,8 @@ metadata:
48
48
 
49
49
  Shortcut 是对常用操作的高级封装(`lark-cli wiki +<verb> [flags]`)。有 Shortcut 的操作优先使用。
50
50
 
51
+ 获取或解析 Wiki 节点统一优先使用 `wiki +node-get`,包括只为获取 `space_id`、`node_token`、`obj_token` 或 `obj_type` 的中间步骤。只有当前 CLI 不提供该 shortcut,或任务明确需要 shortcut 未输出的原始响应字段时,才回退到 `wiki spaces get_node`;回退前先运行 `lark-cli schema wiki.spaces.get_node`。
52
+
51
53
  | Shortcut | 说明 |
52
54
  |----------|------|
53
55
  | [`+move`](references/lark-wiki-move.md) | Move a wiki node, or move a Drive document into Wiki |
@@ -117,13 +117,16 @@ dry-run 会展示两步调用链:
117
117
 
118
118
  ### 2. 只有知识库 URL(`.../wiki/<token>`)
119
119
 
120
+ 先确定后续 `wiki +delete-space` 使用的身份:默认使用 `user`;用户明确要求应用 / bot 视角时使用 `bot`。下面展示默认 user 身份;下游使用 bot 时将两步都改为 `--as bot`。节点解析和删除必须使用相同身份。
121
+
120
122
  ```bash
121
- lark-cli wiki spaces get_node \
122
- --params '{"token":"<wiki_token>"}' \
123
+ lark-cli wiki +node-get \
124
+ --node-token '<wiki_url>' \
125
+ --as user \
123
126
  --format json
124
127
  ```
125
128
 
126
- 读取 `data.node.space_id`。
129
+ 读取 `data.space_id`。
127
130
 
128
131
  ### 3. 只有知识库名称
129
132
 
@@ -1,219 +0,0 @@
1
- # lark-slides xml_presentation.slide create
2
-
3
- ## 用途
4
-
5
- 在指定的 XML 演示文稿中创建新的幻灯片页面,通常用于给 `slides +create` 创建出的空白 PPT 逐页补充内容。
6
-
7
- ## 命令
8
-
9
- ```bash
10
- lark-cli slides xml_presentation.slide create --as user --params '<json_params>' --data '<json_data>'
11
- ```
12
-
13
- ## 参数说明
14
-
15
- | 参数 | 类型 | 必需 | 说明 |
16
- |------|------|------|------|
17
- | `--params` | JSON string | 是 | 路径参数与查询参数 |
18
- | `--data` | JSON string | 是 | 请求体,包含新页面内容 |
19
-
20
- ### params JSON 结构
21
-
22
- ```json
23
- {
24
- "xml_presentation_id": "slides_example_presentation_id",
25
- "revision_id": -1,
26
- "tid": "idMock"
27
- }
28
- ```
29
-
30
- | 字段 | 类型 | 必需 | 说明 |
31
- |------|------|------|------|
32
- | `xml_presentation_id` | string | 是 | 目标演示文稿的唯一标识符 |
33
- | `revision_id` | integer | 否 | 演示文稿版本号,`-1` 表示最新版本 |
34
- | `tid` | string | 否 | 锁的事务 ID |
35
-
36
- ### data JSON 结构
37
-
38
- ```json
39
- {
40
- "slide": {
41
- "slide_id": "slide_example_id",
42
- "content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\">...</slide>"
43
- },
44
- "before_slide_id": "slide_before_target"
45
- }
46
- ```
47
-
48
- | 字段 | 类型 | 必需 | 说明 |
49
- |------|------|------|------|
50
- | `slide.slide_id` | string | 否 | 幻灯片页面 short ID |
51
- | `slide.content` | string | 否 | 新幻灯片的 XML 内容 |
52
- | `before_slide_id` | string | 否 | 插入到指定页面之前 |
53
-
54
- ## slide XML 结构
55
-
56
- `slide.content` 是一个完整的 `<slide>` 元素,遵循 SML 2.0 Schema:
57
-
58
- ```xml
59
- <slide xmlns="http://www.larkoffice.com/sml/2.0">
60
- <data>
61
- <shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
62
- <content textType="title">
63
- <p>标题</p>
64
- </content>
65
- </shape>
66
- </data>
67
- </slide>
68
- ```
69
-
70
- 详细格式请参考 [xml-schema-quick-ref.md](xml-schema-quick-ref.md)。
71
-
72
- ## 使用示例
73
-
74
- ### 在末尾添加幻灯片
75
-
76
- ```bash
77
- lark-cli slides xml_presentation.slide create --as user --params '{
78
- "xml_presentation_id": "slides_example_presentation_id"
79
- }' --data '{
80
- "slide": {
81
- "content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新页面标题</p></content></shape><shape type=\"text\" topLeftX=\"80\" topLeftY=\"200\" width=\"800\" height=\"180\"><content textType=\"body\"><p>内容文本</p></content></shape></data></slide>"
82
- }
83
- }'
84
- ```
85
-
86
- ### 在指定页面前插入幻灯片
87
-
88
- ```bash
89
- lark-cli slides xml_presentation.slide create --as user --params '{
90
- "xml_presentation_id": "slides_example_presentation_id"
91
- }' --data '{
92
- "slide": {
93
- "content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>插入的标题页</p></content></shape></data></slide>"
94
- },
95
- "before_slide_id": "slide_before_target"
96
- }'
97
- ```
98
-
99
- ### 带图形元素的幻灯片
100
-
101
- ```bash
102
- lark-cli slides xml_presentation.slide create --as user --params '{
103
- "xml_presentation_id": "slides_example_presentation_id"
104
- }' --data '{
105
- "slide": {
106
- "content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"520\" height=\"120\"><content textType=\"title\"><p>数据展示</p></content></shape><shape type=\"rect\" topLeftX=\"700\" topLeftY=\"100\" width=\"200\" height=\"150\"><fill><fillColor color=\"rgb(100, 149, 237)\"/></fill></shape></data></slide>"
107
- }
108
- }'
109
- ```
110
-
111
- ### 从文件读取 XML
112
-
113
- ```bash
114
- # 先创建 slide.xml 文件
115
- cat > slide.xml << 'EOF'
116
- <slide xmlns="http://www.larkoffice.com/sml/2.0">
117
- <data>
118
- <shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
119
- <content textType="title">
120
- <p>从文件加载</p>
121
- </content>
122
- </shape>
123
- <shape type="text" topLeftX="80" topLeftY="200" width="800" height="180">
124
- <content textType="body">
125
- <p>这是从文件读取的幻灯片内容</p>
126
- </content>
127
- </shape>
128
- </data>
129
- </slide>
130
- EOF
131
-
132
- # 然后创建幻灯片
133
- lark-cli slides xml_presentation.slide create --as user \
134
- --params '{"xml_presentation_id":"slides_example_presentation_id"}' \
135
- --data "$(jq -n --arg content "$(cat slide.xml)" '{slide:{content:$content}}')"
136
- ```
137
-
138
- ## 返回值
139
-
140
- 成功时返回创建的幻灯片信息:
141
-
142
- ```json
143
- {
144
- "code": 0,
145
- "data": {
146
- "slide_id": "slide_example_id",
147
- "revision_id": 100
148
- },
149
- "msg": "success"
150
- }
151
- ```
152
-
153
- ### 返回字段说明
154
-
155
- | 字段 | 类型 | 说明 |
156
- |------|------|------|
157
- | `data.slide_id` | string | 新幻灯片的唯一标识 |
158
- | `data.revision_id` | integer | 演示文稿最新版本号 |
159
-
160
- ## slide 元素可用子元素
161
-
162
- | 元素 | 说明 |
163
- |------|------|
164
- | `<style>` | 页面样式(背景填充) |
165
- | `<data>` | 图形元素容器(shape、img、table、chart 等) |
166
- | `<note>` | 演讲者备注 |
167
-
168
- > [!IMPORTANT]
169
- > **本地图片必须先上传**:`xml_presentation.slide.create` 不识别 `@./local.png` 占位符(那是 `+create --slides` 的语法糖)。直接调本接口添加带图新页时,必须先用 [`slides +media-upload`](lark-slides-media-upload.md) 拿到 `file_token`,再写进 `<img src="<file_token>">`。
170
- >
171
- > 如果是从零开始建带图 PPT,**强烈建议改用 [`slides +create --slides '[...]'`](lark-slides-create.md#本地图片path-占位符)** 一步搞定(自动上传 + 替换 token)。
172
-
173
- ## 常见错误
174
-
175
- | 错误码 | 含义 | 解决方案 |
176
- |--------|------|----------|
177
- | 404 | 演示文稿不存在 | 检查 `xml_presentation_id` 是否正确 |
178
- | 400 | XML 格式错误 | 检查 `slide.content` 是否是完整 `<slide>` 元素 |
179
- | 400 | 请求体结构错误 | 检查是否按 `slide.content` 和 `before_slide_id` 包装 |
180
- | 403 | 权限不足 | 检查是否拥有 `slides:presentation:update` 或 `slides:presentation:write_only` scope |
181
- | 3350001 | XML 非 well-formed 或服务端参数校验失败 | 优先检查未转义字符:文本 `Q&A -> Q&amp;A`,文本 `<` / `>` 写成 `&lt;` / `&gt;`,属性 URL `a=1&b=2 -> a=1&amp;b=2` |
182
-
183
- ## 注意事项
184
-
185
- 1. **执行前必做**: 使用 `lark-cli schema slides.xml_presentation.slide.create` 查看最新的参数结构
186
- 2. **slide.content 格式**: 必须是完整的 `<slide>` 元素,不是整个 presentation
187
- 3. **命名空间建议**: 协议标准写法应带 `xmlns`,例如 `<slide xmlns="http://www.larkoffice.com/sml/2.0">`;当前服务端实现可能兼容不带 `xmlns` 的输入,但不作为协议保证
188
- 4. **fill / border 写法**: 颜色填充使用 `<fill><fillColor color="..."/></fill>`,边框常用 `<border color="..." width="2"/>`
189
- 5. **插入位置**: 通过 `before_slide_id` 指定插入目标,而不是用 `position`
190
- 6. **JSON 转义**: 如果直接内联 XML,需要正确转义双引号
191
- 7. **建议**: 先使用 `slides +xml-get` 获取现有结构,再添加新页面
192
-
193
- ## 批量添加建议
194
-
195
- 如果需要添加多张幻灯片,建议先明确每一页的 `before_slide_id`,或直接按最终顺序逐页追加:
196
-
197
- ```bash
198
- #!/bin/bash
199
-
200
- PRESENTATION_ID="slides_example_presentation_id"
201
-
202
- declare -a slides=(
203
- '<slide xmlns="http://www.larkoffice.com/sml/2.0"><data><shape type="text" topLeftX="80" topLeftY="80" width="800" height="120"><content textType="title"><p>页面 1</p></content></shape></data></slide>'
204
- '<slide xmlns="http://www.larkoffice.com/sml/2.0"><data><shape type="text" topLeftX="80" topLeftY="80" width="800" height="120"><content textType="title"><p>页面 2</p></content></shape></data></slide>'
205
- '<slide xmlns="http://www.larkoffice.com/sml/2.0"><data><shape type="text" topLeftX="80" topLeftY="80" width="800" height="120"><content textType="title"><p>页面 3</p></content></shape></data></slide>'
206
- )
207
-
208
- for slide_xml in "${slides[@]}"; do
209
- payload=$(jq -n --arg content "$slide_xml" '{slide:{content:$content}}')
210
- lark-cli slides xml_presentation.slide create --as user --params "{\"xml_presentation_id\":\"$PRESENTATION_ID\"}" --data "$payload"
211
- done
212
- ```
213
-
214
- ## 相关命令
215
-
216
- - [slides +create](lark-slides-create.md) - 创建空白 PPT
217
- - [slides +xml-get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容并保存到本地文件
218
- - [xml_presentation.slide delete](lark-slides-xml-presentation-slide-delete.md) - 删除幻灯片页面
219
- - [xml-schema-quick-ref.md](xml-schema-quick-ref.md) - XML Schema 快速参考
@@ -1,126 +0,0 @@
1
- # lark-slides xml_presentation.slide delete
2
-
3
- ## 用途
4
-
5
- 删除指定 XML 演示文稿中的幻灯片页面。
6
-
7
- ## 命令
8
-
9
- ```bash
10
- lark-cli slides xml_presentation.slide delete --as user --params '<json_params>'
11
- ```
12
-
13
- ## 参数说明
14
-
15
- | 参数 | 类型 | 必需 | 说明 |
16
- |------|------|------|------|
17
- | `--params` | JSON string | 是 | 路径参数与查询参数 |
18
-
19
- ### params JSON 结构
20
-
21
- ```json
22
- {
23
- "xml_presentation_id": "slides_example_presentation_id",
24
- "slide_id": "slide_example_id",
25
- "revision_id": -1,
26
- "tid": "idMock"
27
- }
28
- ```
29
-
30
- | 字段 | 类型 | 必需 | 说明 |
31
- |------|------|------|------|
32
- | `xml_presentation_id` | string | 是 | 演示文稿的唯一标识符 |
33
- | `slide_id` | string | 是 | 要删除的幻灯片唯一标识符 |
34
- | `revision_id` | integer | 否 | 演示文稿版本号,`-1` 表示最新版本 |
35
- | `tid` | string | 否 | 锁的事务 ID |
36
-
37
- ## 使用示例
38
-
39
- ### 删除指定幻灯片
40
-
41
- ```bash
42
- lark-cli slides xml_presentation.slide delete --as user --params '{
43
- "xml_presentation_id": "slides_example_presentation_id",
44
- "slide_id": "slide_example_id"
45
- }'
46
- ```
47
-
48
- ### 结合查询删除(使用 jq)
49
-
50
- ```bash
51
- # 先读取 XML 内容,确认待删除页面
52
- lark-cli slides +xml-get --as user \
53
- --presentation "slides_example_presentation_id" \
54
- --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
55
- --json
56
-
57
- # 然后按已知 slide_id 删除
58
- lark-cli slides xml_presentation.slide delete --as user --params '{"xml_presentation_id":"slides_example_presentation_id","slide_id":"slide_example_id"}'
59
- ```
60
-
61
- ## 返回值
62
-
63
- 成功时返回删除确认信息:
64
-
65
- ```json
66
- {
67
- "code": 0,
68
- "data": {
69
- "revision_id": 100
70
- },
71
- "msg": "success"
72
- }
73
- ```
74
-
75
- ### 返回字段说明
76
-
77
- | 字段 | 类型 | 说明 |
78
- |------|------|------|
79
- | `data.revision_id` | integer | 删除后的最新版本号 |
80
-
81
- ## 常见错误
82
-
83
- | 错误码 | 含义 | 解决方案 |
84
- |--------|------|----------|
85
- | 404 | 演示文稿不存在 | 检查 `xml_presentation_id` 是否正确 |
86
- | 404 | 幻灯片不存在 | 检查 `slide_id` 是否正确,或该幻灯片已被删除 |
87
- | 400 | 无法删除唯一幻灯片 | 演示文稿至少保留一页幻灯片 |
88
- | 403 | 权限不足 | 检查是否拥有 `slides:presentation:update` 或 `slides:presentation:write_only` scope |
89
-
90
- ## 注意事项
91
-
92
- 1. **执行前必做**: 使用 `lark-cli schema slides.xml_presentation.slide.delete` 查看最新的参数结构
93
- 2. **删除不可逆**: 删除操作无法撤销,请确保已备份重要内容
94
- 3. **至少保留一页**: 演示文稿必须至少保留一页幻灯片,删除最后一页会报错
95
- 4. **版本控制**: 如果依赖版本号并发控制,删除前先确认 `revision_id`
96
- 5. **获取 slide_id**: 创建幻灯片时请保存返回值;仅靠 `get` 返回的 XML 无法直接推导服务端 short ID
97
-
98
- ## 如何获取 slide_id
99
-
100
- ### 方法 1: 创建时保存
101
-
102
- ```bash
103
- lark-cli slides xml_presentation.slide create --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' --data '{
104
- "slide": {
105
- "content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新页面</p></content></shape></data></slide>"
106
- }
107
- }'
108
- ```
109
-
110
- 返回结果中的 `slide_id` 就是后续删除所需的值。
111
-
112
- ## 批量删除建议
113
-
114
- 如果需要删除多张幻灯片,建议先整理好待删 `slide_id` 列表,再逐个删除:
115
-
116
- ```bash
117
- for slide_id in sld_a sld_b sld_c; do
118
- lark-cli slides xml_presentation.slide delete --as user --params "{\"xml_presentation_id\":\"slides_example_presentation_id\",\"slide_id\":\"$slide_id\"}"
119
- done
120
- ```
121
-
122
- ## 相关命令
123
-
124
- - [slides +create](lark-slides-create.md) - 创建空白 PPT
125
- - [slides +xml-get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容并保存到本地文件
126
- - [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) - 添加幻灯片页面