@yandy0725/pi-lark 0.1.0
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/README.md +30 -0
- package/README.zh.md +30 -0
- package/package.json +36 -0
- package/skills/lark-approval/SKILL.md +56 -0
- package/skills/lark-approval/references/lark-approval-initiate.md +196 -0
- package/skills/lark-approval/references/lark-approval-instance-form-control-parameters.md +606 -0
- package/skills/lark-approval/references/lark-approval-instance-value-sourcing.md +108 -0
- package/skills/lark-apps/SKILL.md +78 -0
- package/skills/lark-apps/references/lark-apps-access-scope-get.md +28 -0
- package/skills/lark-apps/references/lark-apps-access-scope-set.md +40 -0
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +120 -0
- package/skills/lark-apps/references/lark-apps-create.md +40 -0
- package/skills/lark-apps/references/lark-apps-db-env-create.md +31 -0
- package/skills/lark-apps/references/lark-apps-db-execute.md +40 -0
- package/skills/lark-apps/references/lark-apps-db-table-get.md +29 -0
- package/skills/lark-apps/references/lark-apps-db-table-list.md +31 -0
- package/skills/lark-apps/references/lark-apps-env-pull.md +35 -0
- package/skills/lark-apps/references/lark-apps-git-credential.md +37 -0
- package/skills/lark-apps/references/lark-apps-html-publish.md +57 -0
- package/skills/lark-apps/references/lark-apps-init.md +37 -0
- package/skills/lark-apps/references/lark-apps-list.md +37 -0
- package/skills/lark-apps/references/lark-apps-local-dev.md +76 -0
- package/skills/lark-apps/references/lark-apps-release-create.md +30 -0
- package/skills/lark-apps/references/lark-apps-release-get.md +28 -0
- package/skills/lark-apps/references/lark-apps-release-list.md +31 -0
- package/skills/lark-apps/references/lark-apps-session-messages-list.md +53 -0
- package/skills/lark-apps/references/lark-apps-update.md +30 -0
- package/skills/lark-attendance/SKILL.md +57 -0
- package/skills/lark-base/SKILL.md +157 -0
- package/skills/lark-base/references/dashboard-block-data-config.md +350 -0
- package/skills/lark-base/references/formula-field-guide.md +737 -0
- package/skills/lark-base/references/lark-base-cell-value.md +153 -0
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +717 -0
- package/skills/lark-base/references/lark-base-dashboard.md +238 -0
- package/skills/lark-base/references/lark-base-data-analysis-sop.md +210 -0
- package/skills/lark-base/references/lark-base-data-query-guide.md +61 -0
- package/skills/lark-base/references/lark-base-data-query.md +452 -0
- package/skills/lark-base/references/lark-base-field-create.md +103 -0
- package/skills/lark-base/references/lark-base-field-json.md +489 -0
- package/skills/lark-base/references/lark-base-field-update.md +171 -0
- package/skills/lark-base/references/lark-base-form-detail.md +71 -0
- package/skills/lark-base/references/lark-base-form-questions-create.md +118 -0
- package/skills/lark-base/references/lark-base-form-questions-update.md +92 -0
- package/skills/lark-base/references/lark-base-form-submit.md +170 -0
- package/skills/lark-base/references/lark-base-record-batch-create.md +57 -0
- package/skills/lark-base/references/lark-base-record-batch-update.md +52 -0
- package/skills/lark-base/references/lark-base-record-history-list.md +43 -0
- package/skills/lark-base/references/lark-base-record-upsert.md +63 -0
- package/skills/lark-base/references/lark-base-role-guide.md +65 -0
- package/skills/lark-base/references/lark-base-view-set-filter.md +189 -0
- package/skills/lark-base/references/lark-base-workflow-guide.md +830 -0
- package/skills/lark-base/references/lark-base-workflow-schema.md +1071 -0
- package/skills/lark-base/references/lookup-field-guide.md +512 -0
- package/skills/lark-base/references/role-config.md +549 -0
- package/skills/lark-calendar/SKILL.md +137 -0
- package/skills/lark-calendar/references/lark-calendar-agenda.md +78 -0
- package/skills/lark-calendar/references/lark-calendar-create.md +106 -0
- package/skills/lark-calendar/references/lark-calendar-freebusy.md +124 -0
- package/skills/lark-calendar/references/lark-calendar-meeting.md +40 -0
- package/skills/lark-calendar/references/lark-calendar-room-find.md +113 -0
- package/skills/lark-calendar/references/lark-calendar-rsvp.md +42 -0
- package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
- package/skills/lark-calendar/references/lark-calendar-search-event.md +29 -0
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +125 -0
- package/skills/lark-calendar/references/lark-calendar-update.md +105 -0
- package/skills/lark-contact/SKILL.md +59 -0
- package/skills/lark-contact/references/lark-contact-get-user.md +19 -0
- package/skills/lark-contact/references/lark-contact-search-user.md +124 -0
- package/skills/lark-doc/SKILL.md +79 -0
- package/skills/lark-doc/references/lark-doc-create.md +79 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +138 -0
- package/skills/lark-doc/references/lark-doc-md.md +76 -0
- package/skills/lark-doc/references/lark-doc-media-download.md +50 -0
- package/skills/lark-doc/references/lark-doc-media-insert.md +114 -0
- package/skills/lark-doc/references/lark-doc-media-preview.md +41 -0
- package/skills/lark-doc/references/lark-doc-resource-cover.md +70 -0
- package/skills/lark-doc/references/lark-doc-update.md +259 -0
- package/skills/lark-doc/references/lark-doc-whiteboard.md +154 -0
- package/skills/lark-doc/references/lark-doc-xml.md +181 -0
- package/skills/lark-doc/references/style/lark-doc-create-workflow.md +59 -0
- package/skills/lark-doc/references/style/lark-doc-style.md +86 -0
- package/skills/lark-doc/references/style/lark-doc-update-workflow.md +55 -0
- package/skills/lark-drive/SKILL.md +215 -0
- package/skills/lark-drive/references/lark-drive-add-comment.md +193 -0
- package/skills/lark-drive/references/lark-drive-apply-permission.md +77 -0
- package/skills/lark-drive/references/lark-drive-comment-location.md +193 -0
- package/skills/lark-drive/references/lark-drive-comments-guide.md +72 -0
- package/skills/lark-drive/references/lark-drive-cover.md +79 -0
- package/skills/lark-drive/references/lark-drive-create-folder.md +73 -0
- package/skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
- package/skills/lark-drive/references/lark-drive-delete.md +79 -0
- package/skills/lark-drive/references/lark-drive-download.md +31 -0
- package/skills/lark-drive/references/lark-drive-export-download.md +50 -0
- package/skills/lark-drive/references/lark-drive-export.md +145 -0
- package/skills/lark-drive/references/lark-drive-files-list.md +158 -0
- package/skills/lark-drive/references/lark-drive-import.md +170 -0
- package/skills/lark-drive/references/lark-drive-inspect.md +50 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +66 -0
- package/skills/lark-drive/references/lark-drive-move.md +120 -0
- package/skills/lark-drive/references/lark-drive-permission-guide.md +41 -0
- package/skills/lark-drive/references/lark-drive-preview.md +87 -0
- package/skills/lark-drive/references/lark-drive-pull.md +137 -0
- package/skills/lark-drive/references/lark-drive-push.md +162 -0
- package/skills/lark-drive/references/lark-drive-reactions.md +113 -0
- package/skills/lark-drive/references/lark-drive-search.md +269 -0
- package/skills/lark-drive/references/lark-drive-secure-label.md +52 -0
- package/skills/lark-drive/references/lark-drive-status.md +137 -0
- package/skills/lark-drive/references/lark-drive-task-result.md +302 -0
- package/skills/lark-drive/references/lark-drive-upload.md +101 -0
- package/skills/lark-drive/references/lark-drive-version-delete.md +38 -0
- package/skills/lark-drive/references/lark-drive-version-get.md +71 -0
- package/skills/lark-drive/references/lark-drive-version-history.md +73 -0
- package/skills/lark-drive/references/lark-drive-version-revert.md +35 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-analysis.md +249 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-discovery.md +253 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-execution.md +200 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-planning.md +336 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-rollback.md +308 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +226 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +168 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +424 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +207 -0
- package/skills/lark-drive/references/lark-drive-workflow.md +130 -0
- package/skills/lark-event/SKILL.md +154 -0
- package/skills/lark-event/references/lark-event-im.md +87 -0
- package/skills/lark-event/references/lark-event-minutes.md +54 -0
- package/skills/lark-event/references/lark-event-task.md +78 -0
- package/skills/lark-event/references/lark-event-vc.md +94 -0
- package/skills/lark-event/references/lark-event-whiteboard.md +67 -0
- package/skills/lark-im/SKILL.md +247 -0
- package/skills/lark-im/references/lark-im-card-action-reply.md +175 -0
- package/skills/lark-im/references/lark-im-chat-create.md +162 -0
- package/skills/lark-im/references/lark-im-chat-identity.md +55 -0
- package/skills/lark-im/references/lark-im-chat-list.md +166 -0
- package/skills/lark-im/references/lark-im-chat-messages-list.md +157 -0
- package/skills/lark-im/references/lark-im-chat-search.md +142 -0
- package/skills/lark-im/references/lark-im-chat-update.md +84 -0
- package/skills/lark-im/references/lark-im-feed-group-list-item.md +68 -0
- package/skills/lark-im/references/lark-im-feed-group-list.md +65 -0
- package/skills/lark-im/references/lark-im-feed-group-query-item.md +44 -0
- package/skills/lark-im/references/lark-im-feed-groups.md +452 -0
- package/skills/lark-im/references/lark-im-feed-shortcut-create.md +97 -0
- package/skills/lark-im/references/lark-im-feed-shortcut-list.md +103 -0
- package/skills/lark-im/references/lark-im-feed-shortcut-remove.md +48 -0
- package/skills/lark-im/references/lark-im-flag-cancel.md +67 -0
- package/skills/lark-im/references/lark-im-flag-create.md +67 -0
- package/skills/lark-im/references/lark-im-flag-list.md +100 -0
- package/skills/lark-im/references/lark-im-message-enrichment.md +54 -0
- package/skills/lark-im/references/lark-im-messages-mget.md +99 -0
- package/skills/lark-im/references/lark-im-messages-reply.md +267 -0
- package/skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
- package/skills/lark-im/references/lark-im-messages-search.md +234 -0
- package/skills/lark-im/references/lark-im-messages-send.md +267 -0
- package/skills/lark-im/references/lark-im-reactions.md +299 -0
- package/skills/lark-im/references/lark-im-threads-messages-list.md +115 -0
- package/skills/lark-mail/SKILL.md +287 -0
- package/skills/lark-mail/assets/templates/job-application--resume.html +33 -0
- package/skills/lark-mail/assets/templates/newsletter--weekly-brief.html +50 -0
- package/skills/lark-mail/assets/templates/research--market-report.html +256 -0
- package/skills/lark-mail/assets/templates/weekly--personal-report.html +43 -0
- package/skills/lark-mail/assets/templates/weekly--team-report.html +9 -0
- package/skills/lark-mail/references/lark-mail-calendar-invite.md +36 -0
- package/skills/lark-mail/references/lark-mail-decline-receipt.md +115 -0
- package/skills/lark-mail/references/lark-mail-draft-create.md +127 -0
- package/skills/lark-mail/references/lark-mail-draft-edit.md +404 -0
- package/skills/lark-mail/references/lark-mail-forward.md +239 -0
- package/skills/lark-mail/references/lark-mail-html.md +333 -0
- package/skills/lark-mail/references/lark-mail-lint-html.md +243 -0
- package/skills/lark-mail/references/lark-mail-message.md +233 -0
- package/skills/lark-mail/references/lark-mail-messages.md +108 -0
- package/skills/lark-mail/references/lark-mail-recall.md +66 -0
- package/skills/lark-mail/references/lark-mail-recipient-search.md +59 -0
- package/skills/lark-mail/references/lark-mail-reply-all.md +213 -0
- package/skills/lark-mail/references/lark-mail-reply.md +249 -0
- package/skills/lark-mail/references/lark-mail-rules.md +31 -0
- package/skills/lark-mail/references/lark-mail-send-as.md +44 -0
- package/skills/lark-mail/references/lark-mail-send-receipt.md +120 -0
- package/skills/lark-mail/references/lark-mail-send-status.md +46 -0
- package/skills/lark-mail/references/lark-mail-send.md +222 -0
- package/skills/lark-mail/references/lark-mail-share-to-chat.md +87 -0
- package/skills/lark-mail/references/lark-mail-signature.md +98 -0
- package/skills/lark-mail/references/lark-mail-template-create.md +129 -0
- package/skills/lark-mail/references/lark-mail-template-update.md +150 -0
- package/skills/lark-mail/references/lark-mail-template.md +54 -0
- package/skills/lark-mail/references/lark-mail-thread.md +111 -0
- package/skills/lark-mail/references/lark-mail-triage.md +131 -0
- package/skills/lark-mail/references/lark-mail-watch.md +94 -0
- package/skills/lark-markdown/SKILL.md +69 -0
- package/skills/lark-markdown/references/lark-markdown-create.md +94 -0
- package/skills/lark-markdown/references/lark-markdown-diff.md +156 -0
- package/skills/lark-markdown/references/lark-markdown-fetch.md +79 -0
- package/skills/lark-markdown/references/lark-markdown-overwrite.md +85 -0
- package/skills/lark-markdown/references/lark-markdown-patch.md +160 -0
- package/skills/lark-minutes/SKILL.md +192 -0
- package/skills/lark-minutes/references/lark-minutes-detail.md +62 -0
- package/skills/lark-minutes/references/lark-minutes-download.md +137 -0
- package/skills/lark-minutes/references/lark-minutes-search.md +204 -0
- package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +107 -0
- package/skills/lark-minutes/references/lark-minutes-summary.md +122 -0
- package/skills/lark-minutes/references/lark-minutes-todo.md +138 -0
- package/skills/lark-minutes/references/lark-minutes-update.md +41 -0
- package/skills/lark-minutes/references/lark-minutes-upload.md +104 -0
- package/skills/lark-note/SKILL.md +94 -0
- package/skills/lark-note/references/lark-note-detail.md +26 -0
- package/skills/lark-note/references/lark-note-transcript.md +23 -0
- package/skills/lark-okr/SKILL.md +115 -0
- package/skills/lark-okr/references/lark-okr-batch-create.md +106 -0
- package/skills/lark-okr/references/lark-okr-contentblock.md +359 -0
- package/skills/lark-okr/references/lark-okr-cycle-detail.md +84 -0
- package/skills/lark-okr/references/lark-okr-cycle-list.md +90 -0
- package/skills/lark-okr/references/lark-okr-entities.md +329 -0
- package/skills/lark-okr/references/lark-okr-image-upload.md +116 -0
- package/skills/lark-okr/references/lark-okr-indicator-update.md +80 -0
- package/skills/lark-okr/references/lark-okr-progress-create.md +81 -0
- package/skills/lark-okr/references/lark-okr-progress-delete.md +47 -0
- package/skills/lark-okr/references/lark-okr-progress-get.md +62 -0
- package/skills/lark-okr/references/lark-okr-progress-list.md +80 -0
- package/skills/lark-okr/references/lark-okr-progress-update.md +81 -0
- package/skills/lark-okr/references/lark-okr-reorder.md +81 -0
- package/skills/lark-okr/references/lark-okr-weight.md +96 -0
- package/skills/lark-openapi-explorer/SKILL.md +153 -0
- package/skills/lark-shared/SKILL.md +168 -0
- package/skills/lark-shared/references/lark-wiki-token-routing.md +42 -0
- package/skills/lark-sheets/SKILL.md +165 -0
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +191 -0
- package/skills/lark-sheets/references/lark-sheets-chart.md +330 -0
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +179 -0
- package/skills/lark-sheets/references/lark-sheets-core-operations.md +103 -0
- package/skills/lark-sheets/references/lark-sheets-filter-view.md +137 -0
- package/skills/lark-sheets/references/lark-sheets-filter.md +130 -0
- package/skills/lark-sheets/references/lark-sheets-float-image.md +159 -0
- package/skills/lark-sheets/references/lark-sheets-formula-translation.md +267 -0
- package/skills/lark-sheets/references/lark-sheets-pivot-table.md +166 -0
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +267 -0
- package/skills/lark-sheets/references/lark-sheets-read-data.md +235 -0
- package/skills/lark-sheets/references/lark-sheets-search-replace.md +111 -0
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +212 -0
- package/skills/lark-sheets/references/lark-sheets-sparkline.md +149 -0
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +205 -0
- package/skills/lark-sheets/references/lark-sheets-workbook.md +395 -0
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +565 -0
- package/skills/lark-sheets/scripts/sheets_df.py +32 -0
- package/skills/lark-skill-maker/SKILL.md +85 -0
- package/skills/lark-slides/SKILL.md +293 -0
- package/skills/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
- package/skills/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
- package/skills/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
- package/skills/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
- package/skills/lark-slides/assets/templates/hr--employee_training.xml +912 -0
- package/skills/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
- package/skills/lark-slides/assets/templates/hr--onboarding.xml +933 -0
- package/skills/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
- package/skills/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
- package/skills/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
- package/skills/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
- package/skills/lark-slides/assets/templates/marketing--marketing_plan.xml +1469 -0
- package/skills/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
- package/skills/lark-slides/assets/templates/marketing--product_whitepaper.xml +1455 -0
- package/skills/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
- package/skills/lark-slides/assets/templates/misc--book_sharing.xml +1338 -0
- package/skills/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
- package/skills/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
- package/skills/lark-slides/assets/templates/office--dark_general.xml +3763 -0
- package/skills/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
- package/skills/lark-slides/assets/templates/office--light_general.xml +3378 -0
- package/skills/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
- package/skills/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
- package/skills/lark-slides/assets/templates/office--work_report.xml +1099 -0
- package/skills/lark-slides/assets/templates/office--work_summary.xml +4420 -0
- package/skills/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
- package/skills/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
- package/skills/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
- package/skills/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
- package/skills/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
- package/skills/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
- package/skills/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
- package/skills/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
- package/skills/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
- package/skills/lark-slides/assets/templates/personal--self_intro.xml +696 -0
- package/skills/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
- package/skills/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
- package/skills/lark-slides/assets/templates/product--market_analysis.xml +898 -0
- package/skills/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
- package/skills/lark-slides/assets/templates/product--product_intro.xml +2838 -0
- package/skills/lark-slides/assets/templates/product--product_promotion.xml +687 -0
- package/skills/lark-slides/assets/templates/product--product_promotion_2.xml +687 -0
- package/skills/lark-slides/references/asset-planning.md +124 -0
- package/skills/lark-slides/references/examples.md +261 -0
- package/skills/lark-slides/references/iconpark-index.json +41901 -0
- package/skills/lark-slides/references/iconpark.md +46 -0
- package/skills/lark-slides/references/lark-slides-create.md +137 -0
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +144 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +128 -0
- package/skills/lark-slides/references/lark-slides-replace-pages.md +95 -0
- package/skills/lark-slides/references/lark-slides-replace-slide.md +240 -0
- package/skills/lark-slides/references/lark-slides-screenshot.md +94 -0
- package/skills/lark-slides/references/lark-slides-whiteboard.md +330 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +220 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +187 -0
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
- package/skills/lark-slides/references/planning-layer.md +219 -0
- package/skills/lark-slides/references/slide-templates.md +201 -0
- package/skills/lark-slides/references/slides_demo.xml +226 -0
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +3049 -0
- package/skills/lark-slides/references/template-catalog.md +463 -0
- package/skills/lark-slides/references/template-index.json +1853 -0
- package/skills/lark-slides/references/troubleshooting.md +63 -0
- package/skills/lark-slides/references/validation-checklist.md +110 -0
- package/skills/lark-slides/references/visual-planning.md +254 -0
- package/skills/lark-slides/references/xml-format-guide.md +369 -0
- package/skills/lark-slides/references/xml-schema-quick-ref.md +245 -0
- package/skills/lark-slides/scripts/iconpark_tool.py +362 -0
- package/skills/lark-slides/scripts/iconpark_tool_test.py +177 -0
- package/skills/lark-slides/scripts/template_tool.py +970 -0
- package/skills/lark-slides/scripts/template_tool_test.py +177 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +367 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +263 -0
- package/skills/lark-task/SKILL.md +167 -0
- package/skills/lark-task/references/lark-task-assign.md +38 -0
- package/skills/lark-task/references/lark-task-comment.md +28 -0
- package/skills/lark-task/references/lark-task-complete.md +27 -0
- package/skills/lark-task/references/lark-task-create.md +57 -0
- package/skills/lark-task/references/lark-task-followers.md +35 -0
- package/skills/lark-task/references/lark-task-get-my-tasks.md +61 -0
- package/skills/lark-task/references/lark-task-get-related-tasks.md +53 -0
- package/skills/lark-task/references/lark-task-reminder.md +36 -0
- package/skills/lark-task/references/lark-task-reopen.md +27 -0
- package/skills/lark-task/references/lark-task-search.md +41 -0
- package/skills/lark-task/references/lark-task-set-ancestor.md +32 -0
- package/skills/lark-task/references/lark-task-tasklist-create.md +35 -0
- package/skills/lark-task/references/lark-task-tasklist-members.md +36 -0
- package/skills/lark-task/references/lark-task-tasklist-search.md +38 -0
- package/skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
- package/skills/lark-task/references/lark-task-update.md +37 -0
- package/skills/lark-task/references/lark-task-upload-attachment.md +59 -0
- package/skills/lark-vc/SKILL.md +202 -0
- package/skills/lark-vc/references/lark-vc-detail.md +44 -0
- package/skills/lark-vc/references/lark-vc-recording.md +154 -0
- package/skills/lark-vc/references/lark-vc-search.md +163 -0
- package/skills/lark-vc/references/vc-domain-boundaries.md +188 -0
- package/skills/lark-vc-agent/SKILL.md +169 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +287 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +141 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +105 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +91 -0
- package/skills/lark-whiteboard/SKILL.md +47 -0
- package/skills/lark-whiteboard/elements/connectors.md +102 -0
- package/skills/lark-whiteboard/elements/content.md +40 -0
- package/skills/lark-whiteboard/elements/image.md +80 -0
- package/skills/lark-whiteboard/elements/layout.md +374 -0
- package/skills/lark-whiteboard/elements/schema.md +357 -0
- package/skills/lark-whiteboard/elements/style.md +318 -0
- package/skills/lark-whiteboard/elements/typography.md +73 -0
- package/skills/lark-whiteboard/references/lark-whiteboard-query.md +60 -0
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +122 -0
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +94 -0
- package/skills/lark-whiteboard/routes/dsl.md +107 -0
- package/skills/lark-whiteboard/routes/mermaid.md +27 -0
- package/skills/lark-whiteboard/routes/svg-edit.md +85 -0
- package/skills/lark-whiteboard/routes/svg.md +54 -0
- package/skills/lark-whiteboard/scenes/architecture.md +433 -0
- package/skills/lark-whiteboard/scenes/bar-chart.md +187 -0
- package/skills/lark-whiteboard/scenes/comparison.md +135 -0
- package/skills/lark-whiteboard/scenes/fishbone.md +238 -0
- package/skills/lark-whiteboard/scenes/flowchart.md +185 -0
- package/skills/lark-whiteboard/scenes/flywheel.md +195 -0
- package/skills/lark-whiteboard/scenes/funnel.md +101 -0
- package/skills/lark-whiteboard/scenes/line-chart.md +214 -0
- package/skills/lark-whiteboard/scenes/mermaid.md +130 -0
- package/skills/lark-whiteboard/scenes/milestone.md +139 -0
- package/skills/lark-whiteboard/scenes/organization.md +173 -0
- package/skills/lark-whiteboard/scenes/photo-showcase.md +126 -0
- package/skills/lark-whiteboard/scenes/pyramid.md +99 -0
- package/skills/lark-whiteboard/scenes/swimlane.md +371 -0
- package/skills/lark-whiteboard/scenes/treemap.md +216 -0
- package/skills/lark-wiki/SKILL.md +110 -0
- package/skills/lark-wiki/references/lark-wiki-delete-space.md +205 -0
- package/skills/lark-wiki/references/lark-wiki-member-add.md +67 -0
- package/skills/lark-wiki/references/lark-wiki-member-list.md +76 -0
- package/skills/lark-wiki/references/lark-wiki-member-remove.md +61 -0
- package/skills/lark-wiki/references/lark-wiki-move.md +183 -0
- package/skills/lark-wiki/references/lark-wiki-node-copy.md +72 -0
- package/skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
- package/skills/lark-wiki/references/lark-wiki-node-delete.md +62 -0
- package/skills/lark-wiki/references/lark-wiki-node-get.md +57 -0
- package/skills/lark-wiki/references/lark-wiki-node-list.md +88 -0
- package/skills/lark-wiki/references/lark-wiki-space-create.md +46 -0
- package/skills/lark-wiki/references/lark-wiki-space-list.md +68 -0
- package/skills/lark-workflow-meeting-summary/SKILL.md +122 -0
- package/skills/lark-workflow-standup-report/SKILL.md +122 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Lark Sheet Float Image
|
|
2
|
+
|
|
3
|
+
> **选浮动图还是单元格图?只看一条**:这张图是不是**属于某条记录、要随那行一起排序 / 筛选 / 增删**?
|
|
4
|
+
> - **是 → 单元格图片**(不在本 reference):嵌进单元格、随行走。用 `+cells-set-image`(或 `+cells-set` 的 `rich_text` + `type: "embed-image"`,见 lark-sheets-write-cells)。典型:凭证 / 证件照 / 商品图 / 头像 / 二维码 / 每行配图;话里带「对应 / 每行 / 每条 / 这列」等绑定词即属此类。
|
|
5
|
+
> - **否 → 浮动图片**(本 reference):自由摆放、不绑数据的装饰 / 标识(logo / 水印 / 封面大图 / banner)。
|
|
6
|
+
> - ⚠️ 别凭"浮动图位置尺寸更好控制 / 更熟"就选它——那是按操作便利选,不是按场景选;用浮动图承载"对应某记录"的图会在增删行 / 排序后错位。
|
|
7
|
+
|
|
8
|
+
## 真对象硬约束
|
|
9
|
+
|
|
10
|
+
当用户要求"插入图片 / 添加 logo / 放一张图"时,**必须**通过 `+float-image-{create|update|delete}`(浮动图片)或 `+cells-set-image` / `+cells-set` 的 `embed-image`(单元格图片)创建真实的图片对象。**禁止**只在文本回复中给出图片链接 / 描述图片内容代替插入。判断标准:交付后 `+float-image-list` 或单元格 `rich_text` 必须能读到该图片对象。
|
|
11
|
+
|
|
12
|
+
## 使用场景
|
|
13
|
+
|
|
14
|
+
读写**浮动图片**对象(悬浮在单元格上方的图片,不属于单元格内容)。本 reference 覆盖 4 个 shortcut:
|
|
15
|
+
|
|
16
|
+
| 操作需求 | 使用工具 | 说明 |
|
|
17
|
+
|---------|---------|------|
|
|
18
|
+
| 查看已有浮动图片 | `+float-image-list` | 获取浮动图片的位置、大小和层级配置 |
|
|
19
|
+
| 创建/更新/删除浮动图片 | `+float-image-{create|update|delete}` | 对浮动图片执行写入操作 |
|
|
20
|
+
|
|
21
|
+
典型工作流:先读取现有浮动图片了解配置 → 执行创建/更新/删除 → **必须再次读取验证结果**。
|
|
22
|
+
|
|
23
|
+
**常见配置错误(必须注意)**:
|
|
24
|
+
- **单元格图片 vs 浮动图片选择错误(最易选错)**:图与某条记录一一对应、要随行排序 / 筛选 / 增删时,应走 `+cells-set-image`(见顶部判别),用浮动图会错位。
|
|
25
|
+
- **图片位置参数要精确**:锚点单元格的行列索引和偏移量决定了图片位置,设置不当会导致图片遮挡数据
|
|
26
|
+
- **创建后必须验证**:调用 `+float-image-list` 确认图片位置和大小正确
|
|
27
|
+
|
|
28
|
+
图片来源有三种方式,`+float-image-create` 上三者 **XOR、必给其一**(`--image` / `--image-token` / `--image-uri`):
|
|
29
|
+
|
|
30
|
+
- **`--image <本地路径>`(首选,最省事)**:直接给本地图片文件路径(PNG/JPEG/GIF/BMP/HEIC 等)。CLI 会自动把它以 `parent_type=sheet_image` 上传,拿到 file_token 后创建浮动图,**不用你手动上传 / 取 token**。路径规则同其它本地文件 flag:必须是当前工作目录内的相对路径(绝对路径会被 Validate 拒,`--dry-run` 也会拦)。
|
|
31
|
+
- `--image-token`:复用**已存在**的图片 file_token。常见来源:① `+float-image-list` 返回的 `image_token`(适合"换皮不换位置"复用同一张图);② `+cells-set-image` 成功返回里的 `file_token`(它也是 `sheet_image` 上传句柄)。适合"同一张图复用到多处",省去重复上传。
|
|
32
|
+
- `--image-uri`:图片 reference_id(image URI),由系统自动转 file_token。
|
|
33
|
+
|
|
34
|
+
> ⚠️ **`--image` 仅 `+float-image-create` 支持**。`+float-image-update` 换图仍只接受 `--image-token` / `--image-uri`,而且**图片源是 update 唯一可省的部分**——三者全不传则保留原图。但 `--image-name` / `--position-{row,col}` / `--size-{width,height}` 在 update 时和 create 一样**必填**(`+float-image-update` 强制要求这套核心字段,且 `+float-image-list` 不回传 `image_name` 供 CLI 回填)。要在 update 里换一张本地新图,先用 `+cells-set-image` 上传到任意临时单元格、从返回取 `file_token`,再把它传给 update 的 `--image-token`。
|
|
35
|
+
|
|
36
|
+
## Shortcuts
|
|
37
|
+
|
|
38
|
+
| Shortcut | Risk | 分组 |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| `+float-image-list` | read | 对象 |
|
|
41
|
+
| `+float-image-create` | write | 对象 |
|
|
42
|
+
| `+float-image-update` | write | 对象 |
|
|
43
|
+
| `+float-image-delete` | high-risk-write | 对象 |
|
|
44
|
+
|
|
45
|
+
## Flags
|
|
46
|
+
|
|
47
|
+
### `+float-image-list`
|
|
48
|
+
|
|
49
|
+
_公共四件套 · 系统:`--dry-run`_
|
|
50
|
+
|
|
51
|
+
| Flag | Type | 必填 | 说明 |
|
|
52
|
+
| --- | --- | --- | --- |
|
|
53
|
+
| `--float-image-id` | string | optional | 按 id 过滤;省略时列工作表全部 |
|
|
54
|
+
|
|
55
|
+
### `+float-image-create`
|
|
56
|
+
|
|
57
|
+
_公共四件套 · 系统:`--dry-run`_
|
|
58
|
+
|
|
59
|
+
| Flag | Type | 必填 | 说明 |
|
|
60
|
+
| --- | --- | --- | --- |
|
|
61
|
+
| `--image-name` | string | required | 图片名称,含扩展名(如 `logo.png`) |
|
|
62
|
+
| `--image-token` | string | xor | 图片 file_token(与 `--image-uri` 二选一)。常见来源:`+float-image-list` 返回的 `image_token` |
|
|
63
|
+
| `--image-uri` | string | xor | 图片 reference_id(与 `--image-token` 二选一);图片上传链路返回的 reference_id |
|
|
64
|
+
| `--position-row` | int | required | 图片左上角所在行(0-based) |
|
|
65
|
+
| `--position-col` | string | required | 图片左上角所在列(列字母,如 `A` / `B`) |
|
|
66
|
+
| `--size-width` | int | required | 图片宽度(像素) |
|
|
67
|
+
| `--size-height` | int | required | 图片高度(像素) |
|
|
68
|
+
| `--offset-row` | int | optional | 在 `--position-row` 基础上的行内偏移(像素) |
|
|
69
|
+
| `--offset-col` | int | optional | 在 `--position-col` 基础上的列内偏移(像素) |
|
|
70
|
+
| `--z-index` | int | optional | 图片 Z 轴层级,控制重叠顺序 |
|
|
71
|
+
| `--image` | string | xor | 本地图片路径(PNG/JPEG 等);CLI 自动上传为 sheet_image 并用返回的 file_token,省去手动拿 token(与 --image-token / --image-uri 三选一) |
|
|
72
|
+
|
|
73
|
+
### `+float-image-update`
|
|
74
|
+
|
|
75
|
+
_公共四件套 · 系统:`--dry-run`_
|
|
76
|
+
|
|
77
|
+
| Flag | Type | 必填 | 说明 |
|
|
78
|
+
| --- | --- | --- | --- |
|
|
79
|
+
| `--float-image-id` | string | required | 目标图片 id |
|
|
80
|
+
| `--image-name` | string | required | 图片名称,含扩展名(如 `logo.png`) |
|
|
81
|
+
| `--image-token` | string | xor | 图片 file_token(与 `--image-uri` 二选一)。常见来源:`+float-image-list` 返回的 `image_token` |
|
|
82
|
+
| `--image-uri` | string | xor | 图片 reference_id(与 `--image-token` 二选一);图片上传链路返回的 reference_id |
|
|
83
|
+
| `--position-row` | int | required | 图片左上角所在行(0-based) |
|
|
84
|
+
| `--position-col` | string | required | 图片左上角所在列(列字母,如 `A` / `B`) |
|
|
85
|
+
| `--size-width` | int | required | 图片宽度(像素) |
|
|
86
|
+
| `--size-height` | int | required | 图片高度(像素) |
|
|
87
|
+
| `--offset-row` | int | optional | 在 `--position-row` 基础上的行内偏移(像素) |
|
|
88
|
+
| `--offset-col` | int | optional | 在 `--position-col` 基础上的列内偏移(像素) |
|
|
89
|
+
| `--z-index` | int | optional | 图片 Z 轴层级,控制重叠顺序 |
|
|
90
|
+
|
|
91
|
+
### `+float-image-delete`
|
|
92
|
+
|
|
93
|
+
_公共四件套 · 系统:`--yes`、`--dry-run`_
|
|
94
|
+
|
|
95
|
+
| Flag | Type | 必填 | 说明 |
|
|
96
|
+
| --- | --- | --- | --- |
|
|
97
|
+
| `--float-image-id` | string | required | 目标图片 id |
|
|
98
|
+
|
|
99
|
+
## Examples
|
|
100
|
+
|
|
101
|
+
公共四件套:所有 shortcut 顶部排列 `--url` / `--spreadsheet-token` / `--sheet-id` / `--sheet-name`(XOR)。浮动图片是 sheet 级对象——和单元格内嵌图片不同(后者走 `+cells-set`)。
|
|
102
|
+
|
|
103
|
+
### `+float-image-list`
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
lark-cli sheets +float-image-list --url "..." --sheet-id "$SID"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### `+float-image-create`
|
|
110
|
+
|
|
111
|
+
所有字段拍平为独立 flag:图片来源 `--image` / `--image-token` / `--image-uri`(三选一 XOR)/ `--image-name` / `--position-{row,col}` / `--size-{width,height}` / `--offset-{row,col}` / `--z-index`。
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 首选:直接给本地图片路径,CLI 自动上传(无需手动拿 token)
|
|
115
|
+
# 注意:--image-name 是 required(即使路径 basename 已经是 logo.png 也要显式传)
|
|
116
|
+
lark-cli sheets +float-image-create --url "..." --sheet-id "$SID" \
|
|
117
|
+
--image ./logo.png --image-name "logo.png" \
|
|
118
|
+
--position-row 2 --position-col B --size-width 300 --size-height 200 --z-index 1
|
|
119
|
+
|
|
120
|
+
# 用已有 file_token(从 +float-image-list 的 image_token 或 +cells-set-image 返回的 file_token)
|
|
121
|
+
lark-cli sheets +float-image-create --url "..." --sheet-id "$SID" \
|
|
122
|
+
--image-name "logo.png" --image-token "$TOKEN" \
|
|
123
|
+
--position-row 0 --position-col A --size-width 200 --size-height 150
|
|
124
|
+
|
|
125
|
+
# 用 reference_id(图片上传链路返回的 image reference_id;与 --image-token 二选一)
|
|
126
|
+
lark-cli sheets +float-image-create --url "..." --sheet-id "$SID" \
|
|
127
|
+
--image-name "logo.png" --image-uri "$IMAGE_URI" \
|
|
128
|
+
--position-row 2 --position-col B --size-width 300 --size-height 200 --z-index 1
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### `+float-image-update`
|
|
132
|
+
|
|
133
|
+
> **update ≈ create,只有图片源可省**:`+float-image-update` 的 update 要求和 create 相同的核心字段——`--image-name`、`--position-{row,col}`、`--size-{width,height}` **全部必填**;唯一区别是**图片源(`--image-token` / `--image-uri`)可以全省**,省略即保留原图。这**不是**"只发改动字段"的 patch:缺任一核心字段会被拒绝(`+float-image-list` 不回传 `image_name`,CLI 无法替你回填)。
|
|
134
|
+
>
|
|
135
|
+
> 推荐流程:先 `+float-image-list --float-image-id <id>` 回读当前 position / size,再带上 `--image-name` 和完整的 position / size 调一次 `+float-image-update`。
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# 调整位置 + 尺寸,保留原图(不传图片源)
|
|
139
|
+
lark-cli sheets +float-image-update --url "..." --sheet-id "$SID" \
|
|
140
|
+
--float-image-id "$IMG_ID" --image-name "logo.png" \
|
|
141
|
+
--position-row 5 --position-col C --size-width 300 --size-height 200
|
|
142
|
+
|
|
143
|
+
# 换图:额外带 --image-token,核心字段同样要给全
|
|
144
|
+
lark-cli sheets +float-image-update --url "..." --sheet-id "$SID" \
|
|
145
|
+
--float-image-id "$IMG_ID" --image-name "new-logo.png" --image-token "$NEW_TOKEN" \
|
|
146
|
+
--position-row 5 --position-col C --size-width 300 --size-height 200
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### `+float-image-delete`
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
lark-cli sheets +float-image-delete --url "..." --sheet-id "$SID" --float-image-id "$IMG_ID" --yes
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Validate / DryRun / Execute 约束
|
|
156
|
+
|
|
157
|
+
- `Validate`:XOR 公共四件套;`+float-image-create` 要求 `--image` / `--image-token` / `--image-uri` **恰好给一个**,`--position-row/col` 与 `--size-width/height` 必填且为合法整数;传 `--image` 时还会校验路径安全(绝对路径 / 越出工作目录会被拒,`--dry-run` 同样拦)。`+float-image-update` 必须 `--float-image-id`,并和 create 一样必填 `--image-name` / `--position-{row,col}` / `--size-{width,height}`(缺任一核心字段本地直接报错,不会静默发 0);图片源 `--image-token` / `--image-uri` 可省(省略保留原图),给则二选一;`+float-image-delete` 强制 `--yes` 或 `--dry-run`。
|
|
158
|
+
- `DryRun`:写操作输出"将要 POST/PATCH/DELETE 的 float_image 请求模板";传 `--image` 时会多打印一步本地图片上传(`POST /open-apis/drive/v1/medias/upload_all`,`parent_type=sheet_image`)。
|
|
159
|
+
- `Execute`:写后不自动回读;如需确认,自行调用 `+float-image-list --float-image-id <id>` 比对新位置 / 尺寸。
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# 飞书表格公式生成规则
|
|
2
|
+
|
|
3
|
+
> **本文定位**:飞书公式正确性的**唯一权威**——书写任何飞书公式、或把 Excel 公式迁移到飞书前,先读本文。涵盖公式书写约定(绝对引用、范围语法)、投影 vs spill、ARRAYFORMULA / 数组语义、高风险引用函数、日期差、不支持函数清单。
|
|
4
|
+
> **边界**:本文只讲"公式怎么写对";公式**怎么写入表格**(`+cells-set` / 模板单元格 + `--copy-to-range` / 容错回读)见 `lark-sheets-write-cells` 与 `lark-sheets-core-operations`。本文不含 shortcut,铁律见 `lark-sheets-core-operations`。
|
|
5
|
+
|
|
6
|
+
**核心原则:飞书不像 Excel 365 那样默认 spill(溢出展开)。飞书普通公式遇到区域时默认"投影"(只取当前行/列对应的单个值),必须显式使用 `ARRAYFORMULA` 或原生数组函数才能逐项展开。**
|
|
7
|
+
|
|
8
|
+
## 公式书写约定(写任何公式都先满足)
|
|
9
|
+
|
|
10
|
+
- **绝对引用 `$`**:向下 / 向右填充前判断哪些引用要锁定——用户指定的固定 cell(`$C$3`)、要固定的数据范围(`$A$2:$B$5`)、锁列不锁行(`$A2`)、锁行不锁列(`B$1`)。填充前检查是否需固定汇率 / 税率 / 查找表 / 权重表,以及同列 / 同行公式结构是否一致。
|
|
11
|
+
- **公式字符串用飞书范围语法**:写 `H:H`、`A2:B5`,**禁止** `H2:H` / `2:2`。这与 CLI 工具参数(如 `--range`)的 A1 表示法(`A1:D3`、`1:1`)写法不同,两者混淆会导致调用失败或公式报错。
|
|
12
|
+
|
|
13
|
+
## 翻译后必做:代码复现校验
|
|
14
|
+
|
|
15
|
+
公式语法翻译完之后,**必须**用本地脚本在源数据上独立复现一份"等价计算结果"再写入。流程:
|
|
16
|
+
|
|
17
|
+
1. **挑 3-5 个代表性输入行**(首行 / 中段 / 末行 / 含空值 / 含异常格式各一)
|
|
18
|
+
2. **用 Python 复现 Excel 原公式的语义**(不是飞书译文的语义,而是用户原本想要的结果)
|
|
19
|
+
3. **写入飞书译文公式后回读这几行的实际值**
|
|
20
|
+
4. **三方对照**:`Excel 原公式语义 == Python 复现 == 飞书译文回读值`,全部一致才交付;不一致先排查(数组语义?日期差?范围引用?)
|
|
21
|
+
|
|
22
|
+
**理由**:Excel→飞书的语法翻译很容易在 spill / 数组 / 日期差 / 范围引用上出现等价性偏差,仅靠语法转换通过不足以保证业务结果正确。
|
|
23
|
+
|
|
24
|
+
## 决策流程
|
|
25
|
+
|
|
26
|
+
1. 最终结果是**标量**(单值)→ 通常不需要 `ARRAYFORMULA`
|
|
27
|
+
2. 最终结果是**一维或二维数组**:
|
|
28
|
+
- 公式中**包含**飞书原生数组函数(如 FILTER、XLOOKUP、MAP 等)→ 无需加 `ARRAYFORMULA`,数组语义会自动传播到整个公式,包括原生数组函数外层接的标量运算(如 `+1`、`*100`)
|
|
29
|
+
- 公式中**不包含**任何原生数组函数,但在对区域做标量计算 → 加 `ARRAYFORMULA(<整个表达式>)`
|
|
30
|
+
3. Excel 依赖 `ROW(range)` 逐项驱动 `SUBTOTAL/INDIRECT/OFFSET` → 改用 `MAP(ARRAYFORMULA(ROW(...)), LAMBDA(r, ...))`
|
|
31
|
+
4. 内层 `INDEX/INDIRECT/OFFSET` 返回范围,外层 `SUMIF/COUNTIF/SUMIFS` 还要继续吃这些范围 → 改用 `MAP(..., LAMBDA(...))` 或 `REDUCE(..., LAMBDA(...))`
|
|
32
|
+
5. 公式意图是"对多个区域分别计算再汇总"(例如用 INDIRECT/OFFSET 对每行生成一个范围,再对所有范围聚合)→ 飞书不能直接返回"区域的列表",必须明确降维:用 `VSTACK` 垂直合并、`HSTACK` 水平合并、`TOCOL/TOROW` 展平,或 `REDUCE` 归约成标量
|
|
33
|
+
6. 算日期差 → 不要写 `DAY(end-start)`,用 `DAYS`、`DATEDIF` 或直接 `end-start`
|
|
34
|
+
|
|
35
|
+
## 飞书的投影行为(不是默认 spill)
|
|
36
|
+
|
|
37
|
+
飞书普通公式对引用区域默认"投影"而不是"spill":
|
|
38
|
+
|
|
39
|
+
- 单列区域 → 按当前公式所在行取值
|
|
40
|
+
- 单行区域 → 按当前公式所在列取值
|
|
41
|
+
- 二维区域 → 只有当前公式位置能映射到该区域时才取值,否则报错
|
|
42
|
+
- 数组常量 `{...}` 或函数返回矩阵,在普通标量上下文里通常只取左上角
|
|
43
|
+
|
|
44
|
+
因此:
|
|
45
|
+
- `=A1:A2` 在飞书普通公式里不会 spill,只会投影到当前行
|
|
46
|
+
- `=ABS(A2:B2)` 不会得到一整行,要写 `=ARRAYFORMULA(ABS(A2:B2))`
|
|
47
|
+
- `=TRUNC({1.1111,2.222},{1,2})` 要得到一整行,写 `=ARRAYFORMULA(TRUNC({1.1111,2.222},{1,2}))`
|
|
48
|
+
|
|
49
|
+
## ARRAYFORMULA 使用规则
|
|
50
|
+
|
|
51
|
+
**前提:以下规则适用于公式中没有任何原生数组函数的情况。** 若公式中已有原生数组函数(如 FILTER、XLOOKUP、MAP 等),数组语义会自动传播到整个公式的求值过程,后续标量运算无需额外包 `ARRAYFORMULA`(见下一节)。
|
|
52
|
+
|
|
53
|
+
需要加 `ARRAYFORMULA` 的典型场景(公式中无原生数组函数时):
|
|
54
|
+
|
|
55
|
+
- 算术运算:`+ - * / ^ %`
|
|
56
|
+
- 比较运算:`= <> > >= < <=`
|
|
57
|
+
- 标量数学函数:`ABS ROUND INT TRUNC MOD LOG LN SQRT SIN COS TAN ...`
|
|
58
|
+
- 文本函数:`LEN LEFT RIGHT MID UPPER LOWER TRIM TEXT VALUE ...`
|
|
59
|
+
- 日期函数:`YEAR MONTH DAY DATE TIME EDATE EOMONTH ...`
|
|
60
|
+
- 条件函数:`IF IFS IFERROR IFNA NOT ISNUMBER ISTEXT ISBLANK ...`
|
|
61
|
+
- 引用函数(高风险):`INDEX OFFSET COLUMN ROW MATCH`
|
|
62
|
+
|
|
63
|
+
### 公式中有原生数组函数时,整个公式已进入数组模式
|
|
64
|
+
|
|
65
|
+
飞书的数组语义会在整个公式求值过程中累积传播:一旦某个原生数组函数运行,后续所有运算符和函数也会自动逐元素处理,无论它们出现在哪一层。
|
|
66
|
+
|
|
67
|
+
因此,以下写法**无需**额外包 `ARRAYFORMULA`:
|
|
68
|
+
|
|
69
|
+
- `=FILTER(A2:A10,B2:B10="x")+1` ✓
|
|
70
|
+
- `=XLOOKUP(E2:E10,A2:A10,B2:B10)*100` ✓
|
|
71
|
+
- `=ABS(FILTER(A2:A10,B2:B10>0))` ✓
|
|
72
|
+
- `=MAP(A2:A10,LAMBDA(x,x*2))-1` ✓
|
|
73
|
+
|
|
74
|
+
对比:**没有原生数组函数**时必须加:
|
|
75
|
+
|
|
76
|
+
- `=A2:A100*B2:B100` → `=ARRAYFORMULA(A2:A100*B2:B100)` ✓
|
|
77
|
+
- `=IF(A2:A100>0,B2:B100,"")` → `=ARRAYFORMULA(IF(A2:A100>0,B2:B100,""))` ✓
|
|
78
|
+
|
|
79
|
+
## 飞书原生数组函数清单
|
|
80
|
+
|
|
81
|
+
以下函数按数组语义工作,通常**不需要额外包 `ARRAYFORMULA`**:
|
|
82
|
+
|
|
83
|
+
`ARRAYFORMULA` `ARRAY_CONSTRAIN` `BYCOL` `BYROW` `CELL` `CHOOSECOLS` `CHOOSEROWS` `DROP` `EXPAND` `FILTER` `FLATTEN` `FREQUENCY` `GROWTH` `HSTACK` `IMPORTDATA` `IMPORTFEED` `IMPORTHTML` `IMPORTRANGE` `IMPORTXML` `LINEST` `LOGEST` `LOOKUP` `MAKEARRAY` `MAP` `MINVERSE` `MMULT` `MUNIT` `QUERY` `RANDARRAY` `REDUCE` `REGEXEXTRACT` `SCAN` `SEQUENCE` `SORT` `SORTBY` `SORTN` `SPLIT` `SUMPRODUCT` `SWITCH` `TAKE` `TEXTSPLIT` `TOCOL` `TOROW` `TRANSPOSE` `TREND` `UNIQUE` `VSTACK` `WRAPCOLS` `WRAPROWS` `XLOOKUP`
|
|
84
|
+
|
|
85
|
+
> **注意:`SWITCH` 在飞书里被当作原生数组函数处理,这与 Excel 行为不同,不需要额外包 `ARRAYFORMULA`。**
|
|
86
|
+
|
|
87
|
+
## IMPORTRANGE 跨工作簿引用限制
|
|
88
|
+
|
|
89
|
+
用 `IMPORTRANGE` 跨电子表格引用数据时有两条硬上限:
|
|
90
|
+
|
|
91
|
+
- **嵌套最多 5 层**:被引用的表里若又用 `IMPORTRANGE` 继续引下一张表,整条引用链最多 5 层。
|
|
92
|
+
- **每个工作表最多 100 个 `IMPORTRANGE` 引用**。
|
|
93
|
+
|
|
94
|
+
超限会让引用失效或报错。设计大量跨表汇总前先估算引用数,必要时先把数据落地到本表再计算。
|
|
95
|
+
|
|
96
|
+
## INDEX / OFFSET / COLUMN / ROW / MATCH 是高风险函数
|
|
97
|
+
|
|
98
|
+
这组函数容易让人误以为会自动把多值铺开,但在飞书里不能这样假设。
|
|
99
|
+
|
|
100
|
+
**高风险信号:**
|
|
101
|
+
|
|
102
|
+
- 行号 / 列号 / 偏移量本身是数组
|
|
103
|
+
- 结果本来应该是一行或一块二维区域
|
|
104
|
+
- 外层还有算术、比较、`IF` 等继续处理它
|
|
105
|
+
|
|
106
|
+
更稳的写法:
|
|
107
|
+
|
|
108
|
+
- `=ARRAYFORMULA(INDEX(...))`
|
|
109
|
+
- `=ARRAYFORMULA(OFFSET(...))`
|
|
110
|
+
- `=ARRAYFORMULA(COLUMN(...))`
|
|
111
|
+
- `=ARRAYFORMULA(ROW(...))`
|
|
112
|
+
|
|
113
|
+
**例外:** 如果返回值只是立刻交给聚合函数消费,不需要额外包:
|
|
114
|
+
|
|
115
|
+
- `=SUM(INDEX(A1:B2,0,1))` ✓
|
|
116
|
+
|
|
117
|
+
## Excel 隐式逐项求值,飞书里要显式写 MAP
|
|
118
|
+
|
|
119
|
+
**典型特征:**
|
|
120
|
+
|
|
121
|
+
- 外层是 `SUMPRODUCT`、`SUM` 等聚合
|
|
122
|
+
- 内层用了 `SUBTOTAL`、`INDIRECT`、`OFFSET` 等更偏"单值/单引用"的函数
|
|
123
|
+
- Excel 会把中间结果逐项带进去算
|
|
124
|
+
- 飞书里直接照抄,往往不能得到同样的逐项语义
|
|
125
|
+
|
|
126
|
+
同类本质也包括:`INDEX/INDIRECT/OFFSET` 先返回范围,外层再把这些范围交给 `SUMIF`、`COUNTIF`、`AVERAGEIF`、`SUMIFS` 等范围感知函数 —— 飞书里这些外层函数不会自动二次展开内层范围。
|
|
127
|
+
|
|
128
|
+
这时不要只会补 `ARRAYFORMULA`,要显式写"遍历"。最常用模板:
|
|
129
|
+
|
|
130
|
+
```excel
|
|
131
|
+
=SUMPRODUCT(
|
|
132
|
+
MAP(
|
|
133
|
+
ARRAYFORMULA(ROW(目标范围)),
|
|
134
|
+
LAMBDA(r, 单行计算逻辑)
|
|
135
|
+
)
|
|
136
|
+
)
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
同类场景也优先考虑 `MAP`:
|
|
140
|
+
|
|
141
|
+
- `INDIRECT("A"&ROW(...))`
|
|
142
|
+
- `OFFSET(...,ROW(...)-ROW(...),...)`
|
|
143
|
+
- `SUBTOTAL(...)`
|
|
144
|
+
- `SUMIF(内层返回范围, ...)`
|
|
145
|
+
- `COUNTIF(内层返回范围, ...)`
|
|
146
|
+
- `SUMIFS(内层返回范围, ...)`
|
|
147
|
+
- 任何"希望对每一行 / 每一列各算一次"的模式
|
|
148
|
+
|
|
149
|
+
## 多层范围结果与三维以上结果
|
|
150
|
+
|
|
151
|
+
飞书公式结果只能是二维区域,不能是"数组的数组"。
|
|
152
|
+
|
|
153
|
+
### 多层范围不能自动二次展开
|
|
154
|
+
|
|
155
|
+
内层 `INDEX/INDIRECT/OFFSET` 返回的是二维范围,外层还想继续对这些范围做范围计算时,不要假设飞书会"再展开一层"。改用:
|
|
156
|
+
|
|
157
|
+
- `MAP(..., LAMBDA(...))` 显式逐项算
|
|
158
|
+
- `REDUCE(..., LAMBDA(...))` 显式累加/归约
|
|
159
|
+
|
|
160
|
+
### 真正的三维或更高维结果不能直接返回
|
|
161
|
+
|
|
162
|
+
典型触发场景:想把多个不同区域或不同条件的结果合并展示,例如:
|
|
163
|
+
- 对 A 列、B 列、C 列分别做 FILTER,想把三列结果并排展示
|
|
164
|
+
- 对多个月份分别生成数据行,想把所有月份上下堆叠展示
|
|
165
|
+
|
|
166
|
+
飞书无法直接返回"多个区域的集合",必须先决定降维方式:
|
|
167
|
+
|
|
168
|
+
- 上下堆叠:`=VSTACK(slice1, slice2, slice3)`
|
|
169
|
+
- 左右拼接:`=HSTACK(slice1, slice2, slice3)`
|
|
170
|
+
- 压成单列:`=TOCOL(...)`
|
|
171
|
+
- 压成单行:`=TOROW(...)`
|
|
172
|
+
- 只保留聚合值:`=REDUCE(slice1, {slice2,slice3}, LAMBDA(acc,x,acc+x))`
|
|
173
|
+
|
|
174
|
+
不要替用户"偷定"第三维展示方式;如果用户没有明确说明怎么展示,至少先把结果改写成可见的二维形状。
|
|
175
|
+
|
|
176
|
+
## 不能机械照抄的 Excel 语法
|
|
177
|
+
|
|
178
|
+
### `@` 隐式交叉
|
|
179
|
+
|
|
180
|
+
Excel:`=@A1:A10`(强制单值,取当前行对应的值)
|
|
181
|
+
|
|
182
|
+
飞书没有 `@` 运算符。飞书普通公式对引用区域默认就有投影语义,去掉 `@` 即可:
|
|
183
|
+
|
|
184
|
+
- Excel: `=@A1:A10`
|
|
185
|
+
- 飞书: `=A1:A10`
|
|
186
|
+
|
|
187
|
+
### `#` spill range
|
|
188
|
+
|
|
189
|
+
Excel:`=A1#`(引用 A1 公式溢出的整片区域)
|
|
190
|
+
|
|
191
|
+
飞书没有此语法,迁移方式:
|
|
192
|
+
|
|
193
|
+
- spill 区域已知 → 改成明确范围
|
|
194
|
+
- spill 区域未知 → 回到源公式重写,或用 `TAKE` / `DROP` / `ARRAY_CONSTRAIN`
|
|
195
|
+
|
|
196
|
+
### 结构化引用
|
|
197
|
+
|
|
198
|
+
Excel:`=SUM(Table1[Amount])`
|
|
199
|
+
|
|
200
|
+
飞书不支持结构化引用,改成显式 A1 区域:`=SUM(A2:A100)`
|
|
201
|
+
|
|
202
|
+
### 老式 CSE 花括号
|
|
203
|
+
|
|
204
|
+
Excel:`{=A1:A10*B1:B10}`(Ctrl+Shift+Enter 输入)
|
|
205
|
+
|
|
206
|
+
飞书改为:`=ARRAYFORMULA(A1:A10*B1:B10)`
|
|
207
|
+
|
|
208
|
+
## 日期序列与日期差
|
|
209
|
+
|
|
210
|
+
飞书日期序列:`0 = 1899-12-30`,`1 = 1899-12-31`,没有 Excel 的 1900 年闰年兼容问题。
|
|
211
|
+
|
|
212
|
+
**错误写法(不要用):**
|
|
213
|
+
|
|
214
|
+
- `=DAY(B2-A2)` ✗ — 差值会被当成日期序列号再拆字段
|
|
215
|
+
- `=MONTH(B2-A2)` ✗
|
|
216
|
+
- `=YEAR(B2-A2)` ✗
|
|
217
|
+
|
|
218
|
+
**正确写法:**
|
|
219
|
+
|
|
220
|
+
- 天数差:`=DAYS(B2,A2)` 或 `=DATEDIF(A2,B2,"D")` 或 `=B2-A2`
|
|
221
|
+
- 月份差:`=DATEDIF(A2,B2,"M")`
|
|
222
|
+
- 年份差:`=DATEDIF(A2,B2,"Y")`
|
|
223
|
+
- 工作日差:`=NETWORKDAYS(A2,B2)`
|
|
224
|
+
|
|
225
|
+
## 飞书不支持的函数
|
|
226
|
+
|
|
227
|
+
> 本段是"飞书不支持函数"的**唯一权威清单**(`lark-sheets-core-operations` 不再单列,统一指向这里)。以下函数在飞书里不存在或被禁用,禁止主动使用;用户明确要求时应拒绝并提供替代方案:
|
|
228
|
+
|
|
229
|
+
- `STOCKHISTORY` — 实时股票数据,飞书无等价函数,需手动导入数据
|
|
230
|
+
- `WEBSERVICE` — 外部 HTTP 请求,飞书无等价函数
|
|
231
|
+
- CUBE 系列(`CUBEVALUE`、`CUBEMEMBER`、`CUBESET`、`CUBERANK` 等)— OLAP cube 函数,飞书不支持
|
|
232
|
+
- `GOOGLEFINANCE`、`GOOGLETRANSLATE` 等 Google 特有函数 — 无等价函数
|
|
233
|
+
- `FORECAST.ETS` 系列(`FORECAST.ETS`、`FORECAST.ETS.STAT` 等)— 飞书不支持
|
|
234
|
+
- `INFO`、`RTD` — 系统信息 / 实时数据函数,飞书不支持
|
|
235
|
+
- `PIVOT` — 用 `+pivot-{create|update|delete}` 透视表对象替代
|
|
236
|
+
- `AMORDEGRC`、`PHONETIC`、`DETECTLANGUAGE` — 飞书不支持
|
|
237
|
+
|
|
238
|
+
## 代表性改写示例
|
|
239
|
+
|
|
240
|
+
- 基础逐项计算
|
|
241
|
+
- Excel: `=A2:A100*B2:B100`
|
|
242
|
+
- 飞书: `=ARRAYFORMULA(A2:A100*B2:B100)`
|
|
243
|
+
- 条件判断
|
|
244
|
+
- Excel: `=IF(A2:A100>0,B2:B100,"")`
|
|
245
|
+
- 飞书: `=ARRAYFORMULA(IF(A2:A100>0,B2:B100,""))`
|
|
246
|
+
- 原生数组函数(无需改动)
|
|
247
|
+
- Excel: `=FILTER(A2:C100,B2:B100="East")`
|
|
248
|
+
- 飞书: `=FILTER(A2:C100,B2:B100="East")`
|
|
249
|
+
- 原生数组函数 + 标量运算(无需改动,数组语义自动传播)
|
|
250
|
+
- Excel: `=XLOOKUP(E2:E10,A2:A10,B2:B10)*100`
|
|
251
|
+
- 飞书: `=XLOOKUP(E2:E10,A2:A10,B2:B10)*100`
|
|
252
|
+
- 高风险引用函数
|
|
253
|
+
- Excel: `=INDEX(A1:D2,{2,1},0)`
|
|
254
|
+
- 飞书: `=ARRAYFORMULA(INDEX(A1:D2,{2,1},0))`
|
|
255
|
+
- 日期差
|
|
256
|
+
- 错误: `=DAY(B2-A2)`
|
|
257
|
+
- 推荐: `=DAYS(B2,A2)` 或 `=DATEDIF(A2,B2,"D")` 或 `=B2-A2`
|
|
258
|
+
- Excel 隐式逐项求值
|
|
259
|
+
- Excel: `=SUMPRODUCT(SUBTOTAL(103,INDIRECT("E"&ROW($E$16:$E$387))))`
|
|
260
|
+
- 飞书: `=SUMPRODUCT(MAP(ARRAYFORMULA(ROW($E$16:$E$387)),LAMBDA(row,SUBTOTAL(103,INDIRECT("E"&row)))))`
|
|
261
|
+
- 多层范围 / 二次展开
|
|
262
|
+
- 错误思路: `=SUMIF(INDIRECT("E"&ROW($E$16:$E$387)),">0")`
|
|
263
|
+
- 飞书: `=MAP(ARRAYFORMULA(ROW($E$16:$E$387)),LAMBDA(r,SUMIF(INDIRECT("E"&r),">0")))`
|
|
264
|
+
- 三维降二维(保留所有层)
|
|
265
|
+
- 飞书: `=VSTACK(slice1,slice2,slice3)` 或 `=HSTACK(slice1,slice2,slice3)`
|
|
266
|
+
- 三维降二维(只保留聚合值)
|
|
267
|
+
- 飞书: `=REDUCE(slice1,{slice2,slice3},LAMBDA(acc,x,acc+x))`
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Lark Sheet Pivot Table
|
|
2
|
+
|
|
3
|
+
## 真对象硬约束
|
|
4
|
+
|
|
5
|
+
当用户要求"透视表 / 分组汇总 / 交叉分析 / 按 X 统计 Y"时,**必须**通过 `+pivot-{create|update|delete}` 创建真实的透视表对象。**禁止**用 `SUMIFS` / `COUNTIFS` 等普通公式 + `+cells-set` 在原表中拼一张"看起来像透视表的汇总表"来代替。判断标准:交付后 `+pivot-list` 必须能返回该对象。
|
|
6
|
+
|
|
7
|
+
## 使用场景
|
|
8
|
+
|
|
9
|
+
读写透视表对象。本 reference 覆盖 4 个 shortcut:
|
|
10
|
+
|
|
11
|
+
| 操作需求 | 使用工具 | 说明 |
|
|
12
|
+
|---------|---------|------|
|
|
13
|
+
| 查看已有透视表 | `+pivot-list` | 获取透视表的结构、数据源和配置 |
|
|
14
|
+
| 创建/更新/删除透视表 | `+pivot-{create|update|delete}` | 对透视表执行写入操作 |
|
|
15
|
+
|
|
16
|
+
典型工作流:先读取现有透视表了解配置 → 执行创建/更新/删除 → **必须再次读取验证结果**。
|
|
17
|
+
|
|
18
|
+
## 行/值字段映射(创建前必做)
|
|
19
|
+
|
|
20
|
+
创建透视表前先识别用户需求中的分组维度和聚合指标,**不要搞反**:
|
|
21
|
+
|
|
22
|
+
- **rows(行字段)** = 分组维度,即"按什么分组"。例:部门、地区、医生、产品类别
|
|
23
|
+
- **values(值字段)** = 聚合指标,即"统计什么数值"。例:销售额(聚合方式 `sum`)、订单数(聚合方式 `count`)
|
|
24
|
+
- **columns(列字段)** = 交叉维度(可选),即"再按什么横向展开"。例:月份、性别
|
|
25
|
+
|
|
26
|
+
| 用户说 | rows | values | columns |
|
|
27
|
+
|--------|------|--------|---------|
|
|
28
|
+
| "按部门统计人数" | 部门 | 姓名(`summarize_by: "count"`) | — |
|
|
29
|
+
| "按医生统计费用和结余" | 主管医生 | 费用(`"sum"`)、结余(`"sum"`) | — |
|
|
30
|
+
| "各部门男女人数" | 部门 | 姓名(`"count"`) | 性别 |
|
|
31
|
+
|
|
32
|
+
**常见配置错误(必须注意)**:
|
|
33
|
+
- **数据源范围必须精确**:透视表的数据源范围必须包含表头行,且精确覆盖全部数据行列。范围过大(包含空行/空列)或过小(遗漏数据列)都会导致透视表结果错误
|
|
34
|
+
- **行列字段选择要匹配用户意图**:用户说"按商品统计金额"→ 行字段=商品,值字段=金额(`summarize_by: "sum"`)。不要把行列字段搞反
|
|
35
|
+
- **聚合类型要匹配**:用户说"统计数量"→ `summarize_by: "count"`;"统计总额"→ `"sum"`;"统计平均"→ `"average"`。完整合法值:`sum` / `count` / `average` / `max` / `min` / `product` / `countNums` / `stdDev` / `stdDevp` / `var` / `varp` / `distinct` / `median`。默认不要用 `count` 替代 `sum`
|
|
36
|
+
- **参数长度限制**:如果透视表配置 JSON 过长(数据源范围跨越大量行列),可能导致工具调用失败。此时应先确认数据范围的精确边界,避免传入过大的 range
|
|
37
|
+
- **创建后必须验证**:调用 `+pivot-list` 确认透视表结构正确
|
|
38
|
+
|
|
39
|
+
## Shortcuts
|
|
40
|
+
|
|
41
|
+
| Shortcut | Risk | 分组 |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| `+pivot-list` | read | 对象 |
|
|
44
|
+
| `+pivot-create` | write | 对象 |
|
|
45
|
+
| `+pivot-update` | write | 对象 |
|
|
46
|
+
| `+pivot-delete` | high-risk-write | 对象 |
|
|
47
|
+
|
|
48
|
+
## Flags
|
|
49
|
+
|
|
50
|
+
### `+pivot-list`
|
|
51
|
+
|
|
52
|
+
_公共四件套 · 系统:`--dry-run`_
|
|
53
|
+
|
|
54
|
+
| Flag | Type | 必填 | 说明 |
|
|
55
|
+
| --- | --- | --- | --- |
|
|
56
|
+
| `--pivot-table-id` | string | optional | 按 id 过滤 |
|
|
57
|
+
|
|
58
|
+
### `+pivot-create`
|
|
59
|
+
|
|
60
|
+
_公共:URL/token(无 sheet 定位) · 系统:`--dry-run`_
|
|
61
|
+
|
|
62
|
+
| Flag | Type | 必填 | 说明 |
|
|
63
|
+
| --- | --- | --- | --- |
|
|
64
|
+
| `--properties` | string + File + Stdin(复合 JSON) | required | JSON:{"rows":[...],"columns":[...],"values":[...],"filters":[...],"show_row_grand_total":true,"show_col_grand_total":true}(数据源走 --source,不要再放进 properties.source) |
|
|
65
|
+
| `--target-position` | string | optional | 透视表落点子表内的起始 cell(A1 格式,如 `A1`),映射到顶层 `target_position`,默认 `A1`(值为 A1 时不下发)。它与 `--range` 都表达落点但落在不同 wire 字段,避免两者同时给冲突值 |
|
|
66
|
+
| `--target-sheet-id` | string | xor | 透视表落点目标子表的 reference_id(与 `--target-sheet-name` 互斥,优先于 --target-sheet-name;都不传时自动新建一张子表放置透视表——推荐)。与数据源 sheet 区分:数据源 sheet 写在 --source 的 A1 引用里(带 sheet 前缀,形如 `'Sheet1'!A1:D100`)。 |
|
|
67
|
+
| `--target-sheet-name` | string | xor | 透视表落点目标子表的名称(与 `--target-sheet-id` 互斥;都不传时自动新建一张子表放置透视表——推荐)。与数据源 sheet 区分:数据源 sheet 写在 --source 的 A1 引用里(带 sheet 前缀,形如 `'Sheet1'!A1:D100`)。 |
|
|
68
|
+
| `--source` | string | required | 透视表源数据区域(A1 表示法,格式 `'SheetName'!StartCell:EndCell`,如 `'Sheet1'!A1:D100`) |
|
|
69
|
+
| `--range` | string | optional | 透视表左上角放置位置(A1 单值,如 `F1`,仅 create 生效),映射到 `properties.range`;省略时放在落点子表(默认新建子表)的左上角。它与 `--target-position` 都表达落点但落在不同 wire 字段,避免两者同时给冲突值 |
|
|
70
|
+
|
|
71
|
+
### `+pivot-update`
|
|
72
|
+
|
|
73
|
+
_公共四件套 · 系统:`--dry-run`_
|
|
74
|
+
|
|
75
|
+
| Flag | Type | 必填 | 说明 |
|
|
76
|
+
| --- | --- | --- | --- |
|
|
77
|
+
| `--pivot-table-id` | string | required | 目标透视表 id |
|
|
78
|
+
| `--properties` | string + File + Stdin(复合 JSON) | required | 完整或足够完整的配置(先 `+pivot-list --pivot-table-id <id>` 回读再 patch) |
|
|
79
|
+
|
|
80
|
+
### `+pivot-delete`
|
|
81
|
+
|
|
82
|
+
_公共四件套 · 系统:`--yes`、`--dry-run`_
|
|
83
|
+
|
|
84
|
+
| Flag | Type | 必填 | 说明 |
|
|
85
|
+
| --- | --- | --- | --- |
|
|
86
|
+
| `--pivot-table-id` | string | required | 目标透视表 id |
|
|
87
|
+
|
|
88
|
+
## Schemas
|
|
89
|
+
|
|
90
|
+
> 复合 JSON flag 字段速查(只列顶层 + 一层嵌套)。深层结构看下方 `## Examples`,或用 `--print-schema` 读完整 JSON Schema(用法见 SKILL.md「公共 flag 速查」与「Agent 使用提示」)。
|
|
91
|
+
|
|
92
|
+
### `+pivot-create` `--properties` / `+pivot-update` `--properties`
|
|
93
|
+
|
|
94
|
+
_创建/更新的透视表属性_
|
|
95
|
+
|
|
96
|
+
**顶层字段**:
|
|
97
|
+
- `range` (string?) — 放置透视表的左上角单元格 A1 地址(例如:'F1')(仅 create 时有效) — ⚠️ 已拎为独立 flag `--range`,请勿在此 JSON 内重复填写(同名以独立 flag 为准)
|
|
98
|
+
- `source` (string?) — 源数据区域地址,格式为 'SheetName!StartCell:EndCell'(例如:'Sheet1!A1:D100') — ⚠️ 已拎为独立 flag `--source`,请勿在此 JSON 内重复填写(同名以独立 flag 为准)
|
|
99
|
+
- `rows` (array<object>?) — 纵向分组字段(行字段) each: { field: string, display_name?: string, sort?: object, filter?: object, condition_filter?: object, …共 6 项 }
|
|
100
|
+
- `columns` (array<object>?) — 横向分组字段(列字段) each: { field: string, display_name?: string, sort?: object, filter?: object, condition_filter?: object, …共 6 项 }
|
|
101
|
+
- `filters` (array<object>?) — 筛选区域字段(页字段) each: { field: string, display_name?: string, filter?: object, condition_filter?: object, group?: object }
|
|
102
|
+
- `values` (array<object>?) — 要汇总的字段(至少需要 1 个) each: { field: string, display_name?: string, summarize_by?: enum, show_data_as?: enum, base_field?: string }
|
|
103
|
+
- `auto_fit_col` (boolean?) — 是否自动调整列宽以适应内容
|
|
104
|
+
- `show_row_grand_total` (boolean?) — 是否显示行总计(默认 true)
|
|
105
|
+
- `show_col_grand_total` (boolean?) — 是否显示列总计(默认 true)
|
|
106
|
+
- `show_subtotals` (boolean?) — 是否显示分类小计(默认 true,应用于所有字段)
|
|
107
|
+
- `repeat_row_labels` (boolean?) — 是否显示重复项标签
|
|
108
|
+
- `calculated_fields` (array<object>?) — 计算字段列表 each: { name: string, formula: string, summarize_by?: enum }
|
|
109
|
+
- `collapse` (object?) — 行字段展开/折叠状态:字段名 -> 要折叠的项目列表
|
|
110
|
+
|
|
111
|
+
## Examples
|
|
112
|
+
|
|
113
|
+
公共四件套:所有 shortcut 顶部排列 `--url` / `--spreadsheet-token` / `--sheet-id` / `--sheet-name`,其中 `--sheet-id` / `--sheet-name` 在 `+pivot-update` / `+pivot-delete` / `+pivot-list` 上是公共四件套语义(定位透视表所在 sheet,XOR 必传一个)。
|
|
114
|
+
|
|
115
|
+
**`+pivot-create` 例外**:placement 选择器用 `--target-sheet-id` / `--target-sheet-name`(XOR,两个都不传时后端自动新建子表存放产物,强烈推荐,绝不碰源数据)。数据源 sheet 写在 `--source` 的 `'SheetName'!Range` 里,不靠 sheet 选择器 flag。
|
|
116
|
+
|
|
117
|
+
### `+pivot-list`
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
lark-cli sheets +pivot-list --url "..." --sheet-id "$SID"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### `+pivot-create`
|
|
124
|
+
|
|
125
|
+
> 数据源 `--source` 必须从表头行开始;空行 / 汇总行会被当作数据参与聚合,需提前用 `+csv-get` 确认起止边界。`--source` 和 `--range` 是独立 flag(不要再放 `--properties`);`rows` / `columns` / `values` 等数组字段走 `--properties`。
|
|
126
|
+
>
|
|
127
|
+
> **先理清 `+pivot-create` 上 4 个位置类入参(语义不同,别混)**:
|
|
128
|
+
> - `--source`(**必填**):**源数据**区域,须自带 `Sheet!` 前缀(如 `'Sheet1'!A1:D100`,sheet 名按 A1 标准单引号包裹)。源 sheet 的名字在 `--source` 字符串里,**不**通过单独 flag 传。
|
|
129
|
+
> - `--target-sheet-id` / `--target-sheet-name`:**透视表的落点 sheet**(即产物放哪张子表)。两个互斥(最多传一个),都不传时后端自动新建子表存放产物(强烈推荐)。
|
|
130
|
+
> - `--target-position`(可选,A1 表示法,默认 `A1`):落点 sheet 内的起始 cell,映射到顶层 `target_position`。
|
|
131
|
+
> - `--range`(可选,A1 单值,仅 create 生效):跟 `--target-position` 表达同一意图但映射到 `properties.range`,**两者不要同时给**。
|
|
132
|
+
>
|
|
133
|
+
> **落点 3 种策略(互斥,选其一)**:
|
|
134
|
+
> 1. **默认(强烈推荐)**:`--target-sheet-id` / `--target-sheet-name` / `--target-position` / `--range` **全都不传** → 服务端**自动新建子表**存放产物,绝不碰任何已有数据。
|
|
135
|
+
> 2. **放进指定的已有子表**:传 `--target-sheet-id <落点子表 id>`(或 `--target-sheet-name`),可选 `--target-position <子表内起点 cell>`。⚠️ **若落点子表就是源数据所在的 sheet**,必须配 `--target-position` 或 `--range` 指向源数据范围**之外**的位置,否则产物默认从 A1 起会盖在源数据上。
|
|
136
|
+
> 3. **`--range`**:跟策略 2 等价(同样需要 `--target-sheet-id` / `--target-sheet-name` 指定落点子表,不然落到自动新建子表),只是用 `properties.range` 那条 wire 路径表达位置。同样的覆盖风险,同样需要避开源数据范围。
|
|
137
|
+
>
|
|
138
|
+
> 一般用策略 1(默认新建子表)即可,零覆盖风险,无需任何 `--target-*` / `--range` flag。
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# 策略 1(强烈推荐):不传任何落点 flag → 后端自动新建子表,零覆盖风险
|
|
142
|
+
lark-cli sheets +pivot-create --url "..." \
|
|
143
|
+
--source "'Sheet1'!A1:D100" --properties @pivot.json
|
|
144
|
+
|
|
145
|
+
# 策略 2:落进指定的已有目标子表(注意目标 sheet ≠ 源 sheet,否则要配 --target-position 避开源数据)
|
|
146
|
+
lark-cli sheets +pivot-create --url "..." \
|
|
147
|
+
--source "'Sheet1'!A1:D100" --target-sheet-id "$DEST_SID" --target-position "A1" --properties @pivot.json
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### `+pivot-update`
|
|
151
|
+
|
|
152
|
+
> 不允许改 `--source` / `--range`(透视表创建后位置/数据源固定);只能用 `--properties` 改 rows / columns / values / filters 等。先 `+pivot-list --pivot-table-id <id>` 回读再 patch,避免漏字段。
|
|
153
|
+
|
|
154
|
+
### `+pivot-delete`
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
lark-cli sheets +pivot-delete --url "..." --sheet-id "$SID" --pivot-table-id "$PID" --yes
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Validate / DryRun / Execute 约束
|
|
161
|
+
|
|
162
|
+
- `Validate`:`--url` / `--spreadsheet-token` XOR 必填;`+pivot-{update,delete,list}` 的 `--sheet-id` / `--sheet-name` XOR 必填一个;`+pivot-create` 例外(用 `--target-sheet-id` / `--target-sheet-name` 表达落点,两个都可空时触发 backend auto-create 子表,两个都给则报 mutually exclusive);`+pivot-create` 的 `--source` 必填且必须含表头行;`--properties` 中 `rows` / `columns` / `values` 至少非空之一;`+pivot-delete` 强制 `--yes` 或 `--dry-run`。
|
|
163
|
+
- `DryRun`:写操作输出"将要 POST/PATCH/DELETE 的 pivot 请求模板"+ 预估输出尺寸(行数 × 列数)。
|
|
164
|
+
- `Execute`:写后不自动回读;如需确认,自行调用 `+pivot-list --pivot-table-id <id>` 并用 `+csv-get` 抽样读透视产物核对输出尺寸 + 总计行位置。
|
|
165
|
+
|
|
166
|
+
> ⚠️ pivot 输出包含总计 / 小计行;后续 chart 引用 pivot 时,`snapshot.data.refs` 必须排除这些行(见 `lark-sheets-chart` 的「⚠️ chart 数据源引用 pivot 时必须排除总计行」段)。
|