見出し画像

PowerAutomateでOutlookの招待に自動応答する(検討編)

みなさんこんにちは。

今回はOutlookで打ち合わせに招待された時、条件に応じて自動応答するフローを作成していきたいと思います。

長くなるので今回は要件とロジックの検討部分をお送りします。

Teams会議の招待と応答について

Microsoft365を利用していると、Teams会議に招待されることがよくあります。
招待するとOutlookの予定表と連動して、イベントが作成されます。
こんな感じですね。

スクリーンショット 2022-04-04 22.01.17

運用にもよりますが、一般的には招待されたら承諾、仮承諾、辞退のいずれかをリアクションすると思います。
私の職場でも招待にはなるべく早く返答することが推奨されています。

私の場合、基本は来るもの拒まずの精神で、カレンダーが空いていれば承諾するようにしています。

そうなってくると、空いてる予定は自動的に承諾したくなるものです。
毎回のことですからね。
入れて欲しくない時は何かしら予定で埋めておけばいいわけです。

一応Outlookクライアントには自動承諾の機能もあるのですが、これがちと融通が効きません。
空いていれば承諾、空いていないと辞退にされてしまうんですね。

現実では予定が被ったら一旦連絡を取って時間調整したりするでしょうから、一方的に辞退すればいいというものではありません。

そこでPowerAutomateを使って、細かく自動応答の設定をしていきたいと思います。

実現したい内容を整理する

まずは実現したい内容を整理してみます。(要件定義というやつです)

・新しいイベントが作成されたとき、他のイベントと重複しなければ承諾。
・重複する場合は手動で返答。(何もしない)
・終日イベントと繰り返しイベントは内容を確認したいので手動で返答。(何もしない)
・任意で招待された場合も内容によるので手動で返答。(必須のみ自動処理)

こんなところでしょうか。
こうして見ると手動で返答したいパターンもそれなりにあります。

イベントの重複をどのように判定するか

さて、新規イベントが作成されたときに、重複するイベントの有無をどうやって判定させるか考えます。

予定重複フラグみたいな値があれば話が早いのですが、残念ながらそんなものはありませんでした。
(Outlook上では他に予定が入っている場合判定してくれますが、PowerAutomateでは取得できません。なんでや。)

そのため、イベントの開始時刻と終了時刻から判断するしかなさそうです。

カレンダー上でイベントが重複するorしないパターンを整理してみました。

画像2
カレンダーの表示を思い浮かべてください

①〜⑤は2つのイベントの一部または全部が重複しています。
なので⑥と⑦のときだけ承諾すればいいわけですね。

これを条件として場合分けすると、以下のようになります。

・新規予定の開始時刻≧既存予定の開始時刻の場合
→新規予定の開始時刻≧既存予定の終了時刻であればOK,それ以外はNG

・新規予定の開始時刻<既存予定の開始時刻の場合
→新規予定の終了時刻≦既存予定の開始時刻であればOK,それ以外はNG

「???」となった方もいるかと思いますので、解説します。

前者は図中①、③、④、⑥をイメージしてください。
赤と青の開始時刻が同じか、赤の方が開始時刻が早いパターンです。

赤の予定が終了した後に青の予定が始まっていれば重複しない(⑥)ため、赤の終了時刻と青の開始時刻を比較します。
青の開始時刻の方が遅ければOKとなります。

前者は図中②、⑤、⑦のパターンです。

赤の予定が始まるまでに青の予定が終了していれば予定は重複しません(⑦)。
青の終了時間の方が早ければOKとなります。

これがフローの核となるロジックとなります。

各予定に対して判定を行う

核となるロジックが出来たところで、次は各イベントを判定して結論を導き出す方法を考えます。

前項のロジックはあくまで1対1の判定です。
これを前後のイベントと1対多の関係で判定させなければなりません。

そこで、新規イベントが作成されたら前後のイベントを取得し、ループ処理を使用して既存イベントと判定させることにします。

また、その判定結果を集約し、最終的にNGが存在するか(1つでもNGがあれば承諾しない)判定するロジックも別途必要です。

これはループ処理によって得られた結果を配列に格納し、NGが存在するかチェックすれば良さそうです。

まとめ

これでフローの大枠が見えてきました。

新規イベントが作成される(トリガー)

前後の既存イベントを取得する

既存イベントと重複するか判定する

判定結果を配列に格納する

配列にNGが存在するか判定する

といった流れになります。
細かい除外条件などは作成しながら組み込んでいけばいいでしょう。

フローの作成については、作成編としてこちらに公開しています。

慣れている方なら検討編だけで作成できるかもしれませんね。

以上最後までお読みいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?