How to add Google Sheets rows to Google Calendar: 3 ways
You have a schedule in a spreadsheet: shifts, classes, events, deadlines. You want it in Google Calendar. Here are the three ways to do it, and the problems each one runs into.
1. Export a CSV and import it into Calendar
Google Calendar can import a CSV file. Give your sheet columns named Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description and Location. Then download it with File → Download → Comma-separated values, and in Calendar go to Settings → Import & export → Import.
Good for: a one-time import that will never change.
Watch out for:
- Importing again creates every event a second time. There's no update.
- Changes in the sheet don't reach Calendar.
- Rows with problems are dropped without telling you which ones.
2. Write a Google Apps Script
In your sheet, open Extensions → Apps Script and loop over the rows with CalendarApp:
function addEvents() {
const rows = SpreadsheetApp.getActiveSheet().getDataRange().getValues().slice(1);
const cal = CalendarApp.getDefaultCalendar();
rows.forEach(([title, start, end]) => {
if (title && start instanceof Date) cal.createEvent(title, start, end || new Date(start.getTime() + 3600000));
});
}
Good for: people comfortable with code who want full control.
Watch out for:
- Duplicates: run it twice and you get every event twice, unless you store each event's ID and update instead of create.
- Wrong times: mixing the script's time zone, the spreadsheet's time zone and the calendar's time zone moves events by an hour or more, especially around daylight saving.
- Text that looks like a date: a cell that shows "11/16/2026" may be text, and the script skips it or fails.
- Overnight shifts: an end time of 6:00 AM on a 10:00 PM shift needs to roll to the next day.
- Deleted or edited events: if someone changes the event in Calendar, the script never finds out.
- Long sheets: scripts stop after 6 minutes, and Google limits how many events you can create per day.
3. Use a Google Sheets add-on
An add-on does the bookkeeping for you. Calendrow, for example:
- links each row to its event, so re-syncing updates instead of duplicating;
- shows a preview before writing anything;
- writes a status and reason next to every row;
- keeps times right across daylight saving.
Good for: schedules that change and need to stay in sync without code.
Quick checklist for any method
- Make sure dates are real dates. They line up on the right side of the cell.
- Check File → Settings for the spreadsheet's time zone and locale.
- Use one row per event with a header row.
- Decide which is the source of truth, the sheet or the calendar, and edit only that one.
Launching on the Google Workspace Marketplace in November 2026.