The spreadsheet-to-calendar guide
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.
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
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.
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.
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.
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."
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.
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.
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™ →Questions
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