Expand Google Calendar recurring events and correctly handle exception instances (moved/modified occurrences)

domain: developers.google.com · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Fetch the recurring parent event via events.get/events.list, which carries the recurrence array (RRULE/RDATE/EXDATE strings) but no individual occurrence times.
  2. Call events.list with singleEvents=true to expand the series into individual instance events, each without a recurrence field but with recurringEventId pointing back to the parent.
  3. Match cancelled or modified occurrences by originalStartTime, which stays stable even if an instance's actual start time was moved.
  4. Distinguish "exception" instances (which differ from the recurring pattern, e.g. rescheduled or edited) from plain in-pattern occurrences by comparing their fields against the parent event.
  5. When mirroring events elsewhere, apply EXDATE-excluded and RDATE-added dates as defined in the recurrence array so your expansion matches Google's own instance list rather than re-implementing RRULE math independently.

Known gotchas

Related routes

Distinguish and retrieve occurrences, exceptions, and the series master for a Microsoft Graph recurring calendar event
learn.microsoft.com · 5 steps · unrated
Parse an external ICS feed and correctly expand recurring events, applying RRULE, EXDATE, and RECURRENCE-ID overrides
datatracker.ietf.org · 5 steps · unrated
Sync Google Calendar changes incrementally
google-calendar · 4 steps · unrated

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans