Cellbrook

Google Sheets guide · Calendars

How to create Google Calendar events from Excel

You can turn an Excel schedule into Google Calendar events by saving a CSV or importing the workbook into Google Sheets. We’ll explain both paths, how to test the result and when a linked sheet is useful for later updates.

Add CalendarRows to Google SheetsFree to install from the Google Workspace Marketplace

Updated · 14 min read · By the Cellbrook team

The short answer

To create Google Calendar events from Excel, first change the workbook into a format Calendar can use. Google Calendar cannot import an .xlsx file directly. In Excel, choose File → Save As → CSV UTF-8 (Comma delimited), then import that CSV through Google Calendar’s Settings → Import & export on a computer.

You can also import the workbook into Google Sheets. From there, download the relevant tab as a CSV for the same Calendar import, or use CalendarRows to send rows directly from the sheet. Both routes start with one event per row, but the CSV needs specific English headers.

For a one-time list without guests, repeat rules or later spreadsheet updates, the free CSV method is enough. Test it in an empty calendar first: importing the same file again creates another set of events, and there is no undo for the import as a unit. If the schedule will change, a sheet-based method that keeps an event ID can update an existing event instead.

CalendarRows is our Google Sheets add-on. It can send rows, keep them linked for later updates and map guests. Repeating events require Pro. If you prefer a free method without an add-on and are comfortable running code, the basic Apps Script in our create-events guide also saves event IDs and updates basic event details.

Prepare your Excel columns

For Google Calendar import from Excel by CSV, put the headers in row 1, spelled exactly as shown below and in English. Subject and Start Date are required. The other columns are optional, so you can leave out a column you do not need. Put one event on each following row and remove blank rows below the last event before saving.

SubjectStart DateStart TimeEnd DateEnd TimeAll Day EventDescriptionLocationPrivate
Planning meeting11/10/20269:00 AM11/10/202610:00 AMFalseReview scheduleRoom ATrue
Office closed11/26/202611/26/2026TrueHolidayFalse

The first row describes a timed meeting from 9:00 AM to 10:00 AM on November 10. The second describes an all-day event, with the time cells empty and True in All Day Event. Use True in Private when you want to mark an event private. Check the imported events in your account before relying on the results.

Write CSV dates as MM/DD/YYYY and times with AM or PM. An event that finishes after midnight needs the next day in End Date; an end before its start is rejected. Text containing commas can stay in its spreadsheet cell: the spreadsheet app puts quotes around it when saving the CSV.

If your source is already in Google Sheets, our spreadsheet import guide shows formulas for turning date-time cells into the separate date and time columns. That guide also explains how to make one row per occurrence when you need several one-time events instead of a repeat rule.

Path A: save a CSV from Excel

This route suits a finished list that you want to import once. Prepare the worksheet with the Calendar CSV headers, check the rows and save it using the UTF-8 option. Keep the workbook too, so you have the source if you need to correct the list.

  1. In Excel, open the worksheet containing the event rows. Check the required headers, dates, times and the final event row.
  2. Choose File → Save As and select CSV UTF-8 (Comma delimited). Check the saved file and its contents in your account before proceeding.
  3. On a computer, open Google Calendar. Create an empty test calendar using the plus sign next to Other calendars and Create new calendar.
  4. Open the gear icon, then Settings → Import & export. Choose Select file from your computer and select the CSV.
  5. Choose the empty test calendar and click Import. Check several events for the correct day, time, all-day setting and details.

If the test is wrong, delete the test calendar in its settings, correct the source and save a new CSV. Create another empty test calendar for the next attempt. When the test is right, import the same file into your intended calendar and delete the test calendar. Choose the destination carefully: deleting a calendar removes all the events in it, so use this cleanup approach only for the disposable test calendar.

A CSV carries no time zone. Check that the calendar’s time zone under Settings → General is the one your times are written in. For example, a row saying 9:00 AM needs the intended calendar setting to be meaningful. Verify an actual imported event rather than assuming the time is correct from the spreadsheet alone.

Path B: import the workbook into Google Sheets

Use this path if you want to work with the Excel schedule in Google Sheets. Upload the workbook to Drive and use File → Import in Sheets, or drag it into Sheets. Check the imported tab, its headers and its dates before deciding how to send the events.

For a CSV import, select the tab prepared with the English Calendar headers. Choose File → Download → Comma-separated values (.csv). Only the tab you are looking at is saved. Google Sheets downloads are UTF-8, which helps preserve accents and symbols in the exported text. Then follow the test and import steps above in Google Calendar.

If your imported workbook has several tabs, check that you are viewing the event tab before downloading. A tab containing reference data or an older schedule will produce the wrong file. Also check that there are no extra formula rows below the last event: those rows can turn into blank events or errors during import.

