@amaster.ai/pi-lark 0.1.15 → 0.1.16

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 (145) hide show
  1. package/package.json +4 -4
  2. package/skills/lark-apps/SKILL.md +1 -0
  3. package/skills/lark-apps/references/lark-apps-db.md +2 -0
  4. package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
  5. package/skills/lark-apps/references/lark-apps-env.md +1 -1
  6. package/skills/lark-apps/references/lark-apps-export.md +62 -0
  7. package/skills/lark-apps/references/lark-apps-observability.md +1 -1
  8. package/skills/lark-base/SKILL.md +3 -3
  9. package/skills/lark-base/references/lark-base-app.md +1 -1
  10. package/skills/lark-base/references/lark-base-dashboard-block-config.md +20 -2
  11. package/skills/lark-base/references/lark-base-dashboard.md +1 -1
  12. package/skills/lark-base/references/lark-base-data-query.md +1 -1
  13. package/skills/lark-base/references/lark-base-field-create.md +1 -1
  14. package/skills/lark-base/references/lark-base-field-update.md +1 -1
  15. package/skills/lark-base/references/lark-base-form-questions-create.md +1 -1
  16. package/skills/lark-base/references/lark-base-form-questions-update.md +1 -1
  17. package/skills/lark-base/references/lark-base-form-submit.md +1 -1
  18. package/skills/lark-base/references/lark-base-view-set-filter.md +1 -1
  19. package/skills/lark-base/references/lark-base-view.md +109 -0
  20. package/skills/lark-calendar/references/lark-calendar-transfer.md +1 -1
  21. package/skills/lark-doc/references/lark-doc-media-download.md +1 -1
  22. package/skills/lark-doc/references/lark-doc-media-insert.md +1 -1
  23. package/skills/lark-doc/references/lark-doc-media-preview.md +1 -1
  24. package/skills/lark-doc/references/lark-doc-resource-cover.md +1 -1
  25. package/skills/lark-drive/references/lark-drive-add-comment.md +1 -1
  26. package/skills/lark-drive/references/lark-drive-apply-permission.md +1 -1
  27. package/skills/lark-drive/references/lark-drive-copy.md +1 -1
  28. package/skills/lark-drive/references/lark-drive-cover.md +1 -1
  29. package/skills/lark-drive/references/lark-drive-create-folder.md +1 -1
  30. package/skills/lark-drive/references/lark-drive-create-shortcut.md +1 -1
  31. package/skills/lark-drive/references/lark-drive-delete.md +1 -1
  32. package/skills/lark-drive/references/lark-drive-download.md +1 -1
  33. package/skills/lark-drive/references/lark-drive-export-download.md +1 -1
  34. package/skills/lark-drive/references/lark-drive-export.md +1 -1
  35. package/skills/lark-drive/references/lark-drive-import.md +1 -1
  36. package/skills/lark-drive/references/lark-drive-inspect.md +1 -1
  37. package/skills/lark-drive/references/lark-drive-list-comments.md +1 -1
  38. package/skills/lark-drive/references/lark-drive-move.md +4 -4
  39. package/skills/lark-drive/references/lark-drive-preview.md +1 -1
  40. package/skills/lark-drive/references/lark-drive-pull.md +1 -1
  41. package/skills/lark-drive/references/lark-drive-push.md +1 -1
  42. package/skills/lark-drive/references/lark-drive-search.md +1 -1
  43. package/skills/lark-drive/references/lark-drive-status.md +1 -1
  44. package/skills/lark-drive/references/lark-drive-task-result.md +4 -4
  45. package/skills/lark-drive/references/lark-drive-update-title.md +1 -1
  46. package/skills/lark-drive/references/lark-drive-upload.md +1 -1
  47. package/skills/lark-drive/references/lark-drive-version-delete.md +1 -1
  48. package/skills/lark-drive/references/lark-drive-version-get.md +1 -1
  49. package/skills/lark-drive/references/lark-drive-version-history.md +1 -1
  50. package/skills/lark-drive/references/lark-drive-version-revert.md +1 -1
  51. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +1 -1
  52. package/skills/lark-im/references/lark-im-chat-create.md +1 -1
  53. package/skills/lark-im/references/lark-im-chat-list.md +1 -1
  54. package/skills/lark-im/references/lark-im-chat-members-list.md +1 -1
  55. package/skills/lark-im/references/lark-im-chat-messages-list.md +1 -1
  56. package/skills/lark-im/references/lark-im-chat-search.md +1 -1
  57. package/skills/lark-im/references/lark-im-chat-update.md +1 -1
  58. package/skills/lark-im/references/lark-im-feed-groups.md +1 -1
  59. package/skills/lark-im/references/lark-im-feed-shortcut-create.md +1 -1
  60. package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
  61. package/skills/lark-im/references/lark-im-feed-shortcut-remove.md +1 -1
  62. package/skills/lark-im/references/lark-im-flag-cancel.md +1 -1
  63. package/skills/lark-im/references/lark-im-flag-create.md +1 -1
  64. package/skills/lark-im/references/lark-im-flag-list.md +1 -1
  65. package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
  66. package/skills/lark-im/references/lark-im-message-read-status.md +1 -1
  67. package/skills/lark-im/references/lark-im-messages-edit.md +1 -1
  68. package/skills/lark-im/references/lark-im-messages-mget.md +1 -1
  69. package/skills/lark-im/references/lark-im-messages-reply.md +1 -1
  70. package/skills/lark-im/references/lark-im-messages-resources-download.md +1 -1
  71. package/skills/lark-im/references/lark-im-messages-search.md +1 -1
  72. package/skills/lark-im/references/lark-im-messages-send.md +1 -1
  73. package/skills/lark-im/references/lark-im-reactions.md +1 -1
  74. package/skills/lark-im/references/lark-im-threads-messages-list.md +1 -1
  75. package/skills/lark-mail/references/lark-mail-triage.md +1 -1
  76. package/skills/lark-mail/references/lark-mail-watch.md +1 -1
  77. package/skills/lark-markdown/references/lark-markdown-create.md +1 -1
  78. package/skills/lark-markdown/references/lark-markdown-diff.md +1 -1
  79. package/skills/lark-markdown/references/lark-markdown-fetch.md +1 -1
  80. package/skills/lark-markdown/references/lark-markdown-overwrite.md +1 -1
  81. package/skills/lark-markdown/references/lark-markdown-patch.md +1 -1
  82. package/skills/lark-meeting/references/lark-vc-meeting-events.md +12 -13
  83. package/skills/lark-meeting/scenes/live-meeting-attend.md +2 -2
  84. package/skills/lark-meeting/scenes/live-meeting-interact.md +1 -1
  85. package/skills/lark-sheets/SKILL.md +58 -173
  86. package/skills/lark-sheets/references/lark-sheets-batch-update.md +10 -10
  87. package/skills/lark-sheets/references/lark-sheets-chart.md +5 -5
  88. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +4 -4
  89. package/skills/lark-sheets/references/lark-sheets-filter-view.md +1 -1
  90. package/skills/lark-sheets/references/lark-sheets-filter.md +2 -2
  91. package/skills/lark-sheets/references/lark-sheets-float-image.md +2 -2
  92. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +90 -4
  93. package/skills/lark-sheets/references/lark-sheets-formula-verify.md +49 -13
  94. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +13 -13
  95. package/skills/lark-sheets/references/lark-sheets-range-operations.md +12 -9
  96. package/skills/lark-sheets/references/lark-sheets-read-data.md +14 -12
  97. package/skills/lark-sheets/references/lark-sheets-search-replace.md +3 -3
  98. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +8 -4
  99. package/skills/lark-sheets/references/lark-sheets-sparkline.md +2 -2
  100. package/skills/lark-sheets/references/lark-sheets-styles-put.md +2 -2
  101. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +16 -16
  102. package/skills/lark-sheets/references/lark-sheets-workbook.md +22 -7
  103. package/skills/lark-sheets/references/lark-sheets-write-cells.md +66 -57
  104. package/skills/lark-sheets/scripts/lark_chart_quality_check.py +42 -26
  105. package/skills/lark-sheets/scripts/lark_chart_size_advisor.py +2 -1
  106. package/skills/lark-sheets/scripts/lark_inspect_workbook.py +37 -9
  107. package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +53 -0
  108. package/skills/lark-sheets/scripts/{sheets_df.py → lark_sheets_df.py} +1 -1
  109. package/skills/lark-slides/SKILL.md +11 -18
  110. package/skills/lark-slides/references/cli/lark-slides-create.md +3 -3
  111. package/skills/lark-slides/references/cli/lark-slides-delete-slide.md +1 -1
  112. package/skills/lark-slides/references/cli/lark-slides-history.md +1 -8
  113. package/skills/lark-slides/references/cli/lark-slides-media-upload.md +5 -10
  114. package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +14 -15
  115. package/skills/lark-slides/references/cli/lark-slides-update-slide.md +2 -2
  116. package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +3 -108
  117. package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +6 -183
  118. package/skills/lark-slides/references/cli/lark-slides-xml-presentations-get.md +26 -143
  119. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +3 -3
  120. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -2
  121. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +2 -2
  122. package/skills/lark-slides/references/workflow/error-handling.md +3 -3
  123. package/skills/lark-slides/references/workflow/slides-editing.md +10 -11
  124. package/skills/lark-task/references/lark-task-assign.md +1 -1
  125. package/skills/lark-task/references/lark-task-comment.md +1 -1
  126. package/skills/lark-task/references/lark-task-complete.md +1 -1
  127. package/skills/lark-task/references/lark-task-create.md +1 -1
  128. package/skills/lark-task/references/lark-task-followers.md +1 -1
  129. package/skills/lark-task/references/lark-task-get-my-tasks.md +1 -1
  130. package/skills/lark-task/references/lark-task-get-related-tasks.md +1 -1
  131. package/skills/lark-task/references/lark-task-reminder.md +1 -1
  132. package/skills/lark-task/references/lark-task-reopen.md +1 -1
  133. package/skills/lark-task/references/lark-task-search.md +1 -1
  134. package/skills/lark-task/references/lark-task-set-ancestor.md +1 -1
  135. package/skills/lark-task/references/lark-task-tasklist-create.md +1 -1
  136. package/skills/lark-task/references/lark-task-tasklist-members.md +1 -1
  137. package/skills/lark-task/references/lark-task-tasklist-search.md +1 -1
  138. package/skills/lark-task/references/lark-task-tasklist-task-add.md +1 -1
  139. package/skills/lark-task/references/lark-task-update.md +1 -1
  140. package/skills/lark-task/references/lark-task-upload-attachment.md +1 -1
  141. package/skills/lark-wiki/references/lark-wiki-delete-space.md +1 -1
  142. package/skills/lark-wiki/references/lark-wiki-move-to-drive.md +1 -1
  143. package/skills/lark-wiki/references/lark-wiki-move.md +1 -1
  144. package/skills/lark-wiki/references/lark-wiki-node-create.md +1 -1
  145. package/skills/lark-sheets/references/lark-sheets-legacy-command-migration.md +0 -152
