@amaster.ai/pi-lark 0.1.7 → 0.1.9
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.
- package/package.json +2 -2
- package/skills/lark-apps/SKILL.md +41 -6
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +5 -4
- package/skills/lark-apps/references/lark-apps-create.md +6 -3
- package/skills/lark-apps/references/lark-apps-db.md +130 -2
- package/skills/lark-apps/references/lark-apps-get.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +1 -1
- package/skills/lark-apps/references/lark-apps-local-dev.md +27 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +1 -1
- package/skills/lark-apps/references/lark-apps-user-id-convert.md +63 -0
- package/skills/lark-base/SKILL.md +155 -159
- package/skills/lark-base/references/{lark-base-role-guide.md → lark-base-advanced-permission-and-role.md} +5 -5
- package/skills/lark-base/references/lark-base-app-block-data-config.md +122 -0
- package/skills/lark-base/references/lark-base-app.md +225 -0
- package/skills/lark-base/references/lark-base-cell-value.md +26 -19
- package/skills/lark-base/references/{dashboard-block-data-config.md → lark-base-dashboard-block-config.md} +37 -5
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +18 -2
- package/skills/lark-base/references/lark-base-dashboard.md +25 -12
- package/skills/lark-base/references/lark-base-data-analysis-pandas.md +93 -0
- package/skills/lark-base/references/lark-base-data-analysis-python-stdlib.md +120 -0
- package/skills/lark-base/references/lark-base-data-query.md +8 -11
- package/skills/lark-base/references/lark-base-field-create.md +13 -45
- package/skills/lark-base/references/{formula-field-guide.md → lark-base-field-formula.md} +1 -1
- package/skills/lark-base/references/{lookup-field-guide.md → lark-base-field-lookup.md} +1 -1
- package/skills/lark-base/references/{lark-base-field-json.md → lark-base-field-schema.md} +18 -100
- package/skills/lark-base/references/lark-base-field-update.md +13 -51
- package/skills/lark-base/references/lark-base-filter-condition.md +19 -31
- package/skills/lark-base/references/lark-base-record-batch-create.md +5 -1
- package/skills/lark-base/references/lark-base-record-batch-update.md +5 -2
- package/skills/lark-base/references/lark-base-record-query-and-analysis-cloud-sop.md +145 -0
- package/skills/lark-base/references/lark-base-record-query-and-analysis-sop.md +233 -0
- package/skills/lark-base/references/{role-config.md → lark-base-role-config.md} +2 -2
- package/skills/lark-base/references/lark-base-view-set-filter.md +1 -1
- package/skills/lark-base/references/lark-base-workflow-schema.md +2 -2
- package/skills/lark-base/references/{lark-base-workflow-guide.md → lark-base-workflow.md} +1 -1
- package/skills/lark-calendar/SKILL.md +3 -1
- package/skills/lark-calendar/references/lark-calendar-create.md +4 -3
- package/skills/lark-doc/SKILL.md +26 -61
- package/skills/lark-doc/references/genres/business-analysis.md +30 -0
- package/skills/lark-doc/references/genres/data-report.md +32 -0
- package/skills/lark-doc/references/genres/email.md +38 -0
- package/skills/lark-doc/references/genres/execution-plan.md +27 -0
- package/skills/lark-doc/references/genres/formal-doc.md +37 -0
- package/skills/lark-doc/references/genres/meeting-minutes.md +24 -0
- package/skills/lark-doc/references/genres/memo-brief.md +25 -0
- package/skills/lark-doc/references/genres/official-redhead.md +73 -0
- package/skills/lark-doc/references/genres/prd.md +26 -0
- package/skills/lark-doc/references/genres/proposal.md +24 -0
- package/skills/lark-doc/references/genres/research-report.md +32 -0
- package/skills/lark-doc/references/genres/retrospective.md +25 -0
- package/skills/lark-doc/references/genres/route-consumer.md +37 -0
- package/skills/lark-doc/references/genres/route-creative.md +36 -0
- package/skills/lark-doc/references/genres/route-knowledge.md +39 -0
- package/skills/lark-doc/references/genres/route-marketing.md +40 -0
- package/skills/lark-doc/references/genres/route-media.md +36 -0
- package/skills/lark-doc/references/genres/route-opinion.md +38 -0
- package/skills/lark-doc/references/genres/route-personal-brand.md +36 -0
- package/skills/lark-doc/references/genres/route-platform.md +9 -0
- package/skills/lark-doc/references/genres/route-report.md +10 -0
- package/skills/lark-doc/references/genres/route-workplace.md +17 -0
- package/skills/lark-doc/references/genres/sop-tutorial.md +41 -0
- package/skills/lark-doc/references/genres/technical-doc.md +39 -0
- package/skills/lark-doc/references/genres/wechat.md +39 -0
- package/skills/lark-doc/references/genres/weekly-report.md +24 -0
- package/skills/lark-doc/references/genres/white-paper.md +32 -0
- package/skills/lark-doc/references/genres/xiaohongshu.md +38 -0
- package/skills/lark-doc/references/lark-doc-create-workflow.md +121 -0
- package/skills/lark-doc/references/lark-doc-create.md +22 -48
- package/skills/lark-doc/references/lark-doc-fetch.md +80 -92
- package/skills/lark-doc/references/lark-doc-history.md +16 -15
- package/skills/lark-doc/references/lark-doc-md.md +5 -1
- package/skills/lark-doc/references/lark-doc-media-download.md +2 -1
- package/skills/lark-doc/references/lark-doc-script.md +76 -0
- package/skills/lark-doc/references/lark-doc-update.md +73 -221
- package/skills/lark-doc/references/lark-doc-whiteboard.md +5 -9
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +17 -12
- package/skills/lark-doc/references/lark-doc-xml.md +38 -167
- package/skills/lark-drive/SKILL.md +11 -7
- package/skills/lark-drive/references/lark-drive-apply-permission.md +1 -1
- package/skills/lark-drive/references/lark-drive-copy.md +87 -0
- package/skills/lark-drive/references/lark-drive-download.md +29 -2
- package/skills/lark-drive/references/lark-drive-export.md +4 -0
- package/skills/lark-drive/references/lark-drive-member-remove.md +59 -0
- package/skills/lark-drive/references/lark-drive-preview.md +21 -2
- package/skills/lark-drive/references/lark-drive-push.md +5 -1
- package/skills/lark-drive/references/lark-drive-search.md +2 -0
- package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
- package/skills/lark-drive/references/lark-drive-update-title.md +78 -0
- package/skills/lark-event/SKILL.md +7 -4
- package/skills/lark-event/references/lark-event-vc.md +8 -2
- package/skills/lark-im/SKILL.md +14 -9
- package/skills/lark-im/references/lark-im-chat-list.md +9 -2
- package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
- package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
- package/skills/lark-im/references/lark-im-chat-search.md +9 -2
- package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
- package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
- package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
- package/skills/lark-im/references/lark-im-flag-list.md +2 -2
- package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
- package/skills/lark-im/references/lark-im-messages-resources-download.md +19 -25
- package/skills/lark-im/references/lark-im-messages-search.md +4 -5
- package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
- package/skills/lark-mail/references/lark-mail-triage.md +19 -4
- package/skills/lark-minutes/SKILL.md +12 -6
- package/skills/lark-minutes/references/lark-minutes-apply-permission.md +95 -0
- package/skills/lark-minutes/references/lark-minutes-detail.md +7 -6
- package/skills/lark-minutes/references/lark-minutes-download.md +4 -2
- package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
- package/skills/lark-note/SKILL.md +13 -9
- package/skills/lark-note/references/lark-note-detail.md +5 -2
- package/skills/lark-note/references/lark-note-transcript.md +2 -0
- package/skills/lark-shared/SKILL.md +39 -3
- package/skills/lark-sheets/SKILL.md +83 -82
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +13 -58
- package/skills/lark-sheets/references/lark-sheets-chart.md +2 -1
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +5 -5
- package/skills/lark-sheets/references/lark-sheets-read-data.md +80 -6
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +21 -10
- package/skills/lark-sheets/references/lark-sheets-styles-put.md +93 -0
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +2 -2
- package/skills/lark-sheets/references/lark-sheets-workbook.md +4 -3
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -12
- package/skills/lark-sheets/scripts/lark_detect_subtables.py +593 -0
- package/skills/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
- package/skills/lark-sheets/scripts/lark_profile_table.py +614 -0
- package/skills/lark-sheets/scripts/lark_sheet_range.py +176 -0
- package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
- package/skills/lark-sheets/scripts/sheets_df.py +21 -3
- package/skills/lark-slides/SKILL.md +64 -81
- package/skills/lark-slides/references/cli/lark-slides-add-slide.md +92 -0
- package/skills/lark-slides/references/cli/lark-slides-create.md +176 -0
- package/skills/lark-slides/references/cli/lark-slides-delete-slide.md +65 -0
- package/skills/lark-slides/references/cli/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/cli/lark-slides-media-upload.md +103 -0
- package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +259 -0
- package/skills/lark-slides/references/cli/lark-slides-screenshot.md +115 -0
- package/skills/lark-slides/references/cli/lark-slides-update-slide.md +163 -0
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +110 -0
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +188 -0
- package/skills/lark-slides/references/cli/lark-slides-xml-presentations-get.md +157 -0
- package/skills/lark-slides/references/iconpark-index.json +5 -41901
- package/skills/lark-slides/references/iconpark.md +3 -44
- package/skills/lark-slides/references/lark-slides-add-slide.md +5 -0
- package/skills/lark-slides/references/lark-slides-create.md +3 -162
- package/skills/lark-slides/references/lark-slides-delete-slide.md +5 -0
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +3 -142
- package/skills/lark-slides/references/lark-slides-history.md +3 -130
- package/skills/lark-slides/references/lark-slides-media-upload.md +3 -124
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +3 -83
- package/skills/lark-slides/references/lark-slides-replace-slide.md +3 -235
- package/skills/lark-slides/references/lark-slides-screenshot.md +3 -95
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +3 -108
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +3 -186
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +3 -132
- package/skills/lark-slides/references/planning-layer.md +1 -1
- package/skills/lark-slides/references/slides_chart_demo.xml +5 -1416
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +3 -3468
- package/skills/lark-slides/references/troubleshooting.md +3 -61
- package/skills/lark-slides/references/validation-checklist.md +3 -154
- package/skills/lark-slides/references/workflow/error-handling.md +62 -0
- package/skills/lark-slides/references/workflow/slides-editing.md +143 -0
- package/skills/lark-slides/references/workflow/template-editing.md +85 -0
- package/skills/lark-slides/references/workflow/validation-xml.md +156 -0
- package/skills/lark-slides/references/xml/iconpark-index.json +37458 -0
- package/skills/lark-slides/references/xml/iconpark.md +46 -0
- package/skills/lark-slides/references/xml/slides_chart_demo.xml +1415 -0
- package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +3514 -0
- package/skills/lark-slides/references/xml/xml-schema-quick-ref.md +497 -0
- package/skills/lark-slides/references/xml-schema-quick-ref.md +3 -483
- package/skills/lark-slides/scripts/iconpark_tool.py +1 -1
- package/skills/lark-slides/scripts/sxsd_validator.py +154 -10
- package/skills/lark-slides/scripts/xml_lint.py +2989 -0
- package/skills/lark-slides/scripts/xml_lint_test.py +4720 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +3 -2691
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +5 -3788
- package/skills/lark-task/SKILL.md +12 -0
- package/skills/lark-task/references/lark-task-create.md +3 -1
- package/skills/lark-vc/SKILL.md +15 -5
- package/skills/lark-vc/references/lark-vc-detail.md +11 -6
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-events.md → lark-vc/references/lark-vc-meeting-events.md} +121 -20
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-list-active.md → lark-vc/references/lark-vc-meeting-list-active.md} +2 -2
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-message-send.md → lark-vc/references/lark-vc-meeting-message-send.md} +3 -3
- package/skills/lark-vc/references/lark-vc-recording.md +8 -6
- package/skills/lark-vc/references/vc-domain-boundaries.md +8 -1
- package/skills/lark-vc-agent/SKILL.md +24 -9
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +2 -2
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +2 -2
- package/skills/lark-whiteboard/SKILL.md +15 -8
- package/skills/lark-whiteboard/references/lark-whiteboard-export.md +4 -3
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +4 -4
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +19 -17
- package/skills/lark-whiteboard/routes/dsl.md +8 -2
- package/skills/lark-whiteboard/routes/mermaid.md +1 -1
- package/skills/lark-whiteboard/routes/svg-edit.md +5 -2
- package/skills/lark-whiteboard/routes/svg.md +3 -1
- package/skills/lark-whiteboard/scenes/mention.md +71 -0
- package/skills/lark-wiki/SKILL.md +8 -4
- package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
- package/skills/lark-wiki/references/lark-wiki-node-copy.md +5 -19
- package/skills/lark-wiki/references/lark-wiki-node-create.md +19 -2
- package/skills/lark-wiki/references/lark-wiki-node-get.md +15 -0
- package/skills/lark-wiki/references/lark-wiki-node-list.md +1 -1
- package/skills/lark-base/references/lark-base-data-analysis-sop.md +0 -210
- package/skills/lark-base/references/lark-base-data-query-guide.md +0 -61
- package/skills/lark-base/references/lark-base-record-upsert.md +0 -63
- package/skills/lark-doc/references/lark-doc-word-stat.md +0 -93
- package/skills/lark-doc/references/style/lark-doc-create-workflow.md +0 -47
- package/skills/lark-doc/references/style/lark-doc-style.md +0 -68
- package/skills/lark-doc/references/style/lark-doc-update-workflow.md +0 -48
- package/skills/lark-doc/scripts/doc_word_stat.py +0 -1243
- package/skills/lark-slides/references/lark-slides-replace-pages.md +0 -95
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -219
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -126
|
@@ -1,85 +1,5 @@
|
|
|
1
|
-
# PPT Template Rewrite Principles
|
|
1
|
+
# PPT Template Rewrite Principles(兼容入口)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本文档已迁移至 [`workflow/template-editing.md`](workflow/template-editing.md)。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
如果用户提供的模板是 PPTX 格式,先把模板导入成 Lark Slides。后续写入目标是导入后的 Slides,不是新建一个脱离模板的 deck,也不是先在本地重画 PPTX 再导入。
|
|
8
|
-
|
|
9
|
-
直接使用以下命令,不需要先加载 `lark-drive` Skill:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
lark-cli drive +import --as user --file "<template.pptx>" --type slides --json
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
可选参数:用 `--name "<title>"` 指定导入后的 Slides 标题;用 `--folder-token <FOLDER_TOKEN>` 指定目标文件夹。若返回 `ready=false` / `timed_out=true`,直接执行返回值里的 `next_command`;等价形式是:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
lark-cli drive +task_result --scenario import --ticket <TICKET>
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Read Before Editing
|
|
22
|
-
|
|
23
|
-
导入后必须阅读 Slides 内容,理解每页的真实版式、字体、层级、图片、图表、shape、表格和文本容器。阅读结果是后续编辑的事实来源。
|
|
24
|
-
|
|
25
|
-
阅读页面时至少判断:
|
|
26
|
-
|
|
27
|
-
- 该页原本承担的角色,例如封面、章节页、目录、流程、对比、数据、总结。
|
|
28
|
-
- 该页的主要版式结构,例如图文关系、箭头、时间线、节点、表格、图表、左右对照、背景图或产品图。
|
|
29
|
-
- 哪些文本框、shape 标签、表格单元格或图表标签承载内容。
|
|
30
|
-
- 原页面的字体、字号、颜色、对齐、层级和留白关系。
|
|
31
|
-
|
|
32
|
-
## Edit The Imported Slides Directly
|
|
33
|
-
|
|
34
|
-
理解页面后,直接在导入后的 Slides 上编辑。允许的操作包括:
|
|
35
|
-
|
|
36
|
-
- 填写、替换、凝练或删除文字。
|
|
37
|
-
- 替换或补充图片。
|
|
38
|
-
- 更新图表、表格、数字标签或节点标签里的内容。
|
|
39
|
-
- 按需复制、删除或重排模板页。
|
|
40
|
-
- 在源页面没有合适承载位置时,做局部、小范围新增元素。
|
|
41
|
-
|
|
42
|
-
新增元素只能补足内容缺口,不能成为新的主版式。页面主体仍应由模板原有版式承载。
|
|
43
|
-
|
|
44
|
-
## Preserve Design
|
|
45
|
-
|
|
46
|
-
编辑必须严格沿用原版式和字体,只改内容,不做设计。
|
|
47
|
-
|
|
48
|
-
默认保留:
|
|
49
|
-
|
|
50
|
-
- 页面布局、视觉层级、留白和对齐关系。
|
|
51
|
-
- 原字体、字号体系、颜色、文本框位置和 shape 顺序。
|
|
52
|
-
- 背景图、图片、logo、图表、表格、装饰形状、线条、图标和页面结构。
|
|
53
|
-
- 模板中不同页型之间的差异。
|
|
54
|
-
|
|
55
|
-
不要把模板页改造成统一的通用卡片、空白板式布局、标题栏、三栏、2x2 卡片或大面积遮罩。不要把模板当作背景图后另起一套设计系统。
|
|
56
|
-
|
|
57
|
-
## Content Only
|
|
58
|
-
|
|
59
|
-
内容必须优先进入原页面已有的文本框、shape 标签、节点、表格单元格、图表标签或注释容器。
|
|
60
|
-
|
|
61
|
-
如果原容器空间不足,优先:
|
|
62
|
-
|
|
63
|
-
- 凝练文字。
|
|
64
|
-
- 降低字号但保持原字体体系。
|
|
65
|
-
- 拆分到页面已有的邻近容器。
|
|
66
|
-
- 使用模板已有的注释、标签或补充说明区域。
|
|
67
|
-
- 复制同页或同模板中的原生容器样式做局部补充。
|
|
68
|
-
|
|
69
|
-
不要为了容纳长文案而重画页面主体结构。不要用新增大卡片遮住原图表、箭头、图片、背景或关键 shape。
|
|
70
|
-
|
|
71
|
-
## Readback And Tune
|
|
72
|
-
|
|
73
|
-
完成编辑后必须回读结果,并逐页微调。
|
|
74
|
-
|
|
75
|
-
回读时重点检查:
|
|
76
|
-
|
|
77
|
-
- 文字是否溢出、截断、压线或超出容器。
|
|
78
|
-
- 文本是否遮挡图片、图表、shape、箭头、节点或其他文字。
|
|
79
|
-
- shape 顺序是否导致内容被覆盖或遮住。
|
|
80
|
-
- 新内容是否仍然落在模板原有版式中,而不是覆盖模板结构。
|
|
81
|
-
- 字体、字号、颜色、对齐和层级是否仍贴近原页。
|
|
82
|
-
|
|
83
|
-
发现文字溢出时,优先凝练文字或缩减字号。发现遮挡时,调整 shape 顺序、局部位置或复用原有空白区域解决。只有在这些方法都不能满足内容表达时,才做局部新增或删除。
|
|
84
|
-
|
|
85
|
-
完成标准是“原模板的版式、字体和视觉结构仍清晰存在,内容已经被准确替换,并且回读后没有溢出和遮挡”。
|
|
5
|
+
此文件仅保留旧路径兼容性;后续引用请使用新路径。
|
|
@@ -1,237 +1,5 @@
|
|
|
1
|
-
# slides +replace-slide
|
|
1
|
+
# slides +replace-slide(兼容入口)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本文档已迁移至 [`cli/lark-slides-replace-slide.md`](cli/lark-slides-replace-slide.md)。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
1. `--presentation` 接受 `xml_presentation_id` / `/slides/` URL / `/wiki/` URL(wiki 自动解析);
|
|
8
|
-
2. `block_replace` 的 `replacement` 根元素 `id="<block_id>"` 由 CLI 自动注入——底层 API 的硬约束(不注入返回 3350001);直接调原生 API 需自己加,用 Shortcut 则自动注入;
|
|
9
|
-
3. `<shape>` 元素缺少 `<content/>` 子元素时由 CLI 自动注入——SML 2.0 schema 要求每个 `<shape>` 必须有 `<content/>` 子元素,缺失同样触发 3350001;自闭合的 `<shape .../>` 也会被自动展开为 `<shape ...><content/></shape>`;
|
|
10
|
-
4. 3350001 错误时提供上下文感知的 hint,帮助 AI agent 和用户快速定位原因。
|
|
11
|
-
|
|
12
|
-
## 命令
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
# block_insert:在页末追加一个新元素
|
|
16
|
-
lark-cli slides +replace-slide --as user \
|
|
17
|
-
--presentation slidesXXXXXXXXXXXXXXXXXXXXXX \
|
|
18
|
-
--slide-id pfG \
|
|
19
|
-
--parts '[{"action":"block_insert","insertion":"<shape type=\"rect\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"100\"/>"}]'
|
|
20
|
-
|
|
21
|
-
# block_replace:已知某块 id,整块替换(replacement 根 id 自动注入为 bUn)
|
|
22
|
-
lark-cli slides +replace-slide --as user \
|
|
23
|
-
--presentation slidesXXXXXXXXXXXXXXXXXXXXXX \
|
|
24
|
-
--slide-id pfG \
|
|
25
|
-
--parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'
|
|
26
|
-
|
|
27
|
-
# 大 --parts 走文件或 stdin(auto-gen 命令不支持 @file,但 shortcut 支持)
|
|
28
|
-
lark-cli slides +replace-slide --as user \
|
|
29
|
-
--presentation $PID --slide-id $SID --parts @parts.json
|
|
30
|
-
cat parts.json | lark-cli slides +replace-slide --as user \
|
|
31
|
-
--presentation $PID --slide-id $SID --parts -
|
|
32
|
-
|
|
33
|
-
# wiki URL 直接传(CLI 自动 get_node → 拿真实 xml_presentation_id)
|
|
34
|
-
lark-cli slides +replace-slide --as user \
|
|
35
|
-
--presentation "https://xxx.feishu.cn/wiki/wikcnXXXXXX" --slide-id pfG \
|
|
36
|
-
--parts '[{"action":"block_insert","insertion":"<shape type=\"rect\" width=\"100\" height=\"100\"/>"}]'
|
|
37
|
-
|
|
38
|
-
# 预览(不实际调用)
|
|
39
|
-
lark-cli slides +replace-slide --as user \
|
|
40
|
-
--presentation $PID --slide-id $SID --parts "$PARTS" --dry-run
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## 参数
|
|
44
|
-
|
|
45
|
-
| 参数 | 必填 | 说明 |
|
|
46
|
-
|------|------|------|
|
|
47
|
-
| `--presentation` | 是 | `xml_presentation_id`、`/slides/<token>` URL,或 `/wiki/<token>` URL |
|
|
48
|
-
| `--slide-id` | 是 | 页面 ID(`xml_presentation.slide.get` / `slides +xml-get` 都能拿到) |
|
|
49
|
-
| `--parts` | 是 | JSON 数组(`[{...}, ...]`),单次最多 200 条。支持 `@<file>` 和 `-`(stdin)读取 |
|
|
50
|
-
| `--revision-id` | 否 | 基础版本号;默认 `-1` 表示基于最新版执行;传具体版本号时,服务端以该版本为 base 执行;**传不存在的版本号(超过当前 revision)返回 3350002** |
|
|
51
|
-
| `--tid` | 否 | 并发事务 ID;多人协作长事务才用,单次单人调用留空 |
|
|
52
|
-
|
|
53
|
-
## parts 元素结构
|
|
54
|
-
|
|
55
|
-
> **限制**:最多 200 条;`block_replace` 和 `block_insert` 可以在同一批次混用。**其他 action(含 `str_replace`)CLI 会直接报错拒绝**。
|
|
56
|
-
|
|
57
|
-
每条 part 按 `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 片段;**根元素 `id` 会被 CLI 自动注入为 `block_id`**,用户不用自己加(如果已经加了且不一致会被覆盖为正确值) |
|
|
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.replacement` 和 `block_insert.insertion` 必须以 SML 2.0 定义的合法元素为根。完整权威定义看 [`slides_xml_schema_definition.xml`](slides_xml_schema_definition.xml);这里只列能作为**根**的类型 + 每种类型的最小可工作片段。
|
|
78
|
-
|
|
79
|
-
| 元素 | 用途 | 关键点 |
|
|
80
|
-
|---|---|---|
|
|
81
|
-
| `<shape>` | 矩形/椭圆/三角/文本框等所有形状 | `type` 必填;`<content/>` 缺失时 CLI 会自动注入 |
|
|
82
|
-
| `<line>` | 直线 | 需 `startX/startY/endX/endY` |
|
|
83
|
-
| `<polyline>` | 折线 | `points` 读回时被服务端规整丢弃(几何已入库) |
|
|
84
|
-
| `<img>` | 图片 | `src` 必须是 [`+media-upload`](lark-slides-media-upload.md) 返回的 `file_token`,不能是 URL |
|
|
85
|
-
| `<icon>` | 图标 | `iconType` 取自 iconpark 资源;语义图标先用 `scripts/iconpark_tool.py search` 检索 |
|
|
86
|
-
| `<table>` | 表格 | 整表替换会**重建内部 td id**,旧 td block_id 立即失效 |
|
|
87
|
-
| `<td>` | 单元格局部替换 | 只能 `block_replace`,不能 `block_insert`;`block_id` 必须是最新 `slide.get` 拿到的 td id |
|
|
88
|
-
| `<chart>` | 图表(line/bar/column/pie/area/radar/combo) | 必须嵌 `<chartPlotArea>` + `<chartData>` + `<dim1>/<dim2>/<chartField>` |
|
|
89
|
-
|
|
90
|
-
**不可作为根元素**:
|
|
91
|
-
|
|
92
|
-
- `<video>` / `<audio>` —— SML 2.0 没有这两个原生元素;`<undefined type="video|audio">` 是**导出时**的占位符(服务端遇到不支持的类型时用它代替),**不能写入**。尝试 insert/replace 都会返回 3350001。
|
|
93
|
-
|
|
94
|
-
### 最小 XML 片段(JSON 嵌入时记得把 `"` 转义成 `\"`)
|
|
95
|
-
|
|
96
|
-
`<shape>`(文本框;`type` 还可选 `rect`/`ellipse`/`triangle`/`custom` 等):
|
|
97
|
-
```xml
|
|
98
|
-
<shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
|
|
99
|
-
<content textType="title"><p>标题</p></content>
|
|
100
|
-
</shape>
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
`<img>`:
|
|
104
|
-
```xml
|
|
105
|
-
<img src="{file_token}" topLeftX="600" topLeftY="20" width="80" height="80"/>
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
`<polyline>`:
|
|
109
|
-
```xml
|
|
110
|
-
<polyline topLeftX="10" topLeftY="10" width="100" height="50" points="0,0 50,50 100,0"/>
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
`<table>`(2×2):
|
|
114
|
-
```xml
|
|
115
|
-
<table topLeftX="30" topLeftY="80">
|
|
116
|
-
<colgroup><col span="2" width="110"/></colgroup>
|
|
117
|
-
<tr><td><content><p>A</p></content></td><td><content><p>B</p></content></td></tr>
|
|
118
|
-
<tr><td><content><p>C</p></content></td><td><content><p>D</p></content></td></tr>
|
|
119
|
-
</table>
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
`<td>`(`block_replace` 单元格;`block_id` 必须是最新 `slide.get` 拿到的 td id):
|
|
123
|
-
```xml
|
|
124
|
-
<td><content><p>新内容</p></content></td>
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
`<chart>`(`type` 改成 `bar`/`column`/`pie`/`area`/`radar`/`combo` 切换图型):
|
|
128
|
-
```xml
|
|
129
|
-
<chart topLeftX="30" topLeftY="300" width="300" height="200">
|
|
130
|
-
<chartPlotArea><chartPlot type="line"/></chartPlotArea>
|
|
131
|
-
<chartData>
|
|
132
|
-
<dim1><chartField name="x" valueType="string">Q1,Q2,Q3,Q4</chartField></dim1>
|
|
133
|
-
<dim2><chartField name="Sales" valueType="number">10,20,15,30</chartField></dim2>
|
|
134
|
-
</chartData>
|
|
135
|
-
</chart>
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
## 返回值
|
|
139
|
-
|
|
140
|
-
```json
|
|
141
|
-
{
|
|
142
|
-
"xml_presentation_id": "slidesXXXXXXXXXXXXXXXXXXXXXX",
|
|
143
|
-
"slide_id": "pfG",
|
|
144
|
-
"parts_count": 1,
|
|
145
|
-
"revision_id": 102
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
| 字段 | 说明 |
|
|
150
|
-
|------|------|
|
|
151
|
-
| `xml_presentation_id` | 解析后的真实 token(wiki URL 解析后会变化) |
|
|
152
|
-
| `slide_id` | 与入参一致 |
|
|
153
|
-
| `parts_count` | 本次提交的 parts 条数 |
|
|
154
|
-
| `revision_id` | 成功后的新版本号,下次做乐观锁时用 |
|
|
155
|
-
| `failed_part_index` | 有部分失败时存在,指向第几条 part 失败 |
|
|
156
|
-
| `failed_reason` | 失败原因文字描述 |
|
|
157
|
-
|
|
158
|
-
整批作为原子事务:任一 part 失败则整批不生效,服务端通过 `failed_part_index` / `failed_reason` 告诉你是哪条;按此定位修正后重发。
|
|
159
|
-
|
|
160
|
-
## 使用流程
|
|
161
|
-
|
|
162
|
-
### 给已有页加图(典型场景)
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
PID=xxx
|
|
166
|
-
SID=yyy
|
|
167
|
-
|
|
168
|
-
# 1) 上传图片
|
|
169
|
-
TOKEN=$(lark-cli slides +media-upload --as user \
|
|
170
|
-
--file ./pic.png --presentation "$PID" | jq -r '.data.file_token')
|
|
171
|
-
|
|
172
|
-
# 2) block_insert 到页末
|
|
173
|
-
lark-cli slides +replace-slide --as user \
|
|
174
|
-
--presentation "$PID" --slide-id "$SID" \
|
|
175
|
-
--parts "$(jq -n --arg token "$TOKEN" \
|
|
176
|
-
'[{action:"block_insert",insertion:("<img src=\""+$token+"\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"150\"/>")}]')"
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### 改标题(block_replace)
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
# 先拿原页 XML,从里面找到标题块的 3 位 short id(如 bUn)
|
|
183
|
-
lark-cli slides xml_presentation.slide get --as user \
|
|
184
|
-
--params "{\"xml_presentation_id\":\"$PID\",\"slide_id\":\"$SID\"}"
|
|
185
|
-
|
|
186
|
-
# block_replace 换掉整个标题块(id 自动注入)
|
|
187
|
-
lark-cli slides +replace-slide --as user \
|
|
188
|
-
--presentation "$PID" --slide-id "$SID" \
|
|
189
|
-
--parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### 批量:一次换标题 + 追加装饰图
|
|
193
|
-
|
|
194
|
-
`block_replace` 和 `block_insert` 可以在同一个 `--parts` 里混用,整批原子执行。
|
|
195
|
-
|
|
196
|
-
```bash
|
|
197
|
-
lark-cli slides +replace-slide --as user \
|
|
198
|
-
--presentation "$PID" --slide-id "$SID" \
|
|
199
|
-
--parts '[
|
|
200
|
-
{"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>"},
|
|
201
|
-
{"action":"block_insert","insertion":"<img src=\"<file_token>\" topLeftX=\"700\" topLeftY=\"400\" width=\"180\" height=\"100\"/>"}
|
|
202
|
-
]'
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### 乐观锁
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
# 读时记录 revision_id
|
|
209
|
-
REV=$(lark-cli slides xml_presentation.slide get --as user \
|
|
210
|
-
--params "{\"xml_presentation_id\":\"$PID\",\"slide_id\":\"$SID\"}" \
|
|
211
|
-
| jq '.data.revision_id')
|
|
212
|
-
|
|
213
|
-
# 写时传 --revision-id;传不存在的版本号(超过当前 revision)返回 3350002
|
|
214
|
-
lark-cli slides +replace-slide --as user \
|
|
215
|
-
--presentation "$PID" --slide-id "$SID" --revision-id "$REV" \
|
|
216
|
-
--parts "$PARTS"
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
## 常见错误
|
|
220
|
-
|
|
221
|
-
| 现象 | 原因 | 对策 |
|
|
222
|
-
|------|------|------|
|
|
223
|
-
| 3350001 + hint "block_id not found" | `parts[i].block_id` 在当前页不存在 | 重新 `slide.get` 拿最新 XML,按里面的 short ID 再填 |
|
|
224
|
-
| 3350002 not found | `--revision-id` 传了不存在的版本号(超过当前 revision) | 用 `-1` 或用 `slide.get` 拿到的有效 `revision_id` |
|
|
225
|
-
| `--parts[i] action "str_replace" is not supported` | CLI 不暴露 `str_replace` | 把替换需求改写成 `block_replace` / `block_insert` |
|
|
226
|
-
| `--parts contains N items, exceeds maximum of 200` | 一次提交 parts 太多 | 拆多次调用 |
|
|
227
|
-
| `--parts[i] (block_replace) requires non-empty block_id` / `replacement` | 字段缺失 | 按 parts 元素结构补齐 |
|
|
228
|
-
| `<img>` 不显示 / 显示破图 | `src` 写了外链 URL | 换成通过 [`+media-upload`](lark-slides-media-upload.md) 拿到的 `file_token` |
|
|
229
|
-
| 3350001 | `replacement` 不是合法单根 XML 片段,或 `block_id` 不存在 | CLI 已自动注入 `id` 和 `<content/>`;如果仍报错,重新 `slide.get` 拿最新 XML 确认 `block_id` 存在;检查 XML 结构是否合法;坐标是否超出 960×540 |
|
|
230
|
-
| 403 | 权限不足 | 需要 `slides:presentation:update` 或 `slides:presentation:write_only`;wiki URL 还需要 `wiki:node:read` |
|
|
231
|
-
|
|
232
|
-
## 相关命令
|
|
233
|
-
|
|
234
|
-
- [xml_presentation.slide get](lark-slides-xml-presentation-slide-get.md) — 读原页拿 `block_id` / `revision_id`
|
|
235
|
-
- [xml_presentation.slide replace](lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考
|
|
236
|
-
- [+media-upload](lark-slides-media-upload.md) — 上传图片拿 `file_token`
|
|
237
|
-
- [lark-slides-edit-workflows.md](lark-slides-edit-workflows.md) — 读-改-写闭环 + 决策树
|
|
5
|
+
此文件仅保留旧路径兼容性;后续引用请使用新路径。
|
|
@@ -1,97 +1,5 @@
|
|
|
1
|
-
# slides +screenshot
|
|
1
|
+
# slides +screenshot(兼容入口)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本文档已迁移至 [`cli/lark-slides-screenshot.md`](cli/lark-slides-screenshot.md)。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
截图失败则降级到 XML 读回、结构 lint等非截图检查路径。
|
|
8
|
-
|
|
9
|
-
## 命令
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
lark-cli slides +screenshot --as user \
|
|
13
|
-
--presentation '<xml_presentation_id 或 slides/wiki URL>' \
|
|
14
|
-
--slide-number 1
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
渲染本地 XML 内容:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
lark-cli slides +screenshot --as user \
|
|
21
|
-
--content @slide.xml
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## 参数
|
|
25
|
-
|
|
26
|
-
| 参数 | 必需 | 说明 |
|
|
27
|
-
|------|------|------|
|
|
28
|
-
| `--presentation` | list 模式必需 | `xml_presentation_id`、`/slides/` URL,或解析后为 slides 的 `/wiki/` URL。传 `--content` 时不能使用 |
|
|
29
|
-
| `--slide-id` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面 short ID;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-id slide_1,slide_2`);一次最多 10 页(`--slide-id` + `--slide-number` 合计小于等于 10) |
|
|
30
|
-
| `--slide-number` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面页号;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-number 1,2,3`);一次最多 10 页(`--slide-id` + `--slide-number` 合计小于等于 10) |
|
|
31
|
-
| `--content` | render 模式必需 | 要直接渲染的 `<slide>` XML 片段;支持直接传值、`@file`、`-` stdin。传入后不能同时传 `--slide-id` / `--slide-number` |
|
|
32
|
-
| `--output-dir` | 否 | 输出目录,默认 `.lark-slides/screenshots`;必须是当前目录内的相对路径 |
|
|
33
|
-
| `--output-name` | 否 | render 模式的输出文件名 stem;未指定时优先用返回的 `slide_id`,否则用 `rendered-slide`。若目标文件已存在,会自动追加递增后缀避免覆盖 |
|
|
34
|
-
|
|
35
|
-
## 示例
|
|
36
|
-
|
|
37
|
-
### 单页截图
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
lark-cli slides +screenshot --as user \
|
|
41
|
-
--presentation slides_example_presentation_id \
|
|
42
|
-
--slide-number 1
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### 多页截图
|
|
46
|
-
|
|
47
|
-
一次不要超过 10 页;如需更多页面,分批调用。可以重复传参,也可以用逗号分隔一次传多个:
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
lark-cli slides +screenshot --as user \
|
|
51
|
-
--presentation slides_example_presentation_id \
|
|
52
|
-
--slide-number 1 \
|
|
53
|
-
--slide-number 2 \
|
|
54
|
-
--output-dir .lark-slides/screenshots/demo
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### 渲染 XML 预览
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
lark-cli slides +screenshot --as user \
|
|
61
|
-
--content @.lark-slides/out/demo/slide.xml \
|
|
62
|
-
--output-name preview
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## 返回值
|
|
66
|
-
|
|
67
|
-
返回 JSON 不包含 Base64 图片内容:
|
|
68
|
-
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"ok": true,
|
|
72
|
-
"identity": "user",
|
|
73
|
-
"data": {
|
|
74
|
-
"xml_presentation_id": "slides_example_presentation_id",
|
|
75
|
-
"output_dir": ".lark-slides/screenshots",
|
|
76
|
-
"screenshots": [
|
|
77
|
-
{
|
|
78
|
-
"slide_id": "slide_example_id",
|
|
79
|
-
"slide_number": 1,
|
|
80
|
-
"format": "png",
|
|
81
|
-
"path": "/abs/path/.lark-slides/screenshots/slides_example_presentation_id_p001_slide_example_id.png",
|
|
82
|
-
"size": 12345
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## 注意事项
|
|
90
|
-
|
|
91
|
-
1. 优先使用 `slides +screenshot` 保存本地图片,不要把图片 Base64 打到 stdout。
|
|
92
|
-
2. 已存在 PPT 页面截图时,不传 `--content`,用 `--presentation` + `--slide-id` 或 `--slide-number`。
|
|
93
|
-
3. 本地 XML 预览时,传 `--content @file` 或 `--content -`,内容应为单个 `<slide>` XML 片段;此时不要传 `--presentation` / `--slide-id` / `--slide-number`。
|
|
94
|
-
4. `slide_id` 是页面 short ID,页码请用 `--slide-number`。
|
|
95
|
-
5. list 模式一次最多传 10 页(`--slide-id` + `--slide-number` 合计小于等于 10);更多页面请分批截图。
|
|
96
|
-
6. list 模式默认文件名包含 presentation ID、页码和/或 slide ID;文件已存在时自动追加 `_2`、`_3` 等后缀,避免覆盖旧截图。
|
|
97
|
-
7. 截图来自服务端渲染结果,适合创建/替换后验证页面是否为空白、破图或布局明显异常。
|
|
5
|
+
此文件仅保留旧路径兼容性;后续引用请使用新路径。
|
|
@@ -1,110 +1,5 @@
|
|
|
1
|
-
# lark-slides xml_presentation.slide get
|
|
1
|
+
# lark-slides xml_presentation.slide get(兼容入口)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本文档已迁移至 [`cli/lark-slides-xml-presentation-slide-get.md`](cli/lark-slides-xml-presentation-slide-get.md)。
|
|
4
4
|
|
|
5
|
-
|
|
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 -r '.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\":\"$PID\",\"slide_id\":\"$SID\"}" \
|
|
102
|
-
| jq -r '.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
|
-
- [lark-slides-edit-workflows.md](lark-slides-edit-workflows.md) — 读-改-写闭环
|
|
5
|
+
此文件仅保留旧路径兼容性;后续引用请使用新路径。
|