本記事ではPower Automateを利用して、Office365グループメールに来たメールをSlackチャンネルに投稿する機能を作成してみます。
Power Automateを利用すると簡単に実装できます。
全体像
全体像としてはこんな感じ
上から順に説明していきます。
グループに新しいメールが届いたとき(When a new email arrives to a group)
When a new email arrives to a group
その名前の通り、グループに新しいメールが届いたときにトリガーされます。
こちらにグループIDを入力しておきます。
ドキュメントを見ると、戻り値がConversationTriggerResponseなArrayになっているようです。
ConversationTriggerResponse
スレッド投稿を取得する(Get a thread post)
グループに新しいメールが届いたとき(When a new email arrives to a group)
の戻り値がArrayとなっているため、スレッド投稿を取得する
を追加すると勝手にそれぞれに適用する(Apply to each)が追加されていい感じに処理を追加してくれます。
上記の状態からスレッドIDと投稿IDを入力するとそれぞれに適用するがいい感じに設定されます。
なおこの時、スレッドID、投稿IDの順番にパラメーターを入力すると3重ループ
投稿ID、スレッドIDの順番で入力すると2重ループ
となりました。
3重ループの場合はそのままでも動きますが、2番目のループが余計なので今回は手で削除しています。
Html からテキスト
スレッド投稿を取得する(Get a thread post)の戻り値はPostとなっておりBodyの中にhtmlで格納されいます。
ここでhtmlからテキスト
でテキストに変換してあげます。
メッセージの投稿
あとはメッセージの投稿からSlackに投稿してあげて完成。
プレーンテキストコンテンツを選択
画像のケースではhereで通知が欲しかったので<!here>
としています。
総評
グループメールの場合は、自分のメールボックスとは異なるところから始まりますが。
今現在、トリガーが多すぎて一覧からそれっぽいトリガー(Office 365 Groups Mail)を探すのが一番大変でしたが、それを見つけた後はさっくりと実装できます。