Sync Outlook Calendar to Google one
Power Automate( Flow )で作成したExchange OnlineからGoogle Calendarに同期をかけるFlowを作成しました。その時の情報を下記にまとめます。
作成したPower Automateは過去にFlowに公開されていたFlowを修正して、作成しています。
このPower Automateの特徴は、Outlookの繰り返しに対応するために、新規登録時、修正時にも前に登録があるイベントを確認し、該当するイベントがあった場合は削除してから、登録することをしています。Outlookカレンダ、Googleカレンダは処理速度の関連で、登録した時の30前から90日後をチェックし、変更します。
全体のPower Automationの流れは次の通りです。
① トリガーとなるイベントです。対象のOutlookのカレンダに変更があったとき、このPower Automateが実行されます。
② Googleカレンダを選択します。Googleカレンダは複数回選択する必要があるので、ここで指定して、③で変数に格納します。
③GoogleカレンダのIDを変数に格納します。
④ トリガーされたOutlookのカレンダーが繰り返しの場合、Googleカレンダ上に既に登録しているか確認します。(⑦に関連しますが、OutlookのカレンダはEventIDを持ちます。繰り返しの場合は、Master IDも登録されており、SeriesMastarIDが一致した場合、その SeriesMastarID MasterIDを格納します。)
⑤ Googleカレンダ上に以前に登録されていたイベントがないか確認します。このとき、トリガーされたOutlookのカレンダのEventIDとGoogleカレンダ上の説明にあるEventIDを確認します。一致したEventがあれば、Googleカレンダのイベントを削除します。
⑥ Googleカレンダ上にある繰り返しのイベントを削除します。この時、削除するイベントは、④で確認した、情報をもとに削除します。
⑦ Googleカレンダを変更します。もし、トリガーとなったOutlookカレンダのイベントがDeleteの場合は、EventIDが一致するGoogleカレンダを削除します。イベントがDelete以外の場合は、新規にGoogleカレンダに登録します。登録するとき、後から検索できるように、OutlookのEventIDとSeriesMasterIDを登録します。
④と⑤が少しトリッキーな動きになっています。本来であれば、Googleカレンダを変更するという処理もPower Automateの処理を持っているのですが、繰り返しイベントがあるとき、変更で実施すると、うまくいきません。 OutlookカレンダからGoogleカレンダに同期する Power Automateの記事をみても、繰り返しは変更、削除は対応しないことが多いです。今回のPower Automateでは、初めに削除することで、変更のイベントではなく、新規のイベントとして登録できるようにすることで、対応しています。
ここ1,2年このPower Automateを実施していますが、まだ、繰り返し処理があると、削除に失敗することがあります。Google側のAPIの回数制限に引っかかったり、Outlookで繰り返しの処理を変更すると、複数Power Automateが走り、Googleカレンダの削除が競合し、エラーとなることがあります。完全に同期はできないことを理解して使ってください。
それぞれの登録の仕方を説明します。