- Home
- Guides
- Calendar & Scheduling
- How to sync Google Calendar events to Outlook calendar with Power Automate (create, update and delete)
How to sync Google Calendar events to Outlook calendar with Power Automate (create, update and delete)
Build a one-way Power Automate flow that copies every new, changed or deleted Google Calendar event to your Outlook Calendar, including the Google Meet link. An Excel table in OneDrive keeps track of which Google event matches which Outlook event.
Jump to a step (14)
If you book meetings in Google Calendar but your team lives in Outlook, you end up re-typing events, then forgetting to move them when times change. Deleted events stay behind in Outlook and cause double bookings.
This flow watches one Google Calendar. When an event is added, updated or deleted, it converts the start and end times, then runs one of three branches: create the event in Outlook, update it, or delete it.
To update or delete the right event, the flow needs to know which Outlook event belongs to which Google event. It stores both event IDs side by side in an Excel table in OneDrive. Every connector used here (Google Calendar, Office 365 Outlook and Excel Online (Business)) is a standard connector, so there is no SharePoint and no premium licence involved. This is a one-way sync from Google to Outlook.
What you need
- Microsoft 365 Business Basic or Standard (Outlook and Power Automate)
- A Google account with the Google Calendar you want to copy
- An Excel workbook in OneDrive for Business with a table that has
Google event IDandOutlook event IDcolumns
Step by step
0 of 14 done-
01
Create an automated cloud flow
Open Power Automate at make.powerautomate.com (or from the app launcher in Outlook). Go to Create and select Automated cloud flow. Name it something like
Sync Google Calendar events to Outlook calendar. -
02
Add the Google Calendar trigger
Search for Google and pick the Google Calendar trigger
When an event is added, updated or deleted from a calendar, then click Create. Connect your Google account the first time you use it, and choose your calendar inCalendar id.Under
How often do you want to check for items?set the frequency and interval. In the video I use a short interval in seconds so the demo runs quickly. For everyday use, an interval such as 1 hour is fine.This one trigger fires for all three kinds of change, and it returns the event title, description, start and end time, location and the action type.
-
03
Convert the start and end times
Add the
Convert time zoneaction from the Date Time group. Google Calendar and Outlook use different date formats, so this step puts the time in a format Outlook understands.Base time: theStart date timefrom the triggerSource time zoneandDestination time zone: your local time zone (the video uses Chennai, Kolkata, Mumbai, New Delhi)Time unit:Sortable date/time pattern
Rename the action
Start time. Add a secondConvert time zoneaction with the same settings forEnd date timeand rename itEnd time. -
04
Check whether the event was added
Add a
Conditionfrom the Control group. On the left pickAction typefrom the trigger, chooseis equal to, and typeaddedon the right. When a new event is created in Google, the flow goes into the True branch. -
05
Create the event in Outlook
In the True branch, add
Create event (V4)from Office 365 Outlook.Calendar id:Calendar(your main Outlook calendar)Subject:Titlefrom the triggerStart time: the output of theStart timeconvert actionEnd time: the output of theEnd timeconvert actionTime zone: your local time zone
Open Advanced parameters and add
BodyandLocation. SetBodyto the trigger'sDescriptionandLocationto the trigger'sLocation. If a field is missing from the dynamic content list, click See more. -
06
Create the Excel table for event IDs
In OneDrive, create a new Excel workbook online so the cloud flow can reach it. The video names it
TG Sync Google Calendar events to Outlook. Type two headers:Google event IDandOutlook event ID. Select them, choose Format as Table, tick My table has headers and click OK. You can keep the default table nameTable1.This table is what makes updates and deletes possible later. It is the only place the flow can look up which Outlook event matches a Google event.
-
07
Save both IDs with Add a row into a table
Still in the True branch, add
Add a row into a tablefrom Excel Online (Business). SetLocationtoOneDrive for Business,Document LibrarytoOneDrive, pick the file andTable1.Open Advanced parameters to show the columns:
Google event ID:Event IDfrom the triggerOutlook event ID:IdfromCreate event (V4)
Save the flow. If Power Automate says the interval value is not valid, raise the trigger interval (the video changes it from 10 to 20 seconds) and save again.
-
08
Test a new event
Click Test, choose Manually, then create an event in Google Calendar with a location, a description and a Google Meet link. After the next check, the event appears in Outlook and a new row with both IDs appears in the Excel table.
You will notice the Google Meet link is missing from the Outlook event. The next step fixes that.
-
09
Add the Google Meet link with an expression
The trigger's raw output contains the meeting link as
hangoutLinkin the body, but it does not show up in the dynamic content list. EditCreate event (V4), put your cursor at the start ofBody, press Enter to make room, and use Insert expression to add:triggerOutputs()?['body/hangoutLink']The expression reads the trigger output and pulls the Meet link from the body. Check the property name against your own trigger's raw outputs. Save and create another test event with a Meet link. The link now appears in the Outlook event body.
-
10
Handle updated events
In the False branch of the first condition, add a second
Condition:Action typeis equal toupdated.In its True branch, add
Get a rowfrom Excel Online (Business). Point it to the same file andTable1, setKey ColumntoGoogle event IDandKey Valueto the trigger'sEvent ID. The flow now finds the row and reads the matchingOutlook event ID. -
11
Update the Outlook event
Add
Update event (V4)from Office 365 Outlook.Calendar id:CalendarId:Outlook event IDfromGet a rowSubject:Titlefrom the triggerStart timeandEnd time: the converted timesTime zone: your local time zone
In Advanced parameters add
BodyandLocation. InBody, insert the sametriggerOutputs()?['body/hangoutLink']expression, press Enter, then addDescription. SetLocationto the trigger'sLocation. -
12
Handle deleted events
In the False branch of the second condition, add a third
Condition:Action typeis equal todeleted. In its True branch, add anotherGet a rowwith the same file,Table1,Key ColumnGoogle event IDandKey Valueset to the trigger'sEvent ID. The trigger only gives you the Google ID, which is why you search on that column. -
13
Delete the Outlook event and the Excel row
Add
Delete event (V2)from Office 365 Outlook. SetCalendar idtoCalendarandIdtoOutlook event IDfrom the lastGet a row.Then add
Delete a rowfrom Excel Online (Business), pointing to the same file andTable1. SetKey ColumntoGoogle event IDandKey ValuetoGoogle event IDfromGet a row. This keeps the table clean. Save the flow. -
14
Test creates, updates and deletes together
Put Google Calendar and Outlook side by side. Change the time and description of an event, add a new one, rename another and delete one. After the next check, Outlook shows the same events, times and names, and the deleted event is gone. Open the flow's run history to confirm each run succeeded.
This is an automated flow, so it keeps running. Use Turn off on the flow page when you do not need the sync.
Tips and common problems
- Power Automate may reject a very short trigger interval with an 'interval value is not valid' message. The video uses 20 seconds for the demo only. Use a longer interval, such as 1 hour, for normal use.
- Create the Excel file online in OneDrive and format the headers as a table. The Excel Online (Business) actions can only see data inside a table.
- The Google Meet link is not in the dynamic content list. Use the
triggerOutputs()?['body/hangoutLink']expression in the Outlook event body. - Set both time zone boxes in
Convert time zoneto your local time zone and useSortable date/time pattern, or Outlook events can land at the wrong time. - Events created before you turned the flow on have no row in the Excel table, so the update and delete branches cannot find them.
How the three branches work
| Action type | What the flow does |
|---|---|
added | Creates the event with Create event (V4), then saves the Google and Outlook event IDs with Add a row into a table. |
updated | Finds the Outlook ID with Get a row, then changes the event with Update event (V4). |
deleted | Finds the Outlook ID with Get a row, removes the event with Delete event (V2), then removes the row with Delete a row. |
Expression used in this flow
triggerOutputs()?['body/hangoutLink'] returns the Google Meet link from the trigger so it can go into the Outlook event body.
Questions
Can Power Automate sync Google Calendar to Outlook automatically?
Yes. The Google Calendar trigger When an event is added, updated or deleted from a calendar checks on a schedule you set, and the flow creates, updates or deletes the matching Outlook event with the Office 365 Outlook actions.
Is this a two-way sync?
No. This flow is one-way, from Google Calendar to Outlook. For the other direction there is a separate flow in this video: https://www.youtube.com/watch?v=33SWmcCFXNs
Why do I need an Excel file to sync calendars?
Google and Outlook give the same event different IDs. The Excel table stores both IDs so that when a Google event changes or is deleted, the flow can find the exact Outlook event to change.
Does this need a premium Power Automate licence or SharePoint?
No. Google Calendar, Office 365 Outlook and Excel Online (Business) are standard connectors, and the Excel file lives in OneDrive for Business.
