The spreadsheet-to-calendar guide

Three ways to sync Google Sheets™ to Google Calendar™

The semester schedule, the shift roster, the season, the content plan: it lives in a spreadsheet, and it needs to be on the calendar. There are three honest ways to get it there, all free. One is an add-on that previews every change before it happens, one is Google's built-in CSV importer, and one is code you write yourself. Which one fits depends on whether the schedule will ever change after it lands.

A Google Sheets spreadsheet of events with dates, times, and sync status next to the Google Calendar it fills
Rows in, events out: the add-on route keeps the sheet and the calendar telling the same story.

The add-on route · from Marinette

Calendar Sync for Sheets™

Install free from the Marketplace →

Free · 50 new events a month · Preview before anything syncs

The short answer

If the schedule is done and will never change, Google's CSV importer is fine: it is built in, it is a one-time copy, and you can be finished in ten minutes if your file is formatted the way Google expects.

If the schedule will change, and most schedules change, use the add-on. Practices get moved, shifts get swapped, the venue falls through. A one-time copy has no answer for that; a synced sheet does. Edit the row, sync again, and the event updates.

If you write code for fun and want full control, Apps Script is free and yours forever. You will also be its only maintainer, which is a bigger sentence than it looks.

Way 1: The add-on, so rows become events with a preview

Calendar Sync for Sheets™ is a free Google Workspace Marketplace™ add-on, built and supported by Marinette. Install it, run Set Up New Sheet, and you get an Events tab where each row is one event: title, date, start and end, description, location, guests, a Google Meet checkbox, and a color.

  1. Put the schedule in as rows. Type them, paste them from another sheet, or use Add from Schedule to read a PDF, a photo, a link, or pasted text straight into rows.
  2. Click Preview & Sync. The preview says exactly what will happen first: how many events will be created or updated, which rows have problems, and whether anyone will be emailed.
  3. From then on the sheet is in charge. Edit a row and sync, and the event updates. Delete a row, and the next sync can remove the event too, if you turn that setting on.

It also works in the other direction: Import from Calendar pulls existing events into the sheet for a date window you pick, so you can clean up a season in bulk instead of one event at a time. And if someone edits an event directly in Google Calendar, the row turns blue and says so the next time you check, instead of being silently overwritten.

The honest limits: it syncs when you click, not on a timer. The free tier covers 50 new events a month, with unlimited edits and re-syncs, and the schedule-file import runs once a day. Multi-day items land as one row per day.

Way 2: Google's CSV importer, built in and one-way

Google Calendar can import a CSV file directly. Lay the sheet out with Google's expected headers: Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location. Then download it as CSV, then in Calendar open Settings → Import & export, choose the file and the destination calendar, and import.

Google Calendar Help · Import events to Google Calendar

"Imported events don't stay in sync between your 2 accounts."

An import is a copy, not a connection. Edit the sheet afterward and the calendar does not care.

Two things to know before you click Import. First, the format is fussy: date and time columns have to look exactly the way Google expects, and when they don't, events land at wrong times or the importer refuses the file with a vague error. The fixes are collected in the CSV import troubleshooting guide. Second, there is no undo: once imported, the events are ordinary events with nothing connecting them back to the file. Import into a brand-new secondary calendar first, check the result, and only then keep it. A wrong calendar deletes in one click, a wrong import into your main calendar is a much longer story.

Way 3: Apps Script, free and powerful and yours to maintain

Every Google Sheet has a script editor under Extensions → Apps Script, and the CalendarApp service can create events from rows in a loop you write yourself. For a developer this is a fine Saturday project: it is free, it can run on a time trigger, and it does exactly what you tell it.

It also does only what you tell it. The parts that look easy are the parts that bite: running the script twice creates every event twice unless you build your own duplicate detection, updating a changed row means storing event IDs somewhere, deleted rows leave orphaned events, and time zones are wrong in ways you only notice next month. The most common failure, the script that fills a calendar with duplicates, is common enough that it has its own guide.

If that sounds like a fun problem, write the script. If it sounds like unpaid IT work, the add-on in Way 1 is that script, already written, with the edge cases already found.

Which one should you pick?

  • The schedule is final and formatted: Google's importer, into a fresh secondary calendar.
  • The schedule will change, has guests, or came from a PDF, photo, or link: the add-on, because the preview and the update path are the whole point.
  • You want to own every line of the logic: Apps Script, with the duplicates guide open in the next tab.

Put the whole schedule on the calendar in one sync

Free to install. 50 new events a month, preview before anything happens, and a real person answering the support inbox.

Install Calendar Sync for Sheets™ →

Sheets-to-Calendar questions, answered honestly

Not on a timer, in any of the three free ways. With the Calendar Sync for Sheets add-on, changes go to the calendar when you click Preview & Sync, and the preview shows exactly what will happen first. Google's CSV importer is a one-time copy: editing the sheet afterward changes nothing on the calendar. An Apps Script can run on a schedule, but you write and maintain that yourself.

Yes. Google's CSV importer and Apps Script are built into your Google account. Calendar Sync for Sheets is free to install with 50 new events a month, unlimited edits and re-syncs, and three schedule-file imports a day. Only creating events counts against the 50, not editing or re-syncing them.

It can, so it should be visible before it happens. Calendar Sync for Sheets shows a preview before anything is sent, including whether any guests will be emailed. Google's CSV importer drops guest data during import, per Google's own documentation, so imported events usually arrive with no guests at all.

Yes. Calendar Sync for Sheets has an Add from Schedule feature that reads a PDF, a photo or screenshot, a link, or pasted text, and turns it into event rows. Every imported row arrives marked Pending so you can check it before anything reaches your calendar. There is also a free web version at getmarinette.com/pdf-to-google-calendar that needs no install at all.

The import behavior described on this page comes from Google's own help pages, Import events to Google Calendar and Fix problems importing, viewed August 8, 2026. Google may change how import works at any time.

Still have a question? I'm happy to help.

Email support@getmarinette.com