- Apply to eachを使わずに好きな値を選択したい
- 複数の条件でフィルターしたい
この記事では、そんな方にアレイのフィルター処理の使い方を紹介します。
この記事を読むとループを使わなくても配列やコレクションの処理が可能になります。
アレイのフィルター処理で出来ること
アレイのフィルター処理は、配列から好きな値だけ抽出できます。
この配列から50円以上を抽出したい場合
[ "1円", "5円", "10円", "50円", "100円", "500円" ]
アレイのフィルター処理を使うとこんな結果を得られます。
[ "50円", "100円", "500円" ]
アレイのフィルター処理は、
元の配列から条件に一致したものだけ選んで新しい配列を作ります。
Apply to eachのループに条件を入れて1つ1つ確認して新しい配列に追加するのと同じ動きです。アレイのフィルター処理だと1つのアクションで実行できるのでスマートです。
また、勘違いしやすいポイントが1つあります。
アレイのフィルター処理では、元の配列の内容を変更して新しい配列を作ることはできません。
例えば50円以上を抽出して数字だけの新しい配列を作る。
こんな動きはできません。
[ 50, 100, 500 ]
元の値は50円や100円などの文字です。それを加工して結果として出すことはできません。
条件で比べるときに50円の文字を50の数字に変換して50以上か比較する事はできます。
動きがわかったら次の項目で設定方法を見ていきましょう。
基本モードの設定
アレイのフィルター処理は入力場所が4つあります。
- 差出人(from)
- 左側(値A)
- 中央(条件式)
- 右側(値B)
(1)差出人(from)
フィルターの元になる配列かコレクションを指定します。
ここの指定方法は自由度が高いので例をいくつか紹介します。
配列を直接書く
CreateArray('1円','5円','10円','50円','100円','500円')
コレクションを直接書く
CreateArray(json('{"No":"1","金額":"1円","素材":"アルミ","形":"丸","穴":"無"}'),json('{"No":"2","金額":"5円","素材":"黄銅","形":"丸","穴":"有"}'),json('{"No":"3","金額":"10円","素材":"青銅","形":"丸","穴":"無"}'),json('{"No":"4","金額":"50円","素材":"白銅","形":"丸","穴":"有"}'),json('{"No":"5","金額":"100円","素材":"白銅","形":"丸","穴":"無"}'),json('{"No":"6","金額":"500円","素材":"黄銅、白銅","形":"丸","穴":"無"}'))
データ操作の配列・コレクションを呼び出す
outputs('作成')
ExcelOnlineの「表内に存在する行を一覧表示」を呼び出す。
outputs('表内に存在する行を一覧表示')?['body/value']
(2)左側(値A)
配列・コレクションの中の要素を1つ指定します。
Apply to eachのように「動的なコンテンツ」には表示されません。
式を開いて手入力する必要があります。
配列の場合、要素は1つしかないのでこれだけです。
item()
()の中には何も入力しません。
コレクションの場合、要素の中の項目も指定します。
item()?['金額']
()の中には何も入力しません。
この要素の場合は項目が5つ(No,金額,素材,形,穴)あります。
条件の値Aにしたい項目を選びます。
この例では金額の「1円」が値Aになります。
金額50円以上を選択したい場合は、「○円」の文字から数字だけ取り出して比較する必要があります。
1円 >= 50 ・・型が一致しないので比較NG
1 >= 50 ・・比較OK
そんな時は関数式で囲みます。
例えば「1円→1」にする関数はこちらです。
int(replace(item()?['金額'],'円',''))
3つのステップで1円を数字の1に変換します。
①金額は1円
item()?['金額'] ・・"1円"
②replace関数で円を削除
replace(item()?['金額'],'円','') ・・"1"
③int関数で文字の1を数字の1に変換
int(replace(item()?['金額'],'円','')) ・・1
これで値Aは数字の1になりました。
値Bに数字を指定すれば比較することができます。
比較方法によっては値Aの内容を値Bに書いても問題ありません。
見やすく、使いやすい方法で入力しましょう。
(3)中央(条件式)
AとBを比較するための条件式を選択します。
選択肢の一覧はこちら
右側に条件をイメージしやすい記載を追加したので参考にしてください。
選択肢 | 詳細設定モードの表示 | 演算子・正規表現でのイメージ |
---|---|---|
次の値を含む | @contains(A, B) | *B* や .?B.? |
次の値を含まない | @not(contains(A, B)) | (?!B) |
次の値に等しい | @equals(A, B) | A == B |
次の値に等しくない | @not(equals(A, B)) | A != B |
次の値より大きい | @greater(A, B) | A > B や A gt B |
次の値以上 | @greaterOrEquals(A, B) | A >= B や A ge B |
次の値未満 | @less(A, B) | A < B や A lt B |
次の値以下 | @lessOrEquals(A, B) | A <= B や A le B |
次のもので始まる | @startsWith(A, B) | ^B |
次のもので始まらない | @not(startsWith(A, B)) | ^(?!B) |
次のもので終わる | @endswith(A, B) | B$ |
次のもので終わらない | @not(endswith(A, B)) | (?!B)$ |
例えば「A = B」としたい場合は、「次の値に等しい」を選びます。
基本モードで設定できる条件は1つです。
こちらのようなAndやOrで複数の条件は指定できません。
And・Orの指定方法は後半で説明します。
(4)右側(値B)
値Aと比較する値を入力します。
Aが50円の場合にしたいときは、条件を「次の値に等しい」にしてBは「50円」にします。
比較したい値をそのまま入力すればいいので迷うことはありません。
変数や他のデータの値も使えます。
データ操作の「作成」の値
outputs('作成')
変数の値
variables('変数名')
特殊なパターンとしては空白文字やブーリアン型が挙げられます。
空白の文字列の場合
string('')
ブーリアン型trueの場合
true
【複数条件】And条件
「詳細設定モードで編集」にすると式を使えるので複数の条件を指定できます。
And条件の式はこちらです。
@And(条件1,条件2)
3つ目の条件はカンマで区切って後ろに追加します。
@And(条件1,条件2,条件3)
このAnd条件を指定したい場合
A >= B And A <= C
式にするとこうなります。
@And(greaterOrEquals(A, B),lessOrEquals(A, C))
例えば1,5,10,50,100,500から50以上・100以下を指定したい場合の式です。
@And(greaterOrEquals(item(), 50),lessOrEquals(item(), 100))
目的の値のみ選択できました。
【複数条件】Or条件
「詳細設定モードで編集」にすると式を使えるので複数の条件を指定できます。
Or条件の式はこちらです。
@Or(条件1,条件2)
3つ目の条件はカンマで区切って後ろに追加します。
@Or(条件1,条件2,条件3)
このOr条件を指定したい場合
A = B Or A = C
式にするとこうなります。
@Or(equals(A, B),equals(A, C))
例えば1,5,10,50,100,500から10と100を指定したい場合の式です。
@Or(equals(item(), 10),equals(item(), 100))
目的の値のみ選択できました。
ここまで詳細設定モードでのOr条件について説明しましたが、全てイコールの場合という条件を守れば基本モードでも使えます。
例えばこのOr条件なら全てイコールなのでOKです。
A = B Or A = C
具体的な入力方法を説明します。
②左側
ここでそれぞれの条件のBとCを指定します。
CreateArray(B,C)
③中央
次の値を含む
④右側
通常は左側ですが、この場合は右側で指定します。
item()
この方法だと基本モードで編集できるのでパッと見た時にわかりやすいです。
公式で説明している「配列のフィルター処理アクション」はこちら。
エラーになる場合
アレイのフィルター処理を使っているとエラーになることがあります。
よくあるエラーとその対策はこちらを参考にしてください。
まとめ
PowerAutomateでアレイのフィルター処理の使い方を紹介しました。
アレイのフィルター処理は使わないフローがないくらい高い確率で使用します。また、ループを使わなくても配列からデータの取り出しができるので必ず覚えておきたいアクションです。
PowerAutomateのおすすめ記事
人気ページ
Apply to eachの使い方
アレイのフィルター処理の使い方
日付関数の使い方
エラーを無視する方法
メールの内容をExcelへ転記
メール本文から名前を抽出
>>PowerAutomateの記事一覧を見る<<
お気に入り必須!公式ページ
Microsoft Power Automate
式関数のリファレンス
コネクタのリファレンス
Excel Online (Business)のリファレンス