Early access by waitlist
Back to blog

How to export Google Calendar to Excel (and fix the .ics)

Maksim Norkin (opens in a new tab)Product

Updated · 8 min read

Google Calendar exports a .ics file, not a spreadsheet. Here's how to export Google Calendar to Excel as one row per meeting, with fixes for times and repeats.

You can export Google Calendar to Excel, but not in one click: Google Calendar's only export is a .ics calendar file, which is made for other calendar apps, not for a spreadsheet. This guide gets your events out, turns the file into a sheet with a row for each event, and fixes the times, repeats and all-day events that usually come out wrong. It works in Excel and in Google Sheets, with nothing to install.

What Google Calendar's export gives you

Google Calendar exports in one format, iCalendar, as a .ics file. It exists so other calendar apps can import your events, so it is written as text, one property per line: each event starts with BEGIN:VEVENT, its title is a SUMMARY line, its start a DTSTART line, and it ends with END:VEVENT. Google offers no CSV or XLSX option, so the work is turning those lines into rows.

Three things decide whether you can export at all, per Google's help page: you need a computer, since the Google Calendar app can't export; you need the "Make changes and manage sharing" permission on the calendar; and on a work or school account, your administrator may have turned export off.

Export your Google Calendar: one calendar or all of them

To export one calendar:

  1. Open Google Calendar in a browser on a computer.
  2. Under My calendars, point to the calendar and click its ⋯ menu.
  3. Choose Settings and sharing.
  4. Under Calendar settings, click Export calendar. A .ics file downloads.

To export every calendar you can manage:

  1. Click the Settings gear at the top right, then Settings.
  2. On the left, click Import & export.
  3. Under Export, click Export. A .zip file downloads, holding one .ics file per calendar. Unzip it and work with the file of the calendar you need.

Convert ICS to Excel, one row per event

The idea: put the lines in one tab, label each line with the event it belongs to, then build a second tab that looks up each event's title, start, end and location. The formulas below work in Excel and in Google Sheets.

  1. Get the lines into a sheet. Open the .ics file in a plain text editor (TextEdit or Notepad), select everything and copy it. In a new spreadsheet, rename the first tab Raw, click A1 and paste. Each line lands in its own row in column A.
  2. Split each line into a name and a value. The name is everything before the first colon, the value everything after it. Put these in B1 and C1:
CellFormulaWhat it gives
B1=LEFT(LEFT(A1, FIND(":", A1&":")-1), FIND(";", A1&";")-1)The line's name, such as DTSTART
C1=MID(A1, FIND(":", A1&":")+1, 999)The value, such as 20261027T090000Z
D1=COUNTIF($A$1:A1, "BEGIN:VEVENT")Which event the line belongs to
E1=D1&"|"&B1A key for the lookup, such as 3|SUMMARY
Fill all four down to the last line of column A.
  1. Build the events tab. Add a second tab, Events. In row 1, type the headings Event, SUMMARY, DTSTART, DTEND and LOCATION, spelled exactly like that, since the lookup matches them. In column A, number the rows 1, 2, 3… up to the largest number in Raw's column D.
  2. Look each value up. In B2, put this, then fill it right to E and down to your last event:

=IFERROR(INDEX(Raw!$C:$C, MATCH($A2&"|"&B$1, Raw!$E:$E, 0)), "")

You now have one row per event. Copy the Events tab and paste it back as values only, so it no longer depends on Raw, and rename the headings to Title, Start, End and Location if you like. A few lines in Raw start with a space: in an .ics file, a long line is folded onto the next, and the space marks the continuation. They are mostly descriptions, which this sheet leaves out; if a title is cut short, join its pieces by hand.

Export Google Calendar to CSV through Google Sheets

If you'd rather end up with a CSV, or don't have Excel, do the steps above in Google Sheets: the same paste, the same formulas and the same two tabs. Then, with the Events tab open, choose File › Download › Comma-separated values (.csv), and check that the file holds your events rather than the raw lines. Excel opens that CSV too, and the sheet itself is a way to get Google Calendar into Google Sheets for a report you share.

