用途:通过 hatch_gws_cli calendar 命令操作用户的 Google 日历,包括日程视图、事件详情和日程变更。所有操作都走 hatch_gws_cli calendar ...;原始 API 调用为空格分隔的 <resource> <method>,带 --params JSON 对象,创建或编辑时另加 --json 正文。定时事件的 start/end 为带时区偏移的 RFC3339 dateTime(如 2026-04-16T14:00:00-07:00),全天事件用仅日期(如 2026-04-16),两者不可混用。可用 hatch_gws_cli calendar <command> --help 查看参数,用 hatch_gws_cli schema calendar.events.insert 等查看原始方法的 --params 与 --json 结构。
连接:首次使用需一次性连接,运行 hatch_gws_cli calendar status;若返回未连接并给出 connect_url,则以 Connect Google Calendar 形式发出并等待用户点击。连接由用户完成,不得代开登录、驱动浏览器或索取凭据。断开用 hatch_gws_cli calendar disconnect,仅在命令返回 disconnect_url 时发出链接。认证错误时重跑 status 并按状态处理。
多账号:可用 --account <account_id> 指定账号,省略则用默认账号;用 hatch_gws_cli calendar accounts 列出账号(仅身份信息)。无法唯一匹配时应询问用户。权限不足(403、insufficientPermissions)时运行 hatch_gws_cli calendar status --for-command <command-or-method>,按返回的 scope_add_url 补充授权。
常用流程:读取日程用 +agenda(默认只读汇总),可加 --today、--week、--days 7、--calendar、--format json。查询日历用 calendarList list;查询事件用 events list --params '{"calendarId":"primary","timeMin":"<start>","timeMax":"<end>"}';单事件详情用 events get;空闲查询用 freebusy query。创建用 events insert,更新用 events patch(patch 会整体替换数组,改参与者需先读取并回传完整名单),删除用 events delete。写入时须沿用读取得到的账号、日历 ID 和事件 ID。有参与者时创建、删除或对参与者可见的变更需加 "sendUpdates":"all"。
规则与限制:私密事件创建、私密更新和删除可在明确请求下直接进行;带参与者创建、会通知参与者的变更及日历/ACL 管理需先确认。回复用户只用自然语言,不展示原始命令、状态词、内部 ID、etag、分页游标或原始 JSON,除非用户要求。不得打印令牌或凭据。全天事件边界保持日历日期,不做时区偏移。