Syncing Your Personal & Work Calendars

We talk a lot about work-life balance, collectively as an industry as well as at Chromatic. This domain is something we all wrestle with. I remember a talk years ago by Nancy Lyons of Clockwork, where she said, “there is no such thing as work-life balance, it is all life.” That stuck with me over the years and is a sentiment that I agree with; perhaps because I’m an owner, or perhaps because in some ways it’s true for all of us.

I have numerous email accounts and calendars. For the most part, I have two, my Chromatic email and calendar, and my personal email and calendar (both Google accounts).

Over the last year, I’ve worked hard to keep work events on the work calendar and personal events on the personal calendar. In practice, this isn’t always the case because I can’t control the email address that someone adds to an invite. To combat that, I had created an additional calendar on my Chromatic Google calendar call “Dave - Personal” where I could move events or block time for personal meetings, dinners, etc. However, I still had this completely separate Google calendar associated with my personal email account. There were occasions where I would double book my time or forget about a meeting because I wasn’t seeing all of these events in the same place.

Fortunately, there are numerous solutions to see all of your calendars and events in the same place, from simply using a calendar app like Calendar or Fantastical to consolidate everything, to sharing your calendars with yourself. I opted for the latter because I wanted to be able to see all of my events in the Google Calendar UI. You can find more information on calendar sharing here.

I could now see all of my calendars in the same place, however, I still ran into one additional issue. Someone scheduling a meeting with me, specifically a work meeting, couldn’t see that there was something already on my schedule. I began to manually duplicate the meeting onto my work calendar to block that time, but would still miss things from time to time.

This was frustrating so I began to search for solutions. I came across this article on Medium that outlines a similar issue and a solution using a Google Script to sync calendars. I stole this, like an artist, and modified it to work for me. The instructions shared within that article work well, along with the linked Gist for the Google script.

I made a few tweaks to the implementation to keep my personal sanity and to easily remove items if I needed to.

  • First I am syncing way into the future, 30 days didn’t seem like enough to me.
  • Secondly, I created a specific calendar on my Chromatic account to sync events to, this way I can hide it if need, easily delete it or all the events if a better solutions presents itself, and specify permissions for these events separately.
  • Lastly, I chose to sync nightly. I receive an error for creating too many events every couple of days, I am still looking into a resolution to this.

If you want to follow my approach to having a separate Calendar on your Google account to sync to, you’ll need to create the new calendar, tracked down its unique ID, and modify the script linked above, at line 12:

  // var primaryCal=CalendarApp.getDefaultCalendar();
var nameYourSecondCalendarVar="replaceWithCalendarId";
var primaryCal=CalendarApp.getCalendarById(nameYourSecondCalendarVar);
var primaryEvents=primaryCal.getEvents(today,enddate); // all primary calendar events

To find your calendar ID, navigate to your Google calendar settings and you will find the ID available under “Integrate Calendar.” Copy that into replaceWithCalendarId and feel free to rename that variable on line 13 and 14 to suit your needs.


There are a few limitations as pointed out on the Medium article and that I’ve experienced. Currently, the script doesn’t have the logic to remove an event if it is removed my personal calendar. I don’t find this to be as much of an issue because I can visually see that the event isn’t on both calendars and simply remove it from the work calendar. Additionally, I’d rather show the time as blocked and have it free, than the other way around. Beyond that, I’m thrilled with how this is working.

Permissions and allowing others to view

Every organization and person may feel differently on this topic, but my opinion is that my team should be able to see my work calendar, including the event details. With that in mind, anyone on the Chromatic team can see my calendar. However, the events syncing from my personal calendar will only show blocked time. This is another benefit of syncing to a specified calendar within my Chromatic account, that calendar can have different permissions.

I’m sure there are many ways to handle this, I hope you find this approach helpful. Cheers!