← Calgrid · Español · Português

How to sync Google Sheets with Google Calendar

Updated October 2026 · 6-minute read

Lots of schedules live in a spreadsheet: staff shifts, content plans, class timetables, event lists. But people check their calendar, not the spreadsheet. Here are three ways to connect the two, from free and manual to fully automatic and two-way.

Free scriptZapier / MakeCalgrid add-on
CostFreeFrom ~$20/monthFree plan; Pro $5/month
DirectionSheet → CalendarUsually one wayBoth ways
Edits and deletionsCreates duplicatesNeeds extra setupHandled automatically
Setup time15 minutes20–60 minutes1 minute

Method 1: a free Apps Script (one way, good for one-off imports)

Google Sheets can run small scripts. This one reads every row and creates an event in your main calendar.

  1. Put your data in columns: A = title, B = start (date and time), C = end.
  2. Open Extensions → Apps Script, delete what's there and paste:
function exportToCalendar() {
  const cal = CalendarApp.getDefaultCalendar();
  const rows = SpreadsheetApp.getActiveSheet().getDataRange().getValues().slice(1);
  rows.forEach(([title, start, end]) => {
    if (title && start) cal.createEvent(title, new Date(start), new Date(end || start));
  });
}
  1. Click Run and allow access when Google asks.

The catch: run it twice and you get every event twice. Change a row and the calendar doesn't follow. Change an event in Calendar and the sheet never knows. It's fine for a one-time import, not for a schedule that changes.

Method 2: Zapier or Make (automatic, mostly one way)

Automation tools can create a calendar event when a new row appears. It works for new rows, but edits and deletions need extra steps, and Zapier itself says it isn't meant for two-way syncing. Expect a monthly bill once you pass the free task limits.

Method 3: a two-way add-on (automatic, both directions)

An add-on lives inside Google Sheets and keeps each row linked to its event. This is what we built Calgrid for:

  1. Install Calgrid from the Google Workspace Marketplace.
  2. Open your sheet → Extensions → Calgrid → Connect, and pick a calendar. Your existing events appear as rows.
  3. Add, edit or delete rows: the calendar follows. Move an event in Calendar: the row updates.

It also handles the annoying cases: copying a row makes a new event instead of overwriting the original, and large deletions stop and ask first.

Tips for a sheet that syncs cleanly

Want it to just work? Calgrid syncs Google Sheets and Google Calendar both ways, in English, Spanish and Portuguese. Get early access →