@@ -1,110 +1,5 @@
1
- # lark-slides xml_presentation.slide get
1
+ # slides +xml-get(单页读取兼容入口)
2
2
 
3
- ## 用途
3
+ 本文档已合并至 [lark-slides-xml-presentations-get.md](lark-slides-xml-presentations-get.md)。
4
4
 
5
- 按 `slide_id` 拉取指定演示文稿单页的 XML 内容(可指定历史版本)。常用于"读-改-写"编辑闭环的第一步。
6
-
7
- ## 命令
8
-
9
- ```bash
10
- lark-cli slides xml_presentation.slide get --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
- }
27
- ```
28
-
29
- | 字段 | 类型 | 必需 | 说明 |
30
- |------|------|------|------|
31
- | `xml_presentation_id` | string | 是 | 目标演示文稿唯一标识 |
32
- | `slide_id` | string | 是 | 目标页面唯一标识 |
33
- | `revision_id` | integer | 否 | 版本号,`-1` 表示最新版(默认)|
34
-
35
- ## 使用示例
36
-
37
- ### 读最新版本
38
-
39
- ```bash
40
- lark-cli slides xml_presentation.slide get --as user --params '{
41
- "xml_presentation_id": "slides_example_presentation_id",
42
- "slide_id": "slide_example_id"
43
- }'
44
- ```
45
-
46
- ### 只提取 XML 内容
47
-
48
- ```bash
49
- lark-cli slides xml_presentation.slide get --as user \
50
- --params '{"xml_presentation_id":"slides_example_presentation_id","slide_id":"slide_example_id"}' \
51
- --jq '.data.slide.content'
52
- ```
53
-
54
- ### 读指定历史版本
55
-
56
- ```bash
57
- lark-cli slides xml_presentation.slide get --as user --params '{
58
- "xml_presentation_id": "slides_example_presentation_id",
59
- "slide_id": "slide_example_id",
60
- "revision_id": 42
61
- }'
62
- ```
63
-
64
- ## 返回值
65
-
66
- ```json
67
- {
68
- "ok": true,
69
- "identity": "user",
70
- "data": {
71
- "slide": {
72
- "slide_id": "slide_example_id",
73
- "content": "<slide id=\"slide_example_id\"><style/><data>...</data></slide>"
74
- },
75
- "revision_id": 100
76
- }
77
- }
78
- ```
79
-
80
- | 字段 | 类型 | 说明 |
81
- |------|------|------|
82
- | `data.slide.slide_id` | string | 页面唯一标识 |
83
- | `data.slide.content` | string | 页面完整 XML(`<slide>` 根节点,不含 xmlns)|
84
- | `data.revision_id` | integer | 此次读到的版本号,可用于后续 replace 的乐观锁 |
85
-
86
- ## 常见错误
87
-
88
- | 错误码 | 含义 | 解决方案 |
89
- |--------|------|----------|
90
- | 404 | 演示文稿或页面不存在 | 检查 `xml_presentation_id` / `slide_id` |
91
- | 403 | 权限不足 | 需要 `slides:presentation:read` scope,并对该 PPT 有访问权限 |
92
- | 400 | `revision_id` 不存在 | 传了无效版本号,用 `-1` 或真实存在的版本号 |
93
-
94
- ## 注意事项
95
-
96
- 1. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.get` 查看最新参数结构
97
- 2. **block_id 提取**:返回 XML 里每个顶层块(shape、img、table、chart 等)的 `id` 属性即为 `block_id`,通常是 3 字符短码,例如 `<shape id="bUn" ...>`。用以下命令列出当前页所有 block_id:
98
-
99
- ```bash
100
- lark-cli slides xml_presentation.slide get --as user \
101
- --params "{\"xml_presentation_id\":\"$PRES_ID\",\"slide_id\":\"$SID\"}" \
102
- --jq '.data.slide.content' | grep -oE 'id="[^"]+"' | sed 's/id="//;s/"//'
103
- ```
104
-
105
- ## 相关命令
106
-
107
- - [slides +replace-slide](lark-slides-replace-slide.md) — 块级替换 shortcut(推荐)
108
- - [xml_presentation.slide replace](lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考
109
- - [slides +xml-get](lark-slides-xml-presentations-get.md) — 读整个 PPT 并保存到本地文件
110
- - [slides-editing.md](../workflow/slides-editing.md) — 读-改-写闭环
5
+ 此文件保留已发布路径兼容性;后续引用请使用该正式 reference。
@@ -1,188 +1,11 @@
1
- # lark-slides xml_presentation.slide replace
1
+ # slides +replace-slide(块级替换 / 插入)
2
2
 
3
- ## 用途
4
-
5
- 对单页做**块级局部替换**:不覆盖整页,按 patch 列表做 `block_replace`(整块替换)或 `block_insert`(整块插入)。适合"只想加 / 换一个元素、不动其他元素"的场景。
6
-
7
- > **推荐**:优先使用 [`+replace-slide`](lark-slides-replace-slide.md) Shortcut——它会自动注入 `id` 和 `<content/>`,直接调本 API 需自己处理这两个约束(见注意事项 5、6)。
8
-
9
- ## 命令
10
-
11
- ```bash
12
- lark-cli slides xml_presentation.slide replace --as user --params '<json_params>' --data '<json_data>'
13
- ```
14
-
15
- ## 参数说明
16
-
17
- | 参数 | 类型 | 必需 | 说明 |
18
- |------|------|------|------|
19
- | `--params` | JSON string | 是 | 路径参数与查询参数 |
20
- | `--data` | JSON string | 是 | patch 列表 |
21
-
22
- ### params JSON 结构
23
-
24
- ```json
25
- {
26
- "xml_presentation_id": "slides_example_presentation_id",
27
- "slide_id": "slide_example_id",
28
- "revision_id": -1,
29
- "tid": "idMock"
30
- }
31
- ```
32
-
33
- | 字段 | 类型 | 必需 | 说明 |
34
- |------|------|------|------|
35
- | `xml_presentation_id` | string | 是 | 演示文稿唯一标识 |
36
- | `slide_id` | string | 是 | 页面唯一标识 |
37
- | `revision_id` | integer | 否 | 默认 `-1`(以最新版为基准);传具体版本号做乐观锁 |
38
- | `tid` | string | 否 | 事务 ID,一般留空 |
39
-
40
- ### data JSON 结构
41
-
42
- ```json
43
- {
44
- "parts": [
45
- { "action": "block_replace", "block_id": "bab", "replacement": "<shape .../>" },
46
- { "action": "block_insert", "insertion": "<img .../>", "insert_before_block_id": "baa" }
47
- ]
48
- }
49
- ```
50
-
51
- | 字段 | 类型 | 必需 | 说明 |
52
- |------|------|------|------|
53
- | `parts` | array | 是 | patch 列表,长度 1~200,顺序执行 |
54
-
55
- ### parts[] 字段(按 action 不同)
56
-
57
- 本期 CLI 文档化两种 action:
58
-
59
- #### action = "block_replace" — 整块替换
60
-
61
- | 字段 | 必填 | 说明 |
62
- |------|------|------|
63
- | `action` | 是 | 固定 `block_replace` |
64
- | `block_id` | 是 | 目标块的 3 位 short element ID(从 `slide.get` 返回的 XML 里读到) |
65
- | `replacement` | 是 | 新 XML 片段,替换整个目标块 |
66
-
67
- #### action = "block_insert" — 整块插入
68
-
69
- | 字段 | 必填 | 说明 |
70
- |------|------|------|
71
- | `action` | 是 | 固定 `block_insert` |
72
- | `insertion` | 是 | 要插入的完整 XML 片段 |
73
- | `insert_before_block_id` | 否 | 插到这个块之前;省略则追加到页面末尾 |
74
-
75
- ## 使用示例
76
-
77
- ### block_replace:换一个 shape 的整体内容
3
+ 对指定页面的已知块做替换或插入。先用 `+xml-get --slide-id` 获取最新 `block_id`,再用 `+replace-slide` 写入;该操作不改变页面顺序。
78
4
 
79
5
  ```bash
