- 配列の値を見たい
この記事では、そんな方に配列を操作する方法7種類を紹介します。

データ操作の要である「配列」を覚えてフローを使いこなしましょう。
(1)インデックス番号を指定
配列の中にある値には呼び出すためのインデックス番号がついています。
インデックス番号はゼロから始まる数字で、指定方法は配列の後ろに大カッコを付けてその中に数字を書きます。
variables('配列')[0]
outputs('作成')[3]
ここに「あいうえお」の配列があります。

試しにインデックス番号0を指定してみます。

0は最初なので「あ」を取り出せました。

存在しない番号を指定すると、

エラーになりました。
InvalidTemplate. Unable to process template language expressions in action ‘作成’ inputs at line ‘0’ and column ‘0’: ‘The template language expression ‘variables(‘配列’)[5]’ cannot be evaluated because array index ‘5’ is outside bounds (0, 4) of array. Please see https://aka.ms/logicexpressions for usage details.’.
テンプレートが無効です。 行 ‘0’ および列 ‘0’ のアクション ‘作成’ 入力でテンプレート言語式を処理できません: ‘配列インデックス ‘5’ が外部にあるため、テンプレート言語式 ‘variables(‘配列’)[5]’ を評価できません 配列の境界 (0, 4)。 使い方の詳細は https://aka.ms/logicexpressions をご覧ください。
何がいけなかったのか見ていきます。
あいうえおにインデックス番号を割り当てると最大は4です。
あ ・・0
い ・・1
う ・・2
え ・・3
お ・・4
データが5つの場合、1つ目の値が0から始まるので最大は4になるので5は存在しません。
(2)最初や最後の要素1つを取得
要素の指定方法はインデックス番号だけではありません。予め決められたインデックス番号を指定して値を取り出す関数があります。
first関数・・インデックス番号0と同じ要素を取り出す。
last関数・・インデックス番号が最後の要素を取り出す。
first(variables('配列'))
last(variables('配列'))
例えば複数の日付があって初日を取り出したい場合

ここでfirst関数を使います。
first(variables('お正月'))

お正月初日を取り出せました。

last関数で最終日も取得してみます。
last(variables('お正月'))

お正月最終日を取り出せました。

ちなみにlast関数を使わずに最終日を求める場合はこんな式になります。
first(reverse(variables('お正月'))) ・・1月3日
variables('お正月')[sub(length(variables('お正月')),1)] ・・1月3日
これを見るとlast関数は便利だと分かります。
ではfirst関数はインデックス番号0固定なので使う必要があるのか疑問になると思います。
こちらはfirst関数とインデックス番号0を使った式です。
concat('2022年',first(variables('お正月'))) ・・2022年1月1日
concat('2022年',variables('お正月')[0])) ・・2022年1月1日
firstの方がやりたい事がわかりやすいと思います。
と言っても誤差レベルなので、見やすい・書きやすい方を使いましょう。
(3)途中で区切って取得
配列の位置を指定して区切った配列を取り出す関数があります。
take関数 ・・配列の最初から指定した要素数取り出す
skip関数 ・・配列の最初から指定した要素数飛ばして取り出す
take(variables('学校'),3)
take(variables('学校'),3)
例えば幼稚園から小学校までの序列があって最初の3年間を取り出したい場合

最初から指定するtakeで3を指定して、最初の3年を選びます。
take(variables('学校'),3)

幼稚園の3年分が取り出せました。

skipで3を指定して、最初の3年を飛ばしてみます。
skip(variables('学校'),3)

幼稚園の3年を飛ばした後にある小1〜小6を取り出せました。

少し応用してみます。
後ろから3つ分を指定する場合はこんな式になります。
reverse(take(reverse(variables('学校')),3)) ・・["小4","小5","小6"]
(4)好きな値を指定する。空白を除外する
データ操作の「アレイのフィルター処理」アクションを使えば好きな値を指定して取り出すことができます。
この配列から空白以外を指定してみます。
[ "あ", "", "い" ]
差出人:元になる配列を指定
左側 :item()
中央 :次の値に等しくない
右側 :String(”)

間にあった空白を除外できました。

詳しくはこちらの記事を参照してください。
(5)重複削除
配列の中の同じ値を削除する場合はunion関数を使います。
union関数 ・・複数の配列を結合し重複を排除する
union(variables('数字'),variables('数字'))
3が3つ重複している配列を作ります。

union関数で同じ配列を2つ並べて指定します。

動かすと重複が排除されました。

(6)指定文字列数をカウント
配列内に特定の文字列が何個存在しているのか確認する場合は、関数を組み合わせます。
sub(length(split(join(variables('数字'),'_,_'),'100点')),1)
100点が2つ入った配列を準備します。

検索文字を100点にした式を入れます。
sub(length(split(join(variables('数字'),'_,_'),'100点')),1)

100点は2つあるので2が結果として出てきました。

(7)指定文字が存在する要素番号
配列内に特定の文字列が存在する要素番号を確認する場合は、関数を組み合わせます。
if(contains(variables('数字'),'100点'),if(empty(first(split(join(variables('数字'),'_,_'),'100点'))),0,sub(length(split(first(split(join(variables('数字'),'_,_'),'100点')),'_,_')),1)) ,false)
要素番号1に100点が入った配列を準備します。

100点の要素番号を調べる式を追加します。

100点が最初に存在する要素番号の1が表示されました。

まとめ
PowerAutomateで配列を操作する方法7種類を紹介しました。
配列の値はインデックス番号や関数で取り出せることがわかりました。関数を組み合わせた複雑な式を使う取り出し方法もありました。困った時に使うかもしれないので頭の片隅に入れておきましょう。
PowerAutomateのおすすめ記事
人気ページ
Apply to eachの使い方
アレイのフィルター処理の使い方
日付関数の使い方
エラーを無視する方法
メールの内容をExcelへ転記
メール本文から名前を抽出
>>PowerAutomateの記事一覧を見る<<
お気に入り必須!公式ページ
Microsoft Power Automate
式関数のリファレンス
コネクタのリファレンス
Excel Online (Business)のリファレンス