みなさん Outlook の自動応答って使っていますか? 少し長めにお休みをとるときには大体設定しているのですが、あまり設定する機会も多くないので、ちょっと面倒だなといつも感じでいます。
そこで今回は、Outlook カレンダーに登録した予定を使って、自動的に Outlook の自動応答を設定してくれるようなフローを作ってみました。
Power Automate 上での Outlook カレンダー関連アクション
Power Automate で Outlook カレンダー 関連のアクションは 9個ほど提供されています。Outlook カレンダーからイベントを取得するアクションを今回利用しますが『イベントの開始時刻でソートできない』という制限があります。
[更新]
start/datetime ascでソートできるようでした。フィルターもできるけど、クエリ書くのが面倒なので Get calendar view of eventsをそのまま利用することにします。
これを緩和するために "Get calendar view of events (V3) )" というアクションが用意されており、今回もこのアクションで直近の予定を取得します。
"Get calendar view of events (V3)" は取得対象となるカレンダーと取得区間 (Start/End) を指定して、区間内に含まれる 全イベントを返します。
複数日にまたがる予定の途中でも、区間に入っていれば返却対象となります。
なお、Start/End はUTCでと書いてありますが、タイムゾーンを指定していてもローカルタイムでフィルターされているようでした。ですので、02/14 1日分の予定を取得する場合には
Start Time : 2021-02-14T00:00:00 End Time : 2021-02-15T00:00:00
とアクションにセットすればよさそうです。
今回のフローでは、毎日夜の11時ころにフローを実行し、次の日が休暇予定になっていれば、Outlook の自動応答を休暇予定期間にわたって設定する ということをやっています。
Outlook カレンダーからの予定取得としては、翌日 00:00~翌々日 00:00 区間のイベントを取得し、翌日開始の休暇イベントがあるかどうかを判定すればよいです。
Outlook 自動応答の設定アクション
もう一つのキーポイントである、自動応答の設定ですが、"Set up automatic replies (V2))" アクションを利用します。
この設定のポイントは以下の3点です。特に時刻の設定は少し厄介なので注意してください。
- Status は Scheduled にする
- Start Time/End Time には UTC での時間をセットする。この時のフォーマットは
yyyy-MM-ddTHH:mm:ss.0000000
- 返信するメッセージで改行を使うには
</br>
Start Time/End Time はタイムゾーンを指定しても、UTCで (2021-02-04:15:00:00Zのような) 末尾にZがつく表記でも期待される時刻がセットされなかったので、フォーマットと時刻には気を付けましょう。
Outlook の予定が常にローカルタイムで返してくるようなので、Convert time zoneアクションで変換します。
フロー全体
ここまでを踏まえて、必要最低限のアクションを含むフローを作成すると下図のようになります。
ただし、ここでは
- 休暇予定用のカレンダーを作っている
- 1日だけでも自動応答を設定している
- 応答本文に日付は入れない
などの前提を置いています。もしもう少し複雑にする場合 (例: 3日以上休暇だったら自動応答をセット、応答本文に『XX~XXまでお休みしています』と入れる) には、アクションがそれに応じて増えますが、基本を押さえておけば応用もききます。
おわり
不定期に低頻度で発生するめんどくさい系のイベントを自動化するものなかなか良いですね。このフローさえ設定しておけば、カレンダーに休暇登録するのに連動して不在設定ができます。
今回はOutlookのカレンダーを使いましたが、グループカレンダーみたいなものを運用していればそれをデータソースとしてもよいかもしれません。