2023/8 Power AutomateでOutlookとGoogleのカレンダー同期

日尾野秀樹
本社
Power Automate

最近、会議といえばWeb会議が主流ですよね。 Zoom、Microsoft Teams、Google Meet、Cisco Webex、それにSlackのハドルミーティングなど相手の環境や用途に合わせて様々なWeb会議サービスを使い分けて対応できるようになりましたね! 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を選択します。 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の紐づけを行っています。

Outlookイベントの作成

最後にトリガーとなったGoogle側の予定に情報を付け加えましょう。「+新しいステップ」を押下して操作を選択してくださいのダイアログが表示されたらリストからGoogle Calendarの「イベントの更新」を選択してください。選べるアクションが沢山ありますので"イベントの更新"とかで検索するとよいです。

イベントの更新を選択

GoogleカレンダーIDを選択してイベントIDにトリガーとなったGoogleイベントIDを選択します。

更新する箇所は「説明」欄です。Outlookイベントと同様に本文に続けて”OutlookイベントID”という文字列とカッコ付けでOutlookイベントIDをセットして紐づけます。

Googleイベントの更新

これでGoogle側のクラウドフローが完成です。

2.  Outlookに予定が追加されたらGoogleカレンダーにも追加する

  1. の逆をすればよいので省きます(手抜き)。

完成

(追加処理のみです;)

  1. の処理を逆にして色々と必要な調整を施して最終的に出来上がったのが↓こちらになります。

Googleカレンダーが追加されたとき

Googleクラウドフロー全体像

Outlook予定が追加されたとき

Outlookクラウドフロー全体像

まとめ

今回説明したのはイベント追加処理のみですが、これに修正処理と削除処理を入れてセキュリティに配慮した処理に手直ししたもので私は運用しております。

これで片方のカレンダーにしか予定が載っていないケースで予定の衝突が起きるケースは概ね解消しつつあります。繰り返しイベントの同期など対応できていないものもあり、まだ改善点はあるので気が向いたときにまた改良していこうと思います。

次回はZapierを使ってやってみようと思います(暇なときに)

こんな記事も読まれています