概要
どうやってたっけ?となることがたまにあるので、備忘録
コネクター
選択(Select)
データの再構築に。MS の以下の例を見れば分かりやすいかと。
実はオブジェクト再構築だけじゃなく、簡単に単純配列化も出来ます。
配列化することで、Key 項目の一意化も楽に。
とはいえ、Automate だけで頑張るのは大変なので Office Scripts に任せた方が楽だったりしますけど・・。
やり方は以下のように、Map 方法を Text Mode にして、単純に配列化したい項目を指定するだけ。
配列化の例
item()?['user']
フィルター配列(Filter Array)
普通に配列のフィルターが使えます。
複数条件でのフィルター方法
and/or を嚙ませることで、細かい条件指定をすることも可能です。
やり方は、Advanced Mode にして、以下のように条件を複数指定するだけ
複数条件の例
@and(equals(items('Apply_to_each'), item()?['user']), equals(item()?['reactionType'], 'like'))
関数
基本はここ
コレクション関数 | メモ | |
---|---|---|
chunk | 文字列またはコレクションを等しい長さのチャンクに分割します。 | 一定数毎のLoopを行う際の事前分割。 payload is too large の回避例 |
contains | コレクションに特定の項目があるかどうかを確認します。 | - |
empty | コレクションが空かどうかを調べます。 | - |
first | コレクションから最初の項目を返します。 | - |
intersection | 指定したコレクションすべてに共通する項目 "のみ" を含むコレクションを返します。 以下記事を参考に PowerAutomate: 配列の積集合を取得する(ホワイトリストにある要素だけを抜き出す) |
|
item | 配列に対する繰り返しアクションの内部で使うと、アクションの現在の繰り返しの間に配列の現在の項目を返します。 | ループ時のCurrent Item |
join | 配列の "すべて" の項目を含み、指定された区切り記号で各項目が区切られた、文字列を返します。 | 配列から文字列への変換 |
last | コレクションから最後の項目を返します。 | - |
length | 文字列または配列内の項目の数を返します。 | - |
reverse | コレクション内の項目の順序を逆にします。 sort() とともにこの関数を使用すると、コレクションを降順で並べ替えることができます。 | - |
skip | コレクションの先頭から項目を削除し、"他のすべて" の項目を返します。 | - |
sort | コレクション内の項目を並べ替えます。 単純型を含む任意のキーを使用して、コレクション オブジェクトを並べ替えることができます。 | ー |
take | コレクションの先頭から項目を返します。 | - |
union | 指定した複数のコレクションの "すべての" 項目を含む 1 つのコレクションを返します。 | Concat().Distinct() |
応用
概要 | 方法 | |
---|---|---|
Distinct | Union() に同一配列を設定で、重複削除可能 例) union(variables('Json1'),variables('Json2'))
|
|
Except 差集合 1 | 二重ループとかで対処 実装例 at 英語サイト |
|
Except 差集合 2 | Office Scriptsで実現 詳細はこちら |
|
Except 差集合 決定版 |
Select & Filter Array で簡単に超高速 詳細はこちら |
|
Join マージ | 1. Except()と同様にLoopで・・ 2. Office Scriptsで・・・面倒そう |
|
配列同士での Exists() | Empty(Intersection(Array1, Array2)) で、空で非存在。処理したいリストに対してLoopをかけるのではなく積で対象を見つけて処理すると良さげ |
あとがき
思い出しつつ追記することにしよう・・
keyword
how to modify collections by functions and connectors