# 日历 (calendar) 命令参考 ## 命令总览 ### 查询日程列表 ``` Usage: dws calendar event list [flags] Example: dws calendar event list --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T18:00:00+08:00" Flags: --end string 结束时间 ISO-8601 (例如 2026-03-10T18:00:00+08:00) --start string 开始时间 ISO-8601 (例如 2026-03-10T14:00:00+08:00) ``` ### 获取日程详情 ``` Usage: dws calendar event get [flags] Example: dws calendar event get --id Flags: --id string 日程 ID (必填) ``` ### 创建日程 ``` Usage: dws calendar event create [flags] Example: dws calendar event create --title "Q1 复盘会" \ --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" dws calendar event create --title "Q1 复盘会" \ --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" \ --attendees userId1,userId2 --timezone "Asia/Shanghai" --desc "Q1 复盘" Flags: --attendees string 参会人 userId 列表 (逗号分隔) --desc string 日程描述 --end string 结束时间 ISO-8601 (必填) --open-dingtalk-ids string 参会人 openDingTalkId 列表 (逗号分隔) --start string 开始时间 ISO-8601 (必填) --timezone string 时区 (如 Asia/Shanghai) --title string 日程标题 (必填) ``` ### 修改日程 ``` Usage: dws calendar event update [flags] Example: dws calendar event update --id --title "新标题" dws calendar event update --id --desc "议程调整" --timezone "Asia/Shanghai" Flags: --desc string 新描述 --end string 新结束时间 --id string 日程 ID (必填) --start string 新开始时间 --timezone string 时区 (如 Asia/Shanghai) --title string 新标题 ``` ### 删除日程 ``` Usage: dws calendar event delete [flags] Example: dws calendar event delete --id --yes Flags: --id string 日程 ID (必填) ``` ### 推荐会议时间 ``` Usage: dws calendar event suggest [flags] Example: dws calendar event suggest --users , \ --start "2026-03-10T09:00:00+08:00" --end "2026-03-10T18:00:00+08:00" --duration 30 Flags: --duration string 会议时长(分钟) --end string 候选时段结束时间 ISO-8601 (必填) --start string 候选时段开始时间 ISO-8601 (必填) --timezone string 时区 (如 Asia/Shanghai) --users string 参会人 userId 列表 (必填) ``` 基于参会人闲忙数据给出排名后的候选时段,比 `busy search` 直接给出原始忙闲更适合"帮我约"场景。 ### 查看参与者 ``` Usage: dws calendar participant list [flags] Example: dws calendar participant list --event Flags: --event string 日程 ID (必填) ``` ### 添加参与者 ``` Usage: dws calendar participant add [flags] Example: dws calendar participant add --event --users , Flags: --event string 日程 ID (必填) --users string 用户 ID 列表 (必填) ``` ### 移除参与者 ``` Usage: dws calendar participant delete [flags] Example: dws calendar participant delete --event --users --yes Flags: --event string 日程 ID (必填) --users string 用户 ID 列表 (必填) ``` ### 搜索会议室 ``` Usage: dws calendar room search [flags] Example: dws calendar room search --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --available dws calendar room search --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --group-id Flags: --available 仅查空闲会议室 --end string 结束时间 ISO-8601 (必填) --group-id string 会议室分组ID(可选,留空查根目录;超100条时需按分组查询) --start string 开始时间 ISO-8601 (必填) ``` ### 预定会议室 ``` Usage: dws calendar room add [flags] Example: dws calendar room add --event --rooms Flags: --event string 日程 ID (必填) --rooms string 会议室 ID 列表 (必填) ``` ### 移除会议室 ``` Usage: dws calendar room delete [flags] Example: dws calendar room delete --event --rooms --yes Flags: --event string 日程 ID (必填) --rooms string 会议室 ID 列表 (必填) ``` ### 会议室分组列表 ``` Usage: dws calendar room list-groups [flags] Example: dws calendar room list-groups ``` ### 查询用户闲忙状态 ``` Usage: dws calendar busy search [flags] Example: dws calendar busy search --users , \ --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T18:00:00+08:00" Flags: --end string 结束时间 ISO-8601 (必填) --start string 开始时间 ISO-8601 (必填) --users string 用户 ID 列表 (必填) ``` ## 意图判断 用户说"日程/会议/约会/日历": - 查看 → `event list` - 详情 → `event get` - 创建/约 → `event create` - 修改/改时间 → `event update` - 取消/删除 → `event delete` - 帮我约/找个大家都有空的时间 → `event suggest` 用户说"参会人/与会者": - 查看 → `participant list` - 邀请/添加 → `participant add` - 移除 → `participant delete` 用户说"会议室/订会议室": - 哪个空闲 → `room search` - 预定 → `room add` - 取消预定 → `room delete` - 分组 → `room list-groups`,取 groupId 后 `room search --group-id` 用户说"有空吗/忙不忙/闲忙": - 要原始闲忙块 → `busy search` - 要直接给时段候选 → `event suggest` ## 核心工作流 ```bash # 1. 创建日程 — 提取 eventId dws calendar event create --title "Q1 复盘会" \ --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --format json # 2. 添加参与者 dws calendar participant add --event --users userId1,userId2 --format json # 3. 预定会议室 (先搜空闲) dws calendar room search --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --format json # 若返回错误(会议室超100条),先查分组再按分组搜索: # dws calendar room list-groups --format json # dws calendar room search --start ... --end ... --group-id --format json dws calendar room add --event --rooms --format json # 4. 查看日程列表 dws calendar event list --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --format json ``` ## 上下文传递表 | 操作 | 从返回中提取 | 用于 | |------|-------------|------| | `event create` | `eventId` | participant/room 操作的 --event | | `event list` | `events[].eventId` | event get/update/delete 的 --id | | `room search` | `rooms[].roomId` | room add 的 --rooms | | `room list-groups` | `groups[].groupId` | room search 的 --group-id | ## 注意事项 - 时间格式: `event create/update`、`event list` 和 `busy search` 用 ISO-8601 - 创建日程不会自动预定会议室,需额外 `room add` - `room search` 不带 `--group-id` 时查根目录;企业会议室超过 100 条会报错,此时需先 `room list-groups` 获取分组,再按分组逐一查询 ## 自动化脚本 | 脚本 | 场景 | 用法 | |------|------|------| | [calendar_today_agenda.py](../../scripts/calendar_today_agenda.py) | 查看今天/明天/本周日程安排 | `python calendar_today_agenda.py today` | | [calendar_schedule_meeting.py](../../scripts/calendar_schedule_meeting.py) | 一键创建日程+添加参与者+预定会议室 | `python calendar_schedule_meeting.py --title "复盘会" --start "2026-03-15T14:00" --end "2026-03-15T15:00" --users userId1 --book-room` | | [calendar_free_slot_finder.py](../../scripts/calendar_free_slot_finder.py) | 查询多人共同空闲时段 | `python calendar_free_slot_finder.py --users userId1,userId2 --date 2026-03-15` |