[power automate]配列操作を網羅してみた

配列操作の一覧

1. 配列の初期化

1.1  変数 > 「配列を初期化する」アクション

1.2. createArray()

 @{createArray(10,20,30,40,50)}

2. 要素の参照

2-1. 最初の要素の参照:first()

 @{first(createArray(10,20,30,40,50))}

2-2. 最後の要素の参照:last()

 @{last(createArray(10,20,30,40,50))}

2-3. N番目の要素の参照:[]

配列のインデックスは0オリジン

@{createArray(10,20,30,40,50)[3]} 

3. 要素の追加・削除

3-1. 変数 > 「変数配列に追加」アクション

3-2. 配列の結合(重複削除):union()

 @{union(variables('Array1'), variables('Array2'))}

3-2. 先頭からN件:take()

 @{take(variables('Array1'), 3)}

3-3. 末尾からN件:skip()

 @{skip(variables('Array1'),sub(length(variables('Array1')),3))}

4. 集計

4-1. 配列の長さ:length()

 @{length(variables('Array1'))}

4-2. 要素の結合:join()

 @{join(variables('Array1'), ',')}

4-3. 合計

sum()は用意が無いため、for each + 「変数の値を増やす」アクションで足していく

4-4. 最大値:max()

 @{max(variables('Array1'))}

4-5. 最大値:min()

 @{min(variables('Array1'))}

5. 検索

5-1. 指定の値が含まれるか:containts()

 @{contains(variables('Array1'), 30)}

5-2. 連想配列のキーでフィルター:「Filter Array」アクション

■入力 
[
  {
    "first": "tanaka",
    "last": "tarou"
  },
  {
    "first": "tanaka",
    "last": "jirou"
  },
  {
    "first": "saitou",
    "last": "koji"
  },
  {
    "first": "saitou",
    "last": "yuki"
  }
]
 ■出力
[
  {
    "first": "tanaka",
    "last": "tarou"
  },
  {
    "first": "tanaka",
    "last": "jirou"
  },
]

6. ソート

6-1. 昇順ソート:sort(array)

 @{sort(createArray(30,10,50,40,20))}

6-2. 降順ソート:reverse(array)

 @{reverse(createArray(30, 10, 50, 40, 20))}

6-3. 連想配列のキーで昇順ソート:sort(array, key)

 @{sort(variables('Array2'), 'Name')}

用意されていない配列操作

power automateの配列要素の追加・削除機能に乏しい。

・k番目の要素のみを削除する

for eachでk番目の要素であれば何もしない、それ以外の要素は配列の追加アクションを利用して、配列を再編成する

・k番目に要素を追加する

  1. for eachで[1 ~ k-1]番目の要素をnew listに追加
  2. 新しい要素をnew listに追加
  3. [k ~ n]番目の要素をnew listに追加

・K番目の要素を更新する

配列に対する代入はできないので、やはりfor eachで配列の再編成が必要

・2つの配列を結合する

for eachでarray2の各要素に対してarray1の「変数配列に追加」アクションを実行する

 

さいごに

  • 通常のプログラミング言語に比べると、Power Automateの配列操作の手段がかなり貧弱
  • 配列をガチャガチャ操作したいなら、Office Scriptなどに任せよう(可能であれば)
  • Power Automateの配列は末尾の追加だけはできる、ある種 const 、readonlyなオブジェクトと考えよう