Calrows

How to bulk create Google Calendar™ events from a spreadsheet

Updated 4 October 2026

Adding events one by one is fine for three. For thirty or three hundred, you want to send a whole sheet at once, and you want to fix mistakes later without creating duplicates. Here are the options and their catches.

Option 1: Calendar's CSV import

Download the sheet as CSV and use Google Calendar™ › Settings › Import. It needs exact headers (Subject, Start Date, Start Time…), and it has no memory: importing an updated file creates every event a second time.

Option 2: A script

CalendarApp.createEvent() in a loop works, but you must store each event's ID yourself or re-runs duplicate everything, and large sheets hit Apps Script's six-minute limit.

Option 3: Calrows (one click, no duplicates)

  1. Install Calrows from the Google Workspace Marketplace (free), open your sheet, then go to Extensions › Calrows › Open sidebar.
  2. Use Insert sample sheet to see the layout, or map your own columns: title, start, end, all-day, description, location, guests, colour.
  3. Click Send rows to Calendar. Large sheets are processed in chunks and finish on their own, with progress shown in the sidebar.

Every row gets a hidden event ID, so the next time you send, changed rows update their events and unchanged rows are skipped. The Sync Log tab records every event created, updated or failed, with the row and the reason (for example "Start is not a date"), plus a summary line with how many rows were skipped.

The free plan creates up to 50 new events a month, and its limits are shown in the sidebar before anything runs. Pro is unlimited and a one-time payment with no auto-renewal.

See also: three ways to create Google Calendar events from Google Sheets.

Frequently asked questions

How many events can I create at once?

There is no fixed batch limit: big sheets run in chunks under Google's time limit and continue on their own. The free plan allows 50 new events a month; Pro is unlimited.

Will sending the sheet again duplicate events?

No. Rows already sent are updated or skipped, never created twice.

What if some rows have mistakes?

Good rows are still created. The Sync Log lists each failed row and why, so you can fix it and send again.

Install Calrows, free