知識は未だ霧の中

スパコン眼鏡NET。HPCのことはあまり書かない。

Outlook.comのカレンダーとGoogle Calendarを同期する方法

Googleのサービス達がどんどんとシェアを伸ばし、Outlook使いの肩身が狭い今日この頃。

友人たちと

Googleカレンダーでイベント作ってシェアするから参加登録よろ」

「。。。」

とか

バイト先で

「スケジュールをGoogleカレンダーで管理するので、個人のGoogleカレンダーをシェアすること」

「。。。」(Outlook.comメインやし、そもそもなんで個人の予定を全部公開せなあかんの。。。)

とか。

そんな訳で、Outlook.comで追加、編集、削除した予定を Google Calenderに反映する方法を説明したいと思います。 (ちなみに、Google CalenderからOutlook.comに反映したい方向けの説明はしませんが、やることはほぼ同じなので、説明を読んでいただければできるようになると思います。)

準備

今回、同期を行うには、Microsoftサービスである、Power Automate(旧称:Flow)というオートメーションツールを使っていきます。(導入すると「最近流行りのRPAを導入したぜドヤァ」ができます笑)

オートメーションツールツールとは複数のサービスを連携させて自動作業を行わせることができるツールです。例えば、”Gmailに特定のアドレスからメールが来たらTwitterに自動投稿”、や"Alexaに掃除してといったらルンバを起動して、空気清浄機を最大出力にする"みたいなことをプログラムすることができます。

プログラムと聞くと難しそうという気持ちになるかもしれませんが、オートメーションツールでは簡単なマウス操作と設定入力でこれらを使えるようになっています。(なっていることになっています。)

(IFTTTとかZapierとかをご存知の方もいると思いますが、そういった方はそれらの簡易版&Microsoft版だと思っていただければ。)

Microsoft Power Automateは本来有料サービスですが、一部機能を無料枠で利用可能です。 (ただし、新プランへの移行措置のようなので、最短で2020年10月には使えなくなるかもしれません。Office 365のライセンスを契約している人は、それにPower Automateのライセンスが付帯しているようなので、問題ありません。)

そして、今回のカレンダーの同期程度であれば、超ヘビーユーザー※1でない限り事足るので無料枠(もしくはOffice 365付帯のライセンス)を使っていきたいと思います。

※1: 1日のAPIの呼び出し上限が2000件なので、毎日2000件以上カレンダーを編集する方は有料プランを利用してください。

設定

まず、Power Automateのページを開きます。

Microsoft Power Automate | Microsoft Power Platform

つづいて、右カラムから”作成”を選択します。 f:id:hrontan:20200210150633p:plain "Start from blank"の項目に表示されている一番右の"Automated flow"を選択してください。 f:id:hrontan:20200210150801p:plain まず、Flow nameに適当な名前を入力します。 次に、Choose your flow7s triggerの検索窓に"Outlook.com"と入力し、検索結果から、 "When an event is added, updated or deleted"を選択します。 f:id:hrontan:20200210150941p:plain

そして、ここからプログラムに入ります。 まず、最初から配置してあるOutlook.comのトリガー設定で同期対象のカレンダーを選択します。 (通常はデフォルトの"Calender"でよいはずです。)

そして下に条件分岐のアクションを追加し、画像のように設定を行います。 f:id:hrontan:20200210152543p:plain 設定:

  • "Action Type" "is equal to" "added"

次に、Yes側にGoogle Calenderの編集のアクションを追加し、次のように設定します。 f:id:hrontan:20200210152853p:plain 塗りつぶしてある部分は、同期先のカレンダーを選択してください。 設定:

  • Start time: Start time
  • End time: End time
  • Title: Subject (画像ではBusyとなっていますが、これは件名は同期したくなかったのでこのように入力しています。ここに文字列を入れた場合は、そのままこの文字列がGoogle Calender側のイベントの件名になります。)
  • Description: Id

そして、No側にはGoogle Calenderでの検索のアクションと、検索結果のリストを受け取って処理するための再帰処理のアクションを追加し、次のように設定します。 f:id:hrontan:20200210153042p:plain 塗りつぶしてある部分は、先ほどと同様に、同期先のカレンダーを選択してください。 設定:

  • Min time: addDays(utcNow(), -50)
  • Max time: addDays(utcNow(), 300)
  • Search query: Id

※ちなみに、ここでは今から50日前から300日後までのスケジュールを検索しています。なのでそれ以上日付が離れている場合は同期されません。日数を変更したい場合は数字を変更してください。(何日前、何日後まで正しく動くのかは知りません。)

再帰処理の内部に、さらに条件分岐を追加します。 f:id:hrontan:20200210153225p:plain 設定:

  • Select an output from previous steps: Event List Items

設定:

  • "ActionType" "is equal to" "deleted"

条件分岐の中身はそれぞれ、画像のように設定してください。 f:id:hrontan:20200210153344p:plain ここもまた、塗りつぶしてある部分は、同期先のカレンダーを選択してください。 設定:

  • Event ID: Event List Event Id

設定:

  • Event ID: Event List Event Id
  • Title: Subject
  • Start time: Start time
  • End time: End time
  • Description: Id

以上で設定は終わりです。

この設定を行っておくと、Outlook.comのカレンダー側で編集を行った際に、自動でGoogle Calender側に同期されるようになります。 ちなみに、残念ながら、無料プランや付帯プランだと、同期に30分ほどかかるようです。