← 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 script | Zapier / Make | Calgrid add-on | |
|---|---|---|---|
| Cost | Free | From ~$20/month | Free plan; Pro $5/month |
| Direction | Sheet → Calendar | Usually one way | Both ways |
| Edits and deletions | Creates duplicates | Needs extra setup | Handled automatically |
| Setup time | 15 minutes | 20–60 minutes | 1 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.
- Put your data in columns: A = title, B = start (date and time), C = end.
- 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));
});
}
- 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:
- Install Calgrid from the Google Workspace Marketplace.
- Open your sheet → Extensions → Calgrid → Connect, and pick a calendar. Your existing events appear as rows.
- 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
- Use real dates (Format → Number → Date time), not text like "next Tuesday".
- Keep one event per row and the header in row 1.
- For all-day events, leave the time out and mark the row as all day.
- Use one tab per calendar (for example one per employee or per room).