Power Automate 複数キーワードの「OR条件(どれかを含む)」をループなしで判定する方法

Power Automateで「複数のキーワードのうち、どれか1つでも含まれているか(OR条件)」を判定したいときがけっこうある。

Apply to Each(ループ)を使うと、キーワードが増えるほど実行時間が長くなり、アクション数の制限も圧迫するので、一括でチェックしたい。

結論から言うと、「アレイのフィルター処理」アクションを使えば、ループなし(一括)で複数キーワードの検索が可能。

この記事では、受信したメール本文のキーワード仕分けを例に、実行時間を劇的に短縮できるスマートな判定フローの作り方を解説。

スポンサーリンク

実例:メールの本文にキーワードが含まれるかを判定

今回は例として、受信したメールの本文に「採用」「求人」「インターン」「面接」のいずれかが含まれていたら、何かしらの処理をする場合を考えてみる。

非推奨:Apply to Eachですべてチェックする

真っ先に思い浮かぶのはApply to Eachでキーワード一つ一つチェックしていく方法。

ただ、この方法だとキーワードが増えれば増えるほど実行時間もかかるし、アクションの実行制限も圧迫してしまうので、あまりおすすめはできない。

推奨:アレイのフィルター処理で一括チェック

おすすめの方法はアレイのフィルター処理で一括でチェックする方法。

こんな感じで、「差出人」にチェックするキーワードの配列を設定し、左辺のチェック対象の文字列(今回はメール本文)を、右辺に式「item()」を設定するだけ。
あとはif文でアレイのフィルター処理の結果の長さ(length)をチェックし、0より大きければ何かしらのキーワードが含まれているし、0であればキーワードが含まれていないと判定できる。
length(body('アレイのフィルター処理'))

動作確認

ifの中にこんな感じで作成アクションをいれて、動作を確認する。

メール本文にキーワードが含まれる場合

まずはこんな感じのキーワードが2つ含まれるメールを受信してみると、
フィルター処理の結果のlengthは2となり、キーワードが含まれていることがわかる。

メール本文にキーワードが含まれていない場合

続いて、キーワードが含まれていないメールを受信してみると、
lengthは0となりキーワードが含まれていないことがわかる。

ということで、アレイのフィルター処理を使えば、実行時間が劇的に短縮されるだけでなく、Power Automate特有の「アクション実行数の制限」を無駄に消費するリスクも防げる。

処理速度もメンテ性も爆上がりするテクニックなので、この「ループなし」の方法がおすすめ。

コメント

タイトルとURLをコピーしました