ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

Power Automateを使って配列から特定のプロパティを取得して、プロパティ名の無い配列を作成する

Power Automate のTIPSです。
これのやりかたを知らなくて今まで遠回りしたやりかたで配列を作成していました。備忘録を兼ねて投稿します。

やりたいこと

今回やりたいことは掲題の通り、「配列から特定のプロパティを取得すること」です。そしてそれをもとに「プロパティ名の無い配列を作成すること」です。


"元の配列"と"新しく作成する配列"を以下の通りとします。
 ※分かりやすくするために要素の数は2個に絞っています。

元の配列:

[
  {
    "Title": "The Landing",
    "SiteUrl": "https://m365x000309.sharepoint.com",
    "StorageQuota": 27487790694400,
    "StorageUsed": 95157339,
    "StorageUsedPercentage": "0.00000346180382621242",
    "TemplateName": "SITEPAGEPUBLISHING#0"
  },
  {
    "Title": "Leadership Team",
    "SiteUrl": "https://m365x000309.sharepoint.com/sites/leadership",
    "StorageQuota": 27487790694400,
    "StorageUsed": 47860528,
    "StorageUsedPercentage": "0.00000174115586560220",
    "TemplateName": "GROUP#0"
  }
]


これを入力情報にして以下の通りの配列を出力します。元の配列のSiteUrlというプロパティを抜き出します。

出力する配列:

[
 "https://m365x000309.sharepoint.com",
 "https://m365x000309.sharepoint.com/sites/leadership"
]

まずは結論から:「選択」アクションでプロパティ名を指定しなければいい

「選択」アクションでプロパティ名を指定しなければ、値だけの配列が作れます。

配列から特定の値を取得する、と聞いて「(´・ω・`) "選択"アクションを使えばいいのでは?」とすぐわかったかたも多いと思います。


私も"選択"アクションを使うことまでは知っていたのですが、プロパティ名をいれない方法がわからずとても遠回りした方法でプロパティ名を抜いていました。

やりかたを以下に解説します。

正しいやりかた

「開始」欄に元の配列をいれます。

「マップをテキストモードに切り替える」をクリックします。すると「マップ」欄が2列から1列に変わります。

「マップ」欄に式入力モードで item()?['SiteUrl'] を入力します。これで完了です。

フローを実行すると、プロパティ名の無い配列が正しく作成されたことが分かります。

誤ったやりかた

比較のために誤ったやりかたも提示します。

「開始」欄に元の配列をいれます。ここは一緒です。

テキストモードに切り替えないまま、値に式入力モードで item()?['SiteUrl'] を入力します。キーは空白値にします。空白値にしてもエラーにはならずにフローを保存できます。

フローを実行します。プロパティ名が空文字の配列が作成されてしまったことが分かります。
(´・ω・`) コレジャナイ感

捕捉:「選択」アクションのテキストモードは「配列変数に追加」アクションに似ている

Power Automate で配列を操作する場合に、「選択」アクションの本質は入力された配列の要素の数だけ繰り返し処理を行う「配列変数に追加」アクションである、と考えると「選択」アクションが活用しやすくなります。これについては別投稿で「選択」アクションと「作成」アクションにフォーカスして改めてまとめたいと思います。

「選択」アクション(テキストモード):

「配列変数に追加」アクション:

以上です。