80
- lark-cli slides xml_presentation.slide replace --as user --params '{
81
- "xml_presentation_id": "slides_example_presentation_id",
82
- "slide_id": "slide_example_id"
83
- }' --data '{
84
- "parts": [
85
- {
86
- "action": "block_replace",
87
- "block_id": "bab",
88
- "replacement": "<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"
89
- }
90
- ]
91
- }'
6
+ lark-cli slides +replace-slide --as user \
7
+ --presentation "$PRES_ID" --slide-id "$SID" \
8
+ --parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\" fontSize=\"32\"><p>新标题</p></content></shape>"}]'
92
9
  ```
93
10
 
94
- ### block_insert:在已有页上加一张图
95
-
96
- ```bash
97
- # 先拿 file_token
98
- TOKEN=$(lark-cli slides +media-upload --file ./pic.png --presentation "$PRES_ID" --as user --jq '.data.file_token')
99
-
100
- lark-cli slides xml_presentation.slide replace --as user --params "{
101
- \"xml_presentation_id\": \"$PRES_ID\",
102
- \"slide_id\": \"$SID\"
103
- }" --data "$(jq -n --arg token "$TOKEN" '{
104
- parts: [
105
- {
106
- action: "block_insert",
107
- insertion: ("<img src=\"" + $token + "\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"150\"/>")
108
- }
109
- ]
110
- }')"
111
- ```
112
-
113
- ### 多条 parts 原子执行
114
-
115
- ```bash
116
- lark-cli slides xml_presentation.slide replace --as user --params '{
117
- "xml_presentation_id": "slides_example_presentation_id",
118
- "slide_id": "slide_example_id"
119
- }' --data '{
120
- "parts": [
121
- {"action":"block_replace","block_id":"bab","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"},
122
- {"action":"block_insert","insertion":"<img src=\"<file_token>\" topLeftX=\"700\" topLeftY=\"400\" width=\"180\" height=\"100\"/>"}
123
- ]
124
- }'
125
- ```
126
-
127
- ## 返回值
128
-
129
- ### 成功
130
-
131
- ```json
132
- {
133
- "ok": true,
134
- "identity": "user",
135
- "data": {
136
- "revision_id": 105
137
- }
138
- }
139
- ```
140
-
141
- ### 失败(任一 part 失败,整批不生效)
142
-
143
- 失败时命令以非零退出码结束,stderr 返回类型化错误信封(`error.code`(如 3350001)/ `error.message` / `error.hint`),stdout 不会打印后端原始响应:
144
-
145
- ```json
146
- {
147
- "ok": false,
148
- "identity": "user",
149
- "error": {
150
- "type": "api",
151
- "subtype": "...",
152
- "code": 3350001,
153
- "message": "...",
154
- "hint": "..."
155
- }
156
- }
157
- ```
158
-
159
- | 字段 | 类型 | 说明 |
160
- |------|------|------|
161
- | `data.revision_id` | integer | 成功时返回更新后最新版本号 |
162
-
163
- ## 常见错误
164
-
165
- | 错误码 | 含义 | 解决方案 |
166
- |--------|------|----------|
167
- | 3350001 | `block_id` 在当前页不存在,或 XML 格式 / 结构错误 | 重新 `slide.get` 拿最新 XML,确认 `block_id` 存在;检查 `replacement` / `insertion` 是否合法 XML |
168
- | 400 | `parts` 长度超过 200 | 拆多次调用 |
169
- | 3350002 | `revision_id` 不存在(超过当前版本号) | 用 `-1` 或实际存在的 `revision_id` |
170
- | 400 | XML 格式错误 | `replacement` / `insertion` 必须为合法的 XML 片段,标签闭合 + 属性引号 |
171
- | 403 | 权限不足 | 需要 `slides:presentation:update` 或 `slides:presentation:write_only` |
172
-
173
- ## 注意事项
174
-
175
- 1. **parts 原子事务**:任一条失败整批回滚,不会出现"前几条成功、后几条失败"的中间态。
176
- 2. **block_id 的获取**:`slide.get` 返回的 XML 里每个块(shape、img、table、chart 等)会带 3 位 short element ID,用这个值填 `block_id` / `insert_before_block_id`。
177
- 3. **`<img>` 必须用 file_token**:不能用外链 URL——先 [`slides +media-upload`](lark-slides-media-upload.md) 拿 token。
178
- 4. **不能字段级 patch**:要改一个块的某个属性(比如只改 `topLeftX`),得写整块新 XML 走 `block_replace`;API 不支持"只改一个字段"。
179
- 5. **`block_replace` 要求 `replacement` 根元素带 `id="<block_id>"`**:底层 API 的硬约束,缺失会返回 3350001。推荐走 shortcut [`+replace-slide`](lark-slides-replace-slide.md)——它会自动把 `id` 注入到 `replacement` 根元素上,用户写 XML 时不用自己加。
180
- 6. **`<shape>` 必须有 `<content/>` 子元素**:SML 2.0 schema 要求,缺失同样触发 3350001。shortcut [`+replace-slide`](lark-slides-replace-slide.md) 会自动注入 `<content/>`,直接调底层 API 需要自己加。
181
- 7. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.replace` 查看最新参数结构。
182
-
183
- ## 相关命令
184
-
185
- - [slides +replace-slide](lark-slides-replace-slide.md) — 块级替换 shortcut(推荐,自动注入 id)
186
- - [xml_presentation.slide get](lark-slides-xml-presentation-slide-get.md) — 读原页拿 block short ID
187
- - [slides +media-upload](lark-slides-media-upload.md) — 上传图片拿 file_token
188
- - [slides-editing.md](../workflow/slides-editing.md) — 读-改-写闭环 + 决策树
11
+ `block_replace` 使用 `block_id` 和 `replacement`;追加元素使用 `block_insert` 和 `insertion`。完整 parts 结构、验证和限制见 [lark-slides-replace-slide.md](lark-slides-replace-slide.md)。
@@ -1,157 +1,40 @@
1
- # lark-slides xml_presentations get
1
+ # slides +xml-get(读取演示文稿 XML)
2
2
 
