Categories
Automation IT

How to sync your Office 365 (work) calendar with Google Nest

Recently I thought it would be really helpful to be able to ask my Google Nest/Assistant what my meetings are tomorrow before I go to bed, or otherwise what my next meeting is during the day. I couldn’t find any solutions to this beyond enabling public and free access to my work calendar via the Internet, or otherwise to manually export and import calendar items on a regular basis.

Recently I thought it would be really helpful to be able to ask my Google Nest/Assistant what my meetings are tomorrow before I go to bed, or otherwise what my next meeting is during the day. I couldn’t find any solutions to this beyond enabling public and free access to my work calendar via the Internet, or otherwise to manually export and import calendar items on a regular basis.

The obvious issues here are:

  1. Security
  2. Lots of manual work
  3. Periods with out of sync calendars

I decided that there had to be some other way, maybe through Microsoft Power Automate – doing some googling didn’t find a lot in the way but I was able to find some templates that would pull data into Google Calendar so I figured that I could use this to bring the calendar data in to a work Google Calendar account and then share this with my personal Google Account. I then learnt that once I have done this I can expose this to Google Assistant and through this on my Google Nest devices.

To setup integration between your Office 365 (work) calendar and Google Assistant/Nest, follow these steps:

  1. Export existing calendar entries
    1. Open Outlook
    2. Select File -> Open & Export
    3. Select Import/Export
    4. Select Export to a file
    5. Export in your favour format
  2. Create a Google Account for free
    1. Navigate to https://accounts.google.com/signup
    2. Follow the instructions to create a work account with your work E-mail address
    3. If you do not have a personal account you will need to create this also
  3. Import calendar
    1. Go to work Google Calendar (https://calendar.google.com/)
    2. Go to Settings -> Import & export -> Import
    3. Select file from your computer
    4. Select earlier export and import
  4. Share calendar
    1. Select the main calendar
    2. Go to Share with specific people
    3. Select Add people
    4. Enter the E-mail address of your personal Google Account
  5. Expose Calendar to Google Home
    1. Go Google Home
    2. Go to Assistant Settings
    3. Go to Calendar
    4. Expand your account
    5. Select your work calendar
  6. Create the create and update flows
    1. Go to Microsoft Power Automate (https://flow.microsoft.com/)
    2. Create Power Automate Flows using below templates:
      1. Create Events Template: https://unitedkingdom.flow.microsoft.com/en-us/galleries/public/templates/10c5a140c24811e6b5549975d228694f/create-new-events-on-google-calendar-from-office-365/
      2. Updated Events: https://unitedkingdom.flow.microsoft.com/en-us/galleries/public/templates/0e21ee50b17a11e68af78d1a54677f1f/update-google-calendar-events-previously-created-from-office-365/
    3. Edit both flows and set the following:
      1. Start time: convertToUtc(triggerOutputs()?[‘body/start’], ‘GMT Standard Time’)
      2. End time: convertToUtc(triggerOutputs()?[‘body/end’], ‘GMT Standard Time’)
    4. Complete the options with the asterisk and save the new flows
  7. Create a delete flow
    1. Copy the Updated Events flow
    2. Delete the first trigger
    3. Replace it with “When an event is added, updated or delete”
    4. Add a Condition below the trigger
    5. Set a value of “Action Type” is equal to “deleted” (without quotes)
    6. Move the Calendar list and Apply to each actions into Yes
    7. Remove Html to text and the Update event actions
    8. Add a new action “Delete an event”
    9. Select your work Google Calendar
    10. Add “Event List Event ID” as the event ID
  8. Test all flows by creating, editing and deleting events from your Outlook calendar
    1. Create an event in Office 365
    2. Check that it has been created in Google Calendar (give it some time to process, this can take a few or even 10’s of minutes)
    3. Edit the name and time of the event in Office 365
    4. Check that it has been updated in Google Calendar
    5. Delete the event in Office 365
    6. Check that it has been removed from Google Calendar

You should now be all setup and can ask your Google Nest device or Google Assistant what time is your next meeting and what meetings you have tomorrow!

About Stephen Pickett


Stephen Pickett is a programmer, IT strategist and architect, project manager and business analyst, Oracle Service Cloud and telephony expert, information security specialist, all-round geek. He is currently Technical Director at Connect Assist, a social business that helps charities and public services improve quality, efficiency and customer engagement through the provision of helpline services and CRM systems.

Stephen is based in south Wales and attended Cardiff University to study Computer Science, in which he achieved a 2:1 grading. He has previously worked for Think Consulting Solutions, a leading voice on not-for-profit fundraising, Fujitsu Services and Sony Manufacturing UK as a software developer.

Stephen is the developer of ThinkTwit, a WordPress plugin that allows you to display multiple Twitter feeds within a blog.

By Stephen Pickett

Stephen Pickett is a programmer, IT strategist and architect, project manager and business analyst, Oracle Service Cloud and telephony expert, information security specialist, all-round geek. He is currently Technical Director at Connect Assist, a social business that helps charities and public services improve quality, efficiency and customer engagement through the provision of helpline services and CRM systems.

Stephen is based in south Wales and attended Cardiff University to study Computer Science, in which he achieved a 2:1 grading. He has previously worked for Think Consulting Solutions, a leading voice on not-for-profit fundraising, Fujitsu Services and Sony Manufacturing UK as a software developer.

Stephen is the developer of ThinkTwit, a Wordpress plugin that allows you to display multiple Twitter feeds within a blog.

10 replies on “How to sync your Office 365 (work) calendar with Google Nest”

Hi Stephen, thanks for this. Looks promissing.
But I have just 1 small question: if you say: “Follow the instructions to create a work account with your work E-mail address” :
you mean just create a new google calendar (that actially has no link with the Office 365 account)?
Or am I mistaking

Hi Ruben,

Yes that’s correct. So in my implementation of this I have an Office 365 address e.g. [email protected], and then I created a Google account with the same E-mail address i.e. [email protected]. These are two separate accounts, of course, using the same E-mail address – you don’t necessarily have to do it this way, it just felt cleaner when I did it.

If you have any issues with implementing this please let me know and I’ll try to assist further. I have learnt a bit more since writing this article, especially I had an issue with calendar times being out of sync. I had also published my patterns but may need to update them.

Kind Regards,

Steve

does this work backwards? i.e. if you tell google assistant to delete an entry, will it remove it from outlook?

Hi JL,

It should work via the Updated Event but I’m having issues with this not working properly and I’ve not had a chance to investigate yet. I will update this once I’ve managed to resolve it.

Kind Regards,

Steve

UNLESS you want Google Nest (or Google Assistant anywhere) to create or edit events in Microsoft 365:
You can just add Microsoft 365 calendar to your Google account by pasting a shareable URL. Then, in the Assistant Settings, select all the calendars including the one added by URL. Once you do this, Google Assistant will tell you about events in all the calendars including the Microsoft 365 one. This is a simple, straightforward process if you just want to ask Nest devices about upcoming events or agenda.

Hi Shri,

Thanks for your suggestion. I had actually considered this but found that it would make your calendar visible to everyone but since I was doing this on a work calendar this wasn’t an option; I needed to share it privately only.

Kind Regards,

Steve

Hi Stephen, no, the URL sharing with Google account does not make the calendar publicly viewable. I have tried and tested this function. You may share Microsoft 365 Calendar using a link or by email to Google account. The calendar is then visible to only those people who have direct access to the link (which is, just you!).
The limitation of this method is not the loss of privacy (which is null), but the delay in updates. Sometimes, the time lag between editing a calendar event in M365 and viewing it on the URL (i.e. on Google account) can be as long as 24 to 48 hours. It does not bother me much though. If I have created or edited an event within the last 24 hours, it is pretty much fresh in my memory and I do not need Google Assistant to remind me of this event.

I agree that your solution overcomes this problem, and there is no delay in syncing if the flows work alright. However, there is still a major problem – lack of two-way sync. If you hear about an event from your Google Assistant and you wish to quickly postpone it or cancel it, you cannot give this instruction to your Google Assistant. You must go to M365 for making any changes.

The only perfect solution to sync Google and Outlook calendars both ways is to use onecal.io service. I find it a bit annoying that we have to pay for this basic feature due to the disagreements between Microsoft and Google over URL sharing/updates. Anyways, onecal.io offers a clearly tested solution and their plans start at $4 per month. There are a few rivals in the market, but OneCal is cheapest and easiest IMHO.

“Anyone with the link” means super simple bots can find those links within seconds of trying. It’s not private at all. This is the type of stuff Defender for Cloud apps would flag immediately too. Just seconding the author’s statement about this part of it.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.