Do you have a personal calendar with stuff going on (i.e., have a life outside of work)? This script is for you. Google Calendar Sync is a Google Apps Script designed to synchronize events from your personal calendar to your work calendar, marking them as private in your work calendar. This ensures your availability accurately reflects across both calendars without oversharing personal details. It is ideal for anyone looking to manage their work and personal life balance more effectively.
While services like Recaim.ai do a fantastic job of syncing your personal and work calendar, your corporate restrictions might prevent you from sharing work calendar event details with third-party services (for a good reason).
This app script is installed on your work account, Google App Engine, so it is probably in line with your workspace requirements.
Before you start, ensure the following:
- Your workspace uses Google Calendar service.
- Your Google work account has permission to run Google Apps Scripts.
- You have access to both your personal and work Google Calendars.
- Calendar Access:
- Give your work calendar access to your personal calendar as described here.
- Check that you see your personal calendar events in your work calendar, including event details.
- Script creation:
- When logged in to your Google work account, go to https://script.google.com/home and create a new project. Google will comfortably land you right into the code editor in the
myFuction
function body. - Replace the
myFunction
function with the script formCalendarSync.gc
file.
- When logged in to your Google work account, go to https://script.google.com/home and create a new project. Google will comfortably land you right into the code editor in the
- Configuration:
- Assign your personal calendar's email to the personalCalendarId constant within the script.
- Adjust settings like the block event's name (it's private, so don't sweat on it too much) and how far in the future events should be blocked according to your preferences.
- Review line 38 to decide on including all-day events, lengthy events (probably out-of-office events and such), and weekends.
- Don't forget to click save (the "save" icon, kids, is a floppy disk; google it or ask ChatGPT).
- Naming:
- Rename the project from "Untitled Project" to something useful, like "Calendar Sync".
- While on it, rename the script file from
Code.gs
toCalendarSync.gs
for good measure.
- Google Calendar Advanced API access:
- Click on the
+
by Services menu item. - Select Google Calendar API, and leave the name
Calendar
as it is referred to in the code.
- Click on the
- Testing:
- Test the script by Clicking Run (make sure
syncCalendars
is selected as the function to run). - Check your work calendar. You should see the blocking events for personal events marked as
Busy
. - Rerun the script and check that the blocking events weren't duplicated or deleted.
- Test the script by Clicking Run (make sure
- Automate syncing:
- Once verified that the script runs correctly, click the Stopwatch icon (Triggers) in the left side menu and then on the "Add trigger +" in the bottom right corner.
- Make sure the trigger settings are as follows:
- Function to run:
syncCalendars
- Deployment to run:
Head
- Event Source:
From calendar
- Calendar details:
Calendar updated
, your personal calendar email. - Failure notification settings:
Notify me immediately
(or not, your choice). - After clicking "Save", give access to your work Google calendar.
- Function to run:
You're all set. Enjoy one less headache in your life.
If events aren't syncing as expected, check:
- Calendar sharing permissions.
- That the Google Calendar API is enabled and correctly configured.
- Your script's logs for any errors.
Contributions are welcome! If you'd like to improve Google Calendar Sync, please:
- Fork the repository.
- Make your changes and test them.
- Submit a pull request with a clear explanation of your changes.
This project is open-sourced under the Apache 2 License. See the License tab for more details.
Please open an issue on the GitHub repository's issues page for support or queries.