3
- ## 用途
3
+ 读取全文或单页 XML。全文验证优先将结果保存到本地文件;局部编辑可读取单页 XML,从顶层块的 `id` 属性取得 `+replace-slide` 所需的 `block_id`。
4
4
 
5
- 读取飞书幻灯片(PPT)的完整演示文稿 XML,或通过 `--slide-id` / `--slide-number` 读取指定单页 XML。
5
+ ## 参数
6
6
 
7
- ## Shortcut
8
-
9
- 使用 `slides +xml-get` shortcut,可以把 XML 保存到本地文件,避免终端输出被截断。
10
-
11
- ```bash
12
- lark-cli slides +xml-get --as user \
13
- --presentation "slides_example_presentation_id" \
14
- --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
15
- --json
16
- ```
17
-
18
- ### 参数说明
19
-
20
- | 参数 | 类型 | 必需 | 说明 |
21
- |------|------|------|------|
22
- | `--presentation` | string | 是 | 演示文稿的唯一标识符 |
23
- | `--revision-id` | integer | 否 | 版本号,`-1` 表示最新版本 |
24
- | `--output` | string | 否 | XML 保存路径,必须使用相对路径;省略时 XML 在 stdout 的 JSON envelope 中返回 |
25
- | `--raw` | flag | 否 | 直接把 XML 输出到 stdout,不包 JSON envelope;不能与 `--output`、`--jq` 或非 JSON `--format` 同时使用 |
26
- | `--slide-id` | string | 否 | 只读取指定 `slide_id` 的单页 XML;不能与 `--slide-number` 或 `--remove-attr-id` 同时使用 |
27
- | `--slide-number` | integer | 否 | 只读取指定的 1-based 页码;不能与 `--slide-id` 或 `--remove-attr-id` 同时使用 |
28
- | `--remove-attr-id` | flag | 否 | 仅全文读取可用;移除 XML id 属性后读取,不适合后续精确块编辑 |
29
- | `--json` | flag | 否 | `--format json` 的简写,json 为默认输出格式 |
30
-
31
-
32
- ### 基础示例
33
-
34
- ```bash
35
- lark-cli slides +xml-get --as user \
36
- --presentation "slides_example_presentation_id" \
37
- --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
38
- --json
39
- ```
40
-
41
- ### 读取单页并保存
42
-
43
- 按页面 ID 和按页码二选一:
44
-
45
- ```bash
46
- lark-cli slides +xml-get --as user \
47
- --presentation "slides_example_presentation_id" \
48
- --slide-id "slide_example_id" \
49
- --output .lark-slides/plan/slides_example_presentation_id/slide.xml \
50
- --json
51
- ```
52
-
53
- ### 直接输出 XML 到管道
54
-
55
- ```bash
56
- lark-cli slides +xml-get --as user \
57
- --presentation "slides_example_presentation_id" \
58
- --slide-number 1 \
59
- --raw
60
- ```
7
+ | 参数 | 必填 | 说明 |
8
+ |------|------|------|
9
+ | `--presentation` | 是 | `xml_presentation_id`、Slides URL,或可解析为 Slides 的 wiki URL |
10
+ | `--revision-id` | 否 | 版本号;`-1` 表示最新版本 |
11
+ | `--output` | 否 | XML 保存路径,必须使用 CWD 内相对路径;省略时返回 JSON |
12
+ | `--raw` | 否 | 将 XML 直接输出到 stdout;不能与 `--output`、`--jq` 或非 JSON `--format` 一起使用 |
13
+ | `--slide-id` | 否 | 只读取指定页面;不能与 `--slide-number` 或 `--remove-attr-id` 一起使用 |
14
+ | `--slide-number` | 否 | 只读取指定的 1-based 页码;不能与 `--slide-id` 或 `--remove-attr-id` 一起使用 |
15
+ | `--remove-attr-id` | 否 | 仅全文读取可用;移除 XML `id` 属性,不适合后续精确块编辑 |
61
16
 
