2023/8 Power AutomateでOutlookとGoogleのカレンダー同期
最近、会議といえばWeb会議が主流ですよね。 Zoom、Microsoft Teams、Google Meet、Cisco Webex、それにSlackのハドルミーティングなど相手の環境や用途に合わせて様々なWeb会議サービスを使い分けて対応できるようになりましたね! 中でもTeamsとMeetは企業で利用しているスケジュール管理サービスと連携して使うことでスケジュールを見れば、いつどこでだれとWeb会議が入っているかが一目瞭然です。 TeamsであればMicrosoft365 Outlook、MeetであればGoogleカレンダーをPCやスマホからアクセスしてスケジュール管理。もはやこれが普通。いい時代です。
これで社内・社外を意識せず気軽にWebミーティングの予定を入れやすくなり業務の効率が飛躍的に上がりました。
おかげで業務時間内はギッシリとミーティング予定が入ってしまっている人も多いのではないでしょうか。かくいう私もそうでして、最近はミーティングがダブルブッキングしてしまうことが多々発生してしまってます。
私の場合ダブルブッキングの原因は明白で、社内と社外でスケジュール管理サービスを複数利用しているからです。 社外ではMicrosoft 365 Outlook、社内ではGoogleカレンダーです。
これにより、社外の人が私のOutlookの予定を見て空いていると思ってミーティングの招待をしたが、実は社内の予定がGoogleカレンダー側に入っているといった形で衝突するわけです。
そこで、これを回避すべく今回はMicrosoft 365 OutlookとGoogleカレンダーを同期してみようと思います。
同期の仕方はたくさんありますが、今回はMicorosoft Power Automateのクラウドフローを用いて実装してみようと思います。 ※Microsoft Power Automateクラウドフローについての詳細はこちらをご覧ください。ライセンスは企業でMicrosoft365E3などを利用しているなら含まれているので別途料金がかからないのが利点ですね。
余談
ちまたでは「google outlook 同期」などでググるとGoogleカレンダーにOutlook予定表を表示したりその逆の手法が出てきますが、私の場合それでは何の解決にもなりません><。 なぜならダブルブッキングする理由は他人が私の片方のカレンダーの空き予定を見て勝手にミーティングを入れてくるからです。私が2つのカレンダーを並べて見れるようにできても意味がないのです。 したがって物理的に2つのカレンダーを同期する必要があります。。。
注意
説明を簡略するため今回は予定が追加されたときに絞って同期処理を作成してます。私は予定の更新と削除の処理も作っていますが特に難しくないので興味ある方はご自身で試してみてください。あと、今回の手順はあくまでコンセプトを閲覧いただいた皆様に共有するものであるため処理は簡略化されておりチェック処理などは一切入っておりません。ご自身で実装される際は実状況に耐えうるよう堅牢な作りにされることを強くお勧めします。
1. Googleカレンダーに予定が追加されたらOutlookにも追加する
Microsoft365のページよりアプリ一覧からPower Automateを選択します。
メニューより「+作成」を選択します。
「自動化したクラウドフロー」を選択します。
フロー名に適当な名前をつけ、フローのトリガーとしてリストからGoogle Calendarの「イベントがカレンダーに追加されたとき」を選択して「作成」を押下してください。選べるコネクターが沢山ありますので"google"とかで検索するとよいです。
このイベントトリガーにはGoogleカレンダーIDの入力が必要です。ですが心配する必要はありません。最初はGoogleアカウントへの接続画面が出てきますのでそこで指示のとおりに進めていけばよいです。無事カレンダーIDの入力ができたら「+新しいステップ」を押下します。
条件コントロールを追加します。 条件コントロールとは、一般言語でいうところのIF文に相当するものです。
ここに本文に "GoogleイベントID" という文字列が含まれていたら処理を終了するという定義をします。
これはどういうことかというと、後述する 2. でOutlookカレンダーに予定が追加されたときのクラウドフローを追加した際に無限ループになることを防ぐためのものです。
いよいよOutlook予定の作成処理を作ります。「+新しいステップ」を押下して操作を選択してくださいのダイアログが表示されたらリストからOffice 365 Outlookの「イベントの作成(V4)」を選択してください。選べるアクションが沢山ありますので"イベントの作成"とかで検索するとよいです。
こちらのアクションにはOutlook予定表IDの入力が必要です。こちらもGoogleカレンダーIDと同様、最初はMicrosoft365アカウントへの接続画面が出てきますのでそこで指示のとおりに進めていけばよいです。
他、以下のようにGoogleカレンダーの項目をOutlookの項目にマッピングしていきます。
大事なのは本文のところで”イベントの説明”をセットしたら続けて”GoogleイベントID”という文字列とカッコ付けでGoogleイベントIDをセットしているところです。これをすることでGoogleとOutlookの紐づけを行っています。
最後にトリガーとなったGoogle側の予定に情報を付け加えましょう。「+新しいステップ」を押下して操作を選択してくださいのダイアログが表示されたらリストからGoogle Calendarの「イベントの更新」を選択してください。選べるアクションが沢山ありますので"イベントの更新"とかで検索するとよいです。
GoogleカレンダーIDを選択してイベントIDにトリガーとなったGoogleイベントIDを選択します。
更新する箇所は「説明」欄です。Outlookイベントと同様に本文に続けて”OutlookイベントID”という文字列とカッコ付けでOutlookイベントIDをセットして紐づけます。
これでGoogle側のクラウドフローが完成です。
2. Outlookに予定が追加されたらGoogleカレンダーにも追加する
- の逆をすればよいので省きます(手抜き)。
完成
(追加処理のみです;)
- の処理を逆にして色々と必要な調整を施して最終的に出来上がったのが↓こちらになります。
Googleカレンダーが追加されたとき
Outlook予定が追加されたとき
まとめ
今回説明したのはイベント追加処理のみですが、これに修正処理と削除処理を入れてセキュリティに配慮した処理に手直ししたもので私は運用しております。
これで片方のカレンダーにしか予定が載っていないケースで予定の衝突が起きるケースは概ね解消しつつあります。繰り返しイベントの同期など対応できていないものもあり、まだ改善点はあるので気が向いたときにまた改良していこうと思います。
次回はZapierを使ってやってみようと思います(暇なときに)