---
name: gog-calendar
description: "Google Calendar via the gog CLI: list/search events, check free/busy and conflicts, create/update/move/delete events, RSVP, and set out-of-office or focus time. Use for calendar automation needing JSON output and explicit account selection."
---

# gog calendar

Calendar reads and writes with parseable output. Pick the account on every call
with `--account <email>` (or set `GOG_ACCOUNT`).

## Reads

```bash
gog --account you@example.com calendar events --today --json --wrap-untrusted
gog --account you@example.com calendar events --from 2026-06-10 --to 2026-06-17 --json
gog --account you@example.com calendar event <eventId> --json --wrap-untrusted
gog --account you@example.com calendar search 'standup' --json
gog --account you@example.com calendar freebusy --from 2026-06-10T09:00 --to 2026-06-10T17:00 --json
gog --account you@example.com calendar conflicts --today --json
gog --account you@example.com calendar calendars --json
```

## Writes

```bash
gog --account you@example.com calendar create --summary "Sync" --start 2026-06-11T15:00 --end 2026-06-11T15:30 --dry-run
gog --account you@example.com calendar update <eventId> --summary "..." 
gog --account you@example.com calendar move <eventId> --start 2026-06-12T15:00 --end 2026-06-12T15:30
gog --account you@example.com calendar respond <eventId> --accept   # RSVP
gog --account you@example.com calendar delete <eventId> --force
gog --account you@example.com calendar out-of-office --start ... --end ...
```

## Safety

- `--dry-run` first when creating/updating; `delete` removes the event and needs
  `--force`. `respond` and `move` mutate a real invite — confirm the event id.
- stdout is data (`--json`/`--plain`); hints go to stderr. `--no-input` in automation.
- Use `--timezone`/`-z` (IANA name) for unambiguous times; default is local.

## Discovery

`gog calendar --help` · `gog calendar <cmd> --help` · `gog schema calendar <cmd> --json`
Reference: <https://gogcli.sh/>