62
- ### 指定版本读取
17
+ ## 示例
63
18
 
64
19
  ```bash
20
+ # 读取全文并保存,用于创建后验证
65
21
  lark-cli slides +xml-get --as user \
66
- --presentation "slides_example_presentation_id" \
67
- --revision-id 10 \
68
- --output .lark-slides/plan/slides_example_presentation_id/readback-r10.xml \
69
- --json
70
- ```
71
-
72
- ### 移除 XML id 属性后读取
22
+ --presentation "$PRES_ID" \
23
+ --output ".lark-slides/plan/$PRES_ID/readback.xml"
73
24
 
74
- ```bash
25
+ # 读取单页以获取 block_id
75
26
  lark-cli slides +xml-get --as user \
76
- --presentation "slides_example_presentation_id" \
77
- --remove-attr-id \
78
- --output .lark-slides/plan/slides_example_presentation_id/readback-no-id.xml \
79
- --json
80
- ```
27
+ --presentation "$PRES_ID" --slide-id "$SID" --raw
81
28
 
82
-
83
- ## 底层原生命令形态
84
-
85
- ```bash
86
- lark-cli slides xml_presentations get --as user --params '<json_params>'
29
+ # 读取单页,同时记录 revision_id 用于后续乐观锁
30
+ REV=$(lark-cli slides +xml-get --as user \
31
+ --presentation "$PRES_ID" --slide-id "$SID" \
32
+ --jq '.data.revision_id')
87
33
  ```
