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

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

【Power Automate】【クイズ・パズル】【解説編その3】数字の配列で連番部分をルールに従って整形する

掲題のフローの解説編その3です。今回が解説編の最後です。

今回作成したフローをGitHubで公開しました。下記リンク先からダウンロードしてください。
github.com

解説の経緯

今回の投稿は概要編解説編その1解説編その2の続きです。

「解説編その3」の解説する範囲

「解説編その3」解説する範囲は前回に引き続きこの3つです。今回はステップごとの解説をします。

  1. 処理対象である数字の配列を定義
  2. フローで使う変数を定義
  3. 繰り返し処理「連番になっている箇所を配列内配列に置き換える」
  4. 繰り返し処理「配列内配列を『先頭~末尾』の形式に置き換える」
  5. 配列を文字列に変換


入力と出力

繰り返し処理「配列内配列を『先頭~末尾』の形式に置き換える」

入力

入力となる情報は解説編その2の出力である配列です。
連番になっている要素は子配列になっています。

["[1,2,3,4]","[7]","[9]","[11]","[14,15,16]","[18,19]","[21,22]"]

出力

連番を表す子配列を「(連番の先頭)~(連番の末尾)」という形の文字列に置き換えたものを出力します。

["1~4",7,9,11,"14~16","18~19","21~22"]


配列を文字列に変換(「結合」アクション)

入力

繰り返し処理「配列内配列を『先頭~末尾』の形式に置き換える」の出力として得た配列をこのアクションの入力として使います。

["1~4",7,9,11,"14~16","18~19","21~22"]

出力

この配列を「,(カンマ)」を区切り文字として結合したものを出力します。これがこのフローの最終的な出力です。

ステップごとの解説

「Apply to each 2」アクション

このアクションは「コントロール」>「それぞれに適用する」です。

この繰り返し処理のインデクサは解説編その2の出力である配列です。

["[1,2,3,4]","[7]","[9]","[11]","[14,15,16]","[18,19]","[21,22]"]


「作成-このループの入力 2」

このアクションは「データ」>「操作」です。このアクションはフローを実行する際にそれぞれの変数の値を可視化するために配置しています。このアクションを削除しても処理内容には影響ありません。

現在の値: @{items('Apply_to_each_2')}
整形後の配列:@{variables('整形後の配列')}

「作成-現在のアイテムを配列化したもの」

このアクションは「データ操作」>「作成」です。繰り返し処理の現在のアイテムを後続の処理で配列として認識させるためにJSON関数で変換します。

json(items('Apply_to_each_2'))

「条件」

このアクションは「コントロール」>「条件」です。現在のアイテムが連番であるかどうかによって処理を分岐しています。

条件

@length(outputs('作成-現在のアイテムを配列化したもの'))
が次の値に等しい
1


「はいの場合」に実行する処理は以下の通りです。

"name": "整形後の配列",
"value": "@first(outputs('作成-現在のアイテムを配列化したもの

この処理ではフローの最終的な出力である配列に現在のアイテムを要素として追加しています。


「いいえの場合」に実行する処理は以下の通りです。

"name": "整形後の配列",
"value": "@concat(first(outputs('作成-現在のアイテムを配列化したもの')),'~',last(outputs('作成-現在のアイテムを配列化したもの')))"

この処理ではフローの最終的な出力である配列に下記処理で作成した文字列を追加します。
・現在のアイテムの最初の要素(first関数を使用)
・文字列「~」
・現在のアイテムの最後の要素(last関数を使用)

「作成-このループの出力 2」

このアクションは「データ操作」>「作成」です。このアクションは「作成-このループの入力 2」と同じくフローを実行する際にそれぞれの変数の値を可視化するために配置しています。このアクションを削除しても処理内容には影響ありません。

整形後の配列:@{variables('整形後の配列')}

「結合」

このアクションは「データ操作」>「結合」です。繰り返し処理で得た配列を「,(カンマ)」を区切り文字として文字列に変換します。このアクションの出力がこのフローの最終的な出力です。

入力

"from": "@variables('整形後の配列')",
"joinWith": ","

このフローをGitHubで公開しました。(再掲)

フローをGitHubで公開しました。下記リンク先からダウンロードしてください。この投稿の冒頭で記載しているリンクと同じです。
github.com


今回は以上です。