For CalendarRows, stay in the Google Sheet instead of downloading a CSV. You can map the sheet’s columns to the add-on’s fields, so the CSV header names are not the only way to organize that sheet. Title and Start date are required by CalendarRows. Check the proposed mapping, the spreadsheet’s time zone and a preview before sending.

For example, a workbook may have a column called Meeting and another called Date. In a CSV prepared for Calendar, use the required Subject and Start Date headers. In CalendarRows, check that the columns are mapped to Title and Start date. The goal in each path is the same: make sure the event name and date reach the intended fields.

Know the limits of CSV import

A Calendar CSV import is a one-time copy. After import, the workbook and the calendar events are separate. Editing an Excel cell does not change the event, and importing a corrected file does not match the new row to the earlier event. It adds another event instead. Plan corrections before repeating an import.

The CSV file must be 1 MB or smaller. Long descriptions can make a file large, so check its size before importing. If it is too big, split the event rows into separate tabs, include the header row on each, and download each tab as its own CSV. Import them one at a time, keeping track of which files have already been added.

CSV import has no columns for guests, colours or repeat rules. You can put each occurrence on its own row, but the imported events are separate one-time events, not a linked repeating series. If a whole series needs to move later, changing one row in the original file will not update the other events.

There is no undo for the import as a unit. The empty test calendar gives you a practical way to discard a bad test without finding each event individually. Once you import into a calendar that also contains other events, do not delete that calendar merely to remove the imported rows. Decide how to correct those events in your account.

Finally, remove blank rows below the last event, including rows that contain formulas but appear empty. Check for exact English headers in the first row. A file with a different header or an extra blank row above it may not import as intended. A test with a few representative events can reveal a formatting problem before you import the full list.

Choose CSV, Apps Script or CalendarRows

Choose CSV for a one-time list when you do not need guests, repeat rules or later updates from the spreadsheet. It is free and does not require the add-on. A test calendar and a careful final import matter more than maintaining an event ID because the file is intended as a single copy.

Consider CalendarRows when the Google Sheet will remain your working schedule, you need to map guests, or you want to preview and send changed rows. It keeps an event ID and status with each row. Repeat is a Pro feature. CalendarRows is not needed just to make a one-time CSV import, and its documented workflow does not describe edits made directly in Calendar syncing back into an existing sheet row.

These linked methods apply to events they create and identify. A previous CSV import does not itself give your source rows the CalendarRows IDs needed to update those events. If you already imported events, CalendarRows can import events from a calendar into a new tab with their IDs. Review that workflow in the documentation before deciding how to maintain them.

Send and update rows with CalendarRows

First import the Excel workbook into Google Sheets and check the schedule. Install CalendarRows, then open Extensions → CalendarRows → Open CalendarRows. On To Calendar, choose the sheet, header row and destination calendar. The calendar picker lists calendars where you can edit events.

  1. Check the suggested column mappings. Title and Start date are required; map other fields such as End time, Location, Description or Guests if you need them.
  2. Check the spreadsheet’s time zone under File → Settings. CalendarRows uses that time zone for the dates and times it sends.
  3. Choose all rows or selected rows and click Preview. Review the create, update, delete and unchanged counts and any problems. Preview does not change the calendar.
  4. Click Send to Calendar. Check the progress card, row statuses and a few events in Calendar.

On the first run, CalendarRows adds CalendarRows event ID and CalendarRows status columns. Keep both columns and their notes with the corresponding rows. When a meeting changes, edit its row, select the same calendar, preview and send again. Once the link and fingerprint are established, only changed rows are sent.

For guests, map a column containing email addresses separated by commas, semicolons or spaces. CalendarRows accepts up to 50 per event. It ignores text that is not an email address and notes it in the status. CalendarRows adds guests without sending invitation emails, so arrange any needed notice separately. See the guest guide for the workflow.

For repeating events, Pro can map a Repeat column with values such as weekly or weekly x 10. On Free, rows with a Repeat value show an error and are not sent. Check the rule and preview before sending; the recurring events guide covers the available formats.

If you send the same rows to a different calendar, CalendarRows creates new events there and the row IDs point to those new events. The original events stay in the first calendar. Select the original calendar when your purpose is to update the existing events, and check Preview if it shows creates where you expected updates.

Understand plans and resuming

CalendarRows Free allows 50 calendar changes per day. Each event create, update or delete counts as one change. Unchanged rows, previews and imports do not use changes. The allowance resets at 00:00 UTC. For example, creating 30 events and later updating five of them uses 35 changes if all 35 operations succeed.

