GCalendar Sync

A Google Sheets add-on for synchronizing events with a Google Calendar.

Want to easily add a large number of events to a Google Calendar? With this add-on you can enter them into a spreadsheet and copy them to the calendar with a click. Have lots of events in a calendar, but need to modify them? This add-on will make that easy as well. Sync from calendar to spreadsheet, make your changes, and then sync back to the calendar.


Sep 7, 2020 - Fixed time zone issues for all day events. Google seems to always run the add-on in the US/Pacific time zone causing issues with all day events when not using that time zone. All day events should now be handled correctly when syncing to and from the calendar.

Aug 14, 2020 - Sorry to anybody that encountered errors. Somehow an old version of the add-on was published without me doing anything. It should now be working again.

Jul 1, 2020 - Multiple calendars now supported! Each sheet can sync with a separate calendar to keep all of your events together.



Using the add-on requires 3 easy steps described below:


  1. WARNING: Events may be removed! If you're copying to a calendar with existing events, those events will be deleted unless they are in the spreadsheet. Likewise copying to the spreadsheet will delete spreadsheet rows not found in the calendar. It's a good idea to try syncing with a fresh spreadsheet as an experiment the first time you run it. Or work with a copy of your spreadsheet (File, Make a copy). "Undo" may save you, but it may not. Be careful!
  2. Recurring events are not currenty supported. File an issue if you'd like to see this supported.

Install the add-on

The add-on is available in the G Suite Marketplace. Click the "Install" button and accept the permissions.

Create (or set up) a Google Calendar

Copy the example Sheet

The easiest option is to copy an example sheet and modify it. If you want to use your own sheet scroll down to "Use an existing sheet" below.

That's it! You can skip down to "How to Sync" below for usage tips.

Use an existing sheet

If you'd rather use an existing Sheet, follow these steps (optionally use the example sheet above as a guide):

How to Sync

Under the "Add-ons" menu, a "GCalendar Sync" menu will be added with three commands. "Update from Calendar" and "Update to Calendar" sync events between the current Google Sheet and the Google Calendar. "Settings" displays some optional settings for the sync. The first time you sync, an "Authorization Required" dialog will pop up. Click "Continue" and then you may also need to select your account in the next dialog. Depending on the number of changes, the script runs in a few seconds to a few minutes.



The following settings can be accessed from the GCalendar Sync menu, Settings entry. They affect how events are synchronized:


When an error occurs, the sync can generally be tried again without any bad side effects.

There are some data checks in the script for correctly formatted dates and times. If you see a pop-up dialog, it will tell you which event has the error. Fix the error and run it again.

If the script runs more than several minutes, it will run out of time and be stopped. You should be able to run it again and it will do the next batch of changes. About 900 calendar operations can be done in one run, where an operation is updating one event field, adding an event, or removing an event.

If you get an error about too many Calendar events being added or removed in a short amount of time, try setting start/end date in settings to reduce the amount of events being synced. Or file an issue.


The project started as a simple script to publish swim team practice times on a Google Calendar and has evolved from there. Fixes and improvements are done by volunteers, so please be patient.

You're also welcome to dive into the code and send suggested changes and fixes via Github.

Privacy Policy

We do not collect, store, or process your personal information on our servers. The add-on will read your sheet data and transmit it to your calendar, but that data is not sent to our servers. It will also read your calendar events and write them to your spreadsheet, again not sending anything to our servers. The add-on settings (start date, end date, etc.) are stored in the Google Apps Script Properties Service, which is data owned by you and associated with the sheet where the add-on is used.

Report a problem

Find a problem with the add-on? Please create a new "issue" on GitHub. Or send me an email at the address below. Note that this is a volunteer project, so it may take a while to get a fix.

Or if you want to try fixing the problem yourself, the source code is on Github. Feel free to send me a pull request.


Let me know how you're using the add-on: Dave.

Terms of Service