88
34
 
89
- ### 参数说明
90
-
91
- | 参数 | 类型 | 必需 | 说明 |
92
- |------|------|------|------|
93
- | `--params` | JSON string | 是 | 路径参数与查询参数,结构以 schema 为准 |
94
-
95
- ### params JSON 结构
96
-
97
- ```json
98
- {
99
- "xml_presentation_id": "slides_example_presentation_id",
100
- "revision_id": -1
101
- }
102
- ```
103
-
104
- | 字段 | 类型 | 必需 | 说明 |
105
- |------|------|------|------|
106
- | `xml_presentation_id` | string | 是 | 演示文稿的唯一标识符 |
107
- | `revision_id` | integer | 否 | 版本号,`-1` 表示最新版本 |
108
-
109
-
110
- ### 返回值
111
-
112
- 成功时返回演示文稿的完整信息:
113
-
114
- ```json
115
- {
116
- "ok": true,
117
- "identity": "user",
118
- "data": {
119
- "xml_presentation": {
120
- "presentation_id": "slides_example_presentation_id",
121
- "revision_id": 1,
122
- "content": "<presentation xmlns=\"https://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
123
- }
124
- }
125
- }
126
- ```
127
-
128
- ### 返回字段说明
129
-
130
- | 字段 | 类型 | 说明 |
131
- |------|------|------|
132
- | `data.xml_presentation.presentation_id` | string | 演示文稿唯一标识 |
133
- | `data.xml_presentation.revision_id` | integer | 版本号 |
134
- | `data.xml_presentation.content` | string | XML 格式的完整内容 |
135
-
136
- ### 常见错误
137
-
138
- | 错误码 | 含义 | 解决方案 |
139
- |--------|------|----------|
140
- | 404 | 演示文稿不存在 | 检查 `xml_presentation_id` 是否正确 |
141
- | 403 | 权限不足 | 检查是否拥有 `slides:presentation:read` scope,或是否有访问权限 |
142
- | 400 | 参数格式错误 | 确保 `--params` 是合法的 JSON 字符串 |
143
-
144
-
145
- ### 注意事项
146
-
147
- 1. lark-slides 工作流默认使用 `slides +xml-get`;只有必须直接调底层 API 时,才使用
148
- 2. 直接调用底层 API 前,使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
149
- 3. 返回的 XML 在 `data.xml_presentation.content` 字段中
150
- 4. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
151
- 5. 不要在普通工作流中把完整 XML 打到终端;用 `slides +xml-get --output` 保存文件
35
+ JSON 输出中,全文 XML 位于 `.data.xml_presentation.content`,单页 XML 位于 `.data.slide.content`;二者的 `.data.revision_id` 都可用于后续写操作。
152
36
 
153
- ## 相关命令
37
+ 相关命令:
154
38
 
155
- - [slides +create](lark-slides-create.md) - 创建空白 PPT
156
- - [slides +add-slide](lark-slides-add-slide.md) - 添加幻灯片页面
157
- - [slides +delete-slide](lark-slides-delete-slide.md) - 删除幻灯片页面
39
+ - [slides +replace-slide](lark-slides-replace-slide.md) — 块级替换 / 插入
40
+ - [slides +update-slide](lark-slides-update-slide.md) — 整页覆盖
@@ -1,5 +1,5 @@
1
- # lark-slides xml_presentation.slide get(兼容入口)
1
+ # slides +xml-get(单页读取兼容入口)
2
2
 
3
- 本文档已迁移至 [`cli/lark-slides-xml-presentation-slide-get.md`](cli/lark-slides-xml-presentation-slide-get.md)。
3
+ 本文档已合并至 [`cli/lark-slides-xml-presentations-get.md`](cli/lark-slides-xml-presentations-get.md)。
4
4
 
5
- 此文件仅保留旧路径兼容性;后续引用请使用新路径。
5
+ 此文件保留旧路径兼容性;后续引用请使用 `cli/` 下的正式 reference。
@@ -1,5 +1,5 @@
1
- # lark-slides xml_presentation.slide replace(兼容入口)
1
+ # slides +replace-slide(兼容入口)
2
2
 