Pro costs $9 per month or $59 per year, with tax included. It allows 2,000 calendar changes per day, subject to fair use, and includes Repeat. Free can import up to 100 events from Calendar into a new tab; Pro can import up to 5,000. See pricing for the plan details.

You can pause a run. If the daily allowance runs out, CalendarRows does as many rows as it can, saves its place and pauses. Click Resume after the reset. If Google Calendar asks it to slow down, it pauses with a message; click Resume a minute later. The progress is kept if you close the sidebar.

Read row statuses before retrying. ERROR includes a reason to fix. PENDING means an ID was reserved but the run stopped before the event was confirmed. Send again to finish that row; CalendarRows will not make a duplicate for that pending row. For linked updates and their checks, see our update guide.

Common problems

Calendar will not accept the workbook. Check whether you selected an .xlsx file. Calendar needs the CSV for this import path. Save as CSV UTF-8 in Excel, or download a CSV from the relevant Google Sheets tab, then select that file in Import & export.

Accents or symbols look wrong. The file may not be UTF-8. Save again with Excel’s CSV UTF-8 (Comma delimited) option, or download the tab from Google Sheets. Test the corrected file in an empty calendar. Check the saved text and a few imported events before using the final destination.

Events appear twice after a correction. Re-importing a CSV adds events instead of updating the prior import. Check the calendar before clicking Import again. For a bad test, delete the disposable test calendar and try a corrected file in another empty one. For an ongoing schedule, consider a linked sheet method before creating the events.

An event ends before it starts. Check both dates as well as the times. A shift beginning at 10:00 PM and ending at 2:00 AM the next day needs that next day in End Date. Correct the row and test the CSV again. Also check for invalid dates and missing subjects if only part of a file imports.

The file is too big. Calendar accepts a file of 1 MB or smaller. Split the rows into separate tabs, retain the header row on each tab and download separate CSV files. Keep a record of each successful import so a retry does not add the same events twice.

No events or the wrong events appear. Check the English headers and their spelling in row 1, remove blank rows below the last event and confirm that you downloaded the intended tab. Check the destination calendar and its time zone. If the file uses semicolons instead of commas, download a comma-separated CSV from Google Sheets or check the file in a text editor.

CalendarRows reports an error or an unexpected create. Read the status and correct its stated problem, such as an unreadable date. For an expected update, check the selected calendar and keep the event ID and notes with the row. Preview again before sending. If a time is wrong, check the spreadsheet’s time zone and the mapped date and time cells.

Frequently asked questions

Can I import an Excel workbook directly into Google Calendar?

No. Google Calendar cannot read an .xlsx workbook directly. Save the relevant sheet as CSV UTF-8 in Excel, or import the workbook into Google Sheets and download a CSV. You can then import the CSV into Google Calendar on a computer.

Is there a Google Calendar Excel template I can use?

You can build a simple template with one event per row and the English headers Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location and Private. Only Subject and Start Date are required. Save the finished sheet as CSV UTF-8 before importing it.

How do I update events after importing an Excel CSV?

Changing the workbook does not update imported events, and importing the corrected CSV again creates duplicates. You can edit the events in Calendar, or use a sheet-based method that saves event IDs for later updates. CalendarRows and the basic Apps Script in our create-events guide can keep rows linked to events they create.

Can I add guests or recurring events through a CSV?

No. Calendar CSV import has no guest column or repeat rule. CalendarRows can map a Guests column, and its Pro plan supports a Repeat column. CalendarRows adds guests without sending invitation emails, so arrange any needed notice separately.

Why are accents wrong after importing my Excel file?

The file may not have been saved as UTF-8. In Excel, choose CSV UTF-8 (Comma delimited) when saving, then test the corrected file in an empty calendar. A CSV downloaded from Google Sheets is already UTF-8.

What is the maximum CSV file size for Google Calendar?

Google Calendar accepts CSV files of 1 MB or smaller. If your file is larger, split the event rows across separate tabs, download each tab as its own CSV and import the files one at a time. Check each file and destination before importing.

Is CalendarRows free for an ongoing Excel schedule?

CalendarRows works on a Google Sheet, so first import the workbook into Google Sheets. Its Free plan allows 50 calendar changes per day. Pro costs $9 per month or $59 per year, tax included, and allows 2,000 changes per day subject to fair use. Repeating events require Pro.

Disclosure: we make CalendarRows, the Google Sheets add-on mentioned in this guide. A CSV import works without the add-on for a one-time list, and the basic Apps Script in our create-events guide can update basic event details without it.

Google Sheets, Google Calendar and Google Workspace are trademarks of Google LLC. Microsoft and Excel are trademarks of the Microsoft group of companies. CalendarRows and Cellbrook are not affiliated with or endorsed by Google.