G Suite Group Calendar Automation

Productivity tools

Ferris Argyle
2 min readAug 25, 2019

As you may know, G Suite provides the ability to create shared group calendars, which are great for 1:many sharing.

Many teams would like to have visibility not only into a shared administrative calendar, but also their team-mates’ calendars; while you can do this by adding your team members in your calendar left-nav, it’s a chunk of manual clicking every time, particularly if you have a large team.

A shared team calendar would seem to be the trick; however, many users (me included) don’t want to copy their appointments from their main calendar to a shared calendar; it’s just too much overhead.

Fortunately, this can be automated with Apps Script:

  • Google Groups provides a simple way to manage and access your team list; note that to be able to access it programmatically, this must be a domain-managed group.
  • The Calendar API provides the ability to copy appointments between calendars (with a bit of work: there isn’t a native copy function), and to invite group calendars to a user’s calendar.

Shared calendar approaches

There are two fundamental approaches here, each with their pros and cons.

Copy each users events to the shared calendar:

  • This only requires view permissions on the user’s calendar
  • Changes to the user’s calendar are only reflected on the shared calendar when the next refresh is run.
  • The script needs to add meta-data to the calendar event to update/remove events on refresh since the event ids in the shared calendar are different than the event ids in the user’s calendar.
  • It’s a chunk of code to get and set all the event attributes since there isn’t a copy method.

Invite the shared calendar to the user’s calendar

  • This requires elevated, ie. edit, privileges on the user’s calendar
  • Changes to the user’s calendar are reflected immediately in the shared calendar.
  • The user’s events will have an additional group calendar invitee, which can look a little obscure.

Automation Script

The following script takes the second approach; it only includes events to which a particular domain have been invited, so you can have separate shared calendars for different clients with whom you work, for instance.

--

--

Ferris Argyle

These are my personal writings; the views expressed in these pages are mine alone and not those of my employer, Google.