3
3
  本文档已迁移至 [`cli/lark-slides-xml-presentation-slide-replace.md`](cli/lark-slides-xml-presentation-slide-replace.md)。
4
4
 
5
- 此文件仅保留旧路径兼容性;后续引用请使用新路径。
5
+ 此文件保留旧路径兼容性;后续引用请使用 `cli/` 下的正式 reference。
@@ -1,5 +1,5 @@
1
- # lark-slides xml_presentations get(兼容入口)
1
+ # slides +xml-get(兼容入口)
2
2
 
3
3
  本文档已迁移至 [`cli/lark-slides-xml-presentations-get.md`](cli/lark-slides-xml-presentations-get.md)。
4
4
 
5
- 此文件仅保留旧路径兼容性;后续引用请使用新路径。
5
+ 此文件保留旧路径兼容性;后续引用请使用 `cli/` 下的正式 reference。
@@ -35,7 +35,7 @@
35
35
  | 图表没有显示 | 检查 `chartPlotArea` 和 `chartData` 是否都包含,`dim1` / `dim2` 数据数量是否匹配 |
36
36
  | 图片被裁掉一部分 | `<img>` 的 `width` / `height` 是裁剪后尺寸;要整图显示就让 `width:height` 对齐原图比例 |
37
37
  | 图片不显示 / `<img src>` 仍是 `@path` | `@` 占位符由 `+create` 和 `+add-slide` 替换 |
38
- | 新插入的 `<img>` 挡住原有元素 | `slide.get` 读原页,对照已有块坐标挑空白位置;空间不够就在同一批 `--parts` 里先移动/缩小现有块再插图 |
38
+ | 新插入的 `<img>` 挡住原有元素 | 用 `+xml-get --slide-id` 读原页,对照已有块坐标挑空白位置;空间不够就在同一批 `--parts` 里先移动/缩小现有块再插图 |
39
39
  | 渐变背景变成白色 | 渐变必须用 `rgba()` 格式 + 百分比停靠点,如 `linear-gradient(135deg,rgba(30,60,114,1) 0%,rgba(59,130,246,1) 100%)` |
40
40
  | 整体风格不统一 | 封面页和结尾页用同一背景,内容页保持一致的配色和字号体系 |
41
41
 
@@ -44,12 +44,12 @@
44
44
  | 错误码 / 信号 | 含义 | 解决方案 |
45
45
  |--------------|------|----------|
46
46
  | 400 XML 格式错误 | XML 语法错误 | 检查标签闭合、属性引号、特殊字符转义 |
47
- | 400 请求包装错误 | `--data` 未按 schema 包装 | 检查是否传入 `xml_presentation.content` 或 `slide.content` |
47
+ | 400 XML 输入错误 | XML 未按所用 shortcut 的参数传入 | 按 `+create` / `+add-slide` / `+update-slide` reference 检查 `--slides`、`--slide` 或 `--content` 的值 |
48
48
  | 创建成功但页面空白 / 内容缺失 / 布局错乱 | 常见于 `--slides '[...]'` 字面量的 shell 转义或长参数传递问题 | 改用 `--slide @file`(每页一个文件)或 `--slides @deck.json`,并在创建后立即读取 XML 验证 |
49
49
  | 403 权限不足 | scope 或文档权限不匹配 | 确认 scope 和文档权限;无权限时根据错误响应引导用户解决 |
50
50
  | 404 演示文稿不存在 | `xml_presentation_id` 不正确或无权限 | 检查 token;wiki URL 需先解析真实 `obj_token` |
51
51
  | 404 幻灯片不存在 | `slide_id` 不正确 | 重新读取 presentation 或 slide,确认最新 ID |
52
- | 1061002 媒体上传 params error | slides 媒体上传参数不符合约定 | 用 `slides +media-upload`,不要手拼原生 `medias/upload_all`;slides 唯一可用 `parent_type` 是 `slide_file` |
52
+ | 1061002 媒体上传 params error | slides 媒体上传参数不符合约定 | 用 `slides +media-upload`,由 shortcut 处理 Slides 所需的媒体参数 |
53
53
  | 1061004 forbidden | 当前用户对演示文稿无编辑权限 | 确认当前用户对目标 PPT 有编辑权限 |
54
54
  | 3350001 | XML 非 well-formed、XML 结构不符合服务端要求,或 replace 片段问题 | 优先检查未转义字符;replace 场景再看 `block_id` 和 `<content/>` |
55
55
  | 3350002 | `revision_id` 大于当前版本 | 用 `-1` 取当前版本,或重新用 `slides +xml-get` 取最新 `revision_id` |
@@ -1,6 +1,6 @@
1
1
  # 编辑已有 PPT:读-改-写闭环
2
2
 
3
- 局部编辑走 **shortcut [`+replace-slide`](../cli/lark-slides-replace-slide.md)**(块级替换 / 插入),配合 `xml_presentation.slide.get` 读原页拿 `block_id`。整页重建走 **[`+update-slide`](../cli/lark-slides-update-slide.md)**,多页就每页各跑一次 —— 它原地覆盖并保留 `slide_id` 和页序;只有写进 `--content` 且带原 id 的元素才会保留元素 id,遗漏的元素会被删除。
3
+ 局部编辑走 **shortcut [`+replace-slide`](../cli/lark-slides-replace-slide.md)**(块级替换 / 插入),配合 `+xml-get --slide-id` 读原页拿 `block_id`。整页重建走 **[`+update-slide`](../cli/lark-slides-update-slide.md)**,多页就每页各跑一次 —— 它原地覆盖并保留 `slide_id` 和页序;只有写进 `--content` 且带原 id 的元素才会保留元素 id,遗漏的元素会被删除。
4
4
 
