Calrows
For billing, reporting, payroll or just seeing where the month went, you want calendar events as rows. Here is what Google gives you, and what it doesn't.
Google Calendar™ can export a whole calendar as an .ics file from Settings › Import & export. That file is the entire history of the calendar, every event since it was created, in a format Sheets can't open directly. There is no date-range option and no "export to Sheets" button. For a month of events, it's the wrong tool.
Calrows adds an "Import from Calendar" panel inside Sheets. You pick the calendar, a From date and a To date, and it writes one row per event into a new tab: title, start, end, all-day flag, description, location, guests and colour. The tab is already mapped, so if you edit rows and click "Send rows to Calendar", the changes go back to the events.
Free imports up to 50 events at a time; Pro is unlimited.
If the reason you're exporting is to bill hours, skip the middle step. The Timesheet panel takes the same date range, an optional filter such as a client name that must appear in the event title, and an hourly rate. It writes date, title, start, end, hours, rate and amount per event, a total, and a per-client summary. All-day events are left out, since a holiday isn't billable time.
If you'd rather write it yourself, CalendarApp.getCalendarById(id).getEvents(start, end) returns the events, and a loop can write them to a sheet. Watch three things: all-day events report an end date one day after the last day, guests are a list that needs joining, and a calendar with thousands of events in the range will exceed the six-minute execution limit unless you page through it.