Fix what breaks

Times that read like 20261027T090000Z

iCalendar writes a time as year, month, day, a T, then hours, minutes and seconds. To turn the value in B2 of Events into a date and time your spreadsheet can sort and add up, put this in a new column:

=DATE(LEFT(B2,4), MID(B2,5,2), MID(B2,7,2)) + IF(LEN(B2)>8, TIME(MID(B2,10,2), MID(B2,12,2), MID(B2,14,2)), 0)

Format the column as a date and time. Then check the end of the original value. In iCalendar, a time that ends in Z is in UTC, so add your offset from UTC: +2/24 for two hours ahead, -5/24 for five behind. Remember that the offset changes when the clocks do, so a sheet spanning a summer and a winter needs both. A time with no Z is in the time zone named on its line in Raw, after TZID=.

For a timesheet, the length of each meeting in hours is the end minus the start, times 24.

All-day events

In iCalendar, an all-day event has a date and no time (20261027), so the formula above gives it midnight, and its end date is not included: a one-day event ends on the day after. Subtract one from the end of each all-day event, or filter them into a tab of their own.

Repeating meetings

In iCalendar, a repeating event can be a single entry with an RRULE line that says how it repeats. If a weekly meeting shows up as one row, dated at its first occurrence, that's why, and an occurrence you moved can show up as a row of its own. Expanding the rule into every date by hand is slow. If you need each occurrence, for a timesheet say, copy the Schedule view for that date range instead, as below.

Guests

In iCalendar, each guest is an ATTENDEE line, so the lookup only finds the first. To list an event's guests, filter Raw to the rows whose column B says ATTENDEE and whose column D is that event's number. Each value is the guest's address after mailto:.

Export a shared Google Calendar you can only view

To export a shared Google Calendar, you need the same permission as for your own: Make changes and manage sharing. If someone shared theirs with you to view, the export isn't there, but you can still copy what you see. In Google Calendar, switch the view to Schedule, which lists the period's events one after another. Move to the dates you need, select the list from the first day to the last event, and paste it into an empty sheet as plain text.

It won't paste as neat rows the first time. How to copy and paste it properly, and fold a list that pastes as one column back into rows, is in our guide to exporting a list from any site.

Doing it again next month

Keep the spreadsheet. Next month, export again, clear Raw, paste the new lines into A1 and fill the formulas down as far as the new lines go: the Events tab follows. Extend its numbered rows if you have more events than last time. If you do this every week and wish the calendar had the button itself, our guide to building your own extension for a button the site lacks is the next step up.

What we're building

Tabless is a browser extension that builds what you ask for from the sites you allow; nothing is typed or submitted without your OK. It isn't open yet. An export like this one is the kind of job we're building it for: asking in plain words for "my meetings this month, one row each, with the title, start, end and guests", and getting it as a CSV or XLSX file.

It's designed to read through the session your browser already has, so there are no API keys or passwords to hand over, and to ask before it reads each site. You sign in to Tabless with a Wix account.

FAQ

Can I export Google Calendar events to a spreadsheet for a date range?

Google Calendar's export has no date range: it exports the whole calendar. Convert it as above, then filter or sort the Start column to the dates you need and delete the rest. For a short range, copying the Schedule view for those dates is quicker.

Why is the export option missing, or the file empty?

Export needs a computer, not the app, and the Make changes and manage sharing permission on that calendar, and a work or school administrator can turn it off. If you exported all calendars, the .zip holds one file per calendar, so open the one you meant. A file with no BEGIN:VEVENT lines has no events to convert.

Can I move Google Calendar to Google Sheets?

Not directly: Google Calendar exports only a .ics file. Paste its lines into Google Sheets and use the same formulas and two tabs as above, and the Events tab is your calendar in Google Sheets, ready to share or download as CSV.

Can Tabless export my calendar for me?

Not yet. Tabless isn't open, and exports like this one are among the jobs we're building it for. Join the waitlist, and we'll let you know when you can try Tabless.