5
5
  > 生成 XML 前**必读** [xml-schema-quick-ref.md](../xml/xml-schema-quick-ref.md)。
6
6
 
@@ -22,8 +22,8 @@ PRES_ID="xml_presentation_id_here"
22
22
  SID="slide_id_here"
23
23
 
24
24
  # 1. 读原页,从 XML 里挑出要改的块的 3 位 short id(如 bUn / bab)
25
- lark-cli slides xml_presentation.slide get --as user \
26
- --params "{\"xml_presentation_id\":\"$PRES_ID\",\"slide_id\":\"$SID\"}"
25
+ lark-cli slides +xml-get --as user \
26
+ --presentation "$PRES_ID" --slide-id "$SID" --raw
27
27
 
28
28
  # 2. 用 +replace-slide 直接改那个块(不需要搬原 XML)
29
29
  lark-cli slides +replace-slide --as user \
@@ -41,8 +41,8 @@ lark-cli slides +replace-slide --as user \
41
41
 
42
42
  ```bash
43
43
  # 读时拿当前 revision_id
44
- REV=$(lark-cli slides xml_presentation.slide get --as user \
45
- --params "{\"xml_presentation_id\":\"$PRES_ID\",\"slide_id\":\"$SID\"}" \
44
+ REV=$(lark-cli slides +xml-get --as user \
45
+ --presentation "$PRES_ID" --slide-id "$SID" \
46
46
  --jq '.data.revision_id')
47
47
 
48
48
  # 写时传该版本号,服务端以此为 base
@@ -74,7 +74,7 @@ lark-cli slides +replace-slide --as user \
74
74
  | 字段 | 必填 | 说明 |
75
75
  |------|------|------|
76
76
  | `action` | 是 | 固定为 `block_replace` |
77
- | `block_id` | 是 | 目标块的 3 位 short element ID(从 `slide.get` 返回的 XML 里读)|
77
+ | `block_id` | 是 | 目标块的 3 位 short element ID(从 `+xml-get --slide-id` 返回的 XML 里读)|
78
78
  | `replacement` | 是 | 新 XML 片段;根元素 `id` 会被 CLI 自动注入为 `block_id` |
79
79
 
80
80
  ### block_insert — 整块插入
@@ -128,16 +128,15 @@ cat parts.json | lark-cli slides +replace-slide --as user --presentation "$PRES_
128
128
 
129
129
  | 现象 | 原因 | 对策 |
130
130
  |------|------|------|
131
- | 3350001,hint 含 "block_id not found" | `parts[i].block_id` 在当前页不存在 | 重新 `slide.get` 拿最新 XML,按里面的 short ID 再填 |
132
- | 3350002 not found | `--revision-id` 传了不存在的版本号 | 用 `-1` 或实际存在的 `revision_id` |
131
+ | 3350001,hint 含 "block_id not found" | `parts[i].block_id` 在当前页不存在 | 重新用 `+xml-get --slide-id` 拿最新 XML,按里面的 short ID 再填 |
132
+ | 3350002 not found | `--revision-id` 传了不存在的版本号 | 用 `-1` 或 `+xml-get --slide-id` 返回的 `revision_id` |
133
133
  | `<img>` 不显示 / 显示破图 | `src` 写了外链 URL | 换成通过 `+media-upload` 拿到的 `file_token` |
134
- | 3350001(block_replace 返回) | 正常情况下 CLI 已自动注入 `id` 和 `<content/>`;如果仍报错,确认 `block_id` 在当前页存在(重新 `slide.get`),检查 XML 结构是否合法;坐标是否超出 960×540 范围 | — |
134
+ | 3350001(block_replace 返回) | 正常情况下 CLI 已自动注入 `id` 和 `<content/>`;如果仍报错,确认 `block_id` 在当前页存在(重新 `+xml-get --slide-id`),检查 XML 结构是否合法;坐标是否超出 960×540 范围 | — |
135
135
 
136
136
  ## 相关文档
137
137
 
138
138
  - [lark-slides-replace-slide.md](../cli/lark-slides-replace-slide.md) — +replace-slide shortcut 参数详情
139
139
  - [lark-slides-update-slide.md](../cli/lark-slides-update-slide.md) — +update-slide shortcut 参数详情(整页覆盖)
140
- - [lark-slides-xml-presentation-slide-get.md](../cli/lark-slides-xml-presentation-slide-get.md) — slide.get 参考(拿 `block_id` / `revision_id`)
141
- - [lark-slides-xml-presentation-slide-replace.md](../cli/lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考(一般直接用 shortcut 即可)
140
+ - [lark-slides-xml-presentations-get.md](../cli/lark-slides-xml-presentations-get.md) — `+xml-get` 参数与单页读取方法
142
141
  - [lark-slides-media-upload.md](../cli/lark-slides-media-upload.md) — 上传图片拿 file_token
143
142
  - [xml-schema-quick-ref.md](../xml/xml-schema-quick-ref.md) — XML 元素和属性速查
@@ -1,6 +1,6 @@
1
1
  # task +assign
2
2
 
3
- > **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
3
+ > **Prerequisites:** Please read `../../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
4
4
 
5
5
  Assign or remove members (assignees) from a task.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # task +comment
2
2
 
3
- > **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
3
+ > **Prerequisites:** Please read `../../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
4
4
 
5
5
  Add a comment to an existing task.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # task +complete
2
2
 
3
- > **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
3
+ > **Prerequisites:** Please read `../../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
4
4
 
5
5
  Mark a task as completed.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # task +create
2
2
 
3
- > **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
3
+ > **Prerequisites:** Please read `../../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
4
4
 
5
5
  Create a new task in Lark.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # task +followers
2
2
 
3
- > **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
3
+ > **Prerequisites:** Please read `../../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
4
4
 
5
5
  Manage task followers. Add or remove followers from an existing task.
6
6