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

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

【解説編その3】プレミアムアクションを使わずAzureADアプリも作らずにPower AutomateでMicrosoft TeamsのスレッドをCSVに保存する

掲題のフローの解説編その3です。

フローはGitHubで公開しています。
github.com

この投稿は、
解説編その1 解説編その2 の続きです。

概要編はこちらです。

この回で解説する範囲

解説する範囲のフロー図

この回で解説する範囲のフロー図は以下の通りです。

今回の範囲の目的

今回の範囲の目的は、解説編その2 の出力として得た投稿一覧のデータを、最終更新日時の昇順に並べかえることです。

解説編その2 で得た投稿一覧のデータ

この範囲で解説するステップ

この範囲で解説するステップは以下の通りです。

  1. "投稿一覧のデータを並び替えたもの"を格納するための配列変数を初期化
  2. 繰り返し処理(Apply to each)を使って並べ替えを行えながら配列変数に配列を追加

解説

1.投稿一覧のデータを並び替えたものを格納するための配列変数を初期化

これは「変数」>「変数を初期化する」アクションです。後続のステップで並び替えを行ったデータを格納するための箱をつくります。

2.繰り返し処理(Apply to each)を使って並べ替えを行えながら配列変数に配列を追加

解説編その2 で得た投稿一覧のデータを、並び替えを行えながら配列変数に格納します。繰り返し処理(Apply to each)内の変数と式は下図の通りです。
  ※文字がぼやける場合はクリックして拡大表示してください

このApply to each では、1回ループするごとに"並び替え前の配列"の値をひとつずつ"並び替え後の配列"に格納しています。

この並び替えは下記ブログで紹介されている方法を使用しています。
johnliu.net


この図で仕組みがピンとこない場合は、下記ページの「挿入ソート」の解説を先に読んでから改めて図を見ると理解しやすいと思います。
products.sint.co.jp


ループごとの処理の最後に、3つの配列をunion関数マージして作成した配列を"並び替え後の配列"に格納しています。"現在のアイテム"は仕組み上必ず単数なので、マージを行うためにcreateArray関数によって長さが1の配列に変換している点がポイントです。

  • ”現在のアイテム”の日付以下の配列(複数の場合あり)
  • ”現在のアイテム”(単数)
  • ”現在のアイテム”の日付より未来の配列(複数の場合あり)

"name": "並び替え後の配列",
"value": "@union(body('アレイのフィルター処理'),createArray(item()),body('アレイのフィルター処理_2'))"


いま、仕組みをすっきり理解できない場合でも、この方法を使うと「Power Automateの配列を特定のプロパティ(数値、日付など)で並び替えできる。昇順にするか降順にするかも指定できる」ということを覚えておけば大丈夫かと思います。今後並べ替えが必要になったときに「そういえば並べ替えの方法があったな」と思い出してみてください。

今回の範囲の結果として得られるもの

今回の範囲で得られるものは、投稿一覧のデータを最終更新日時の昇順に並べかえたものです。

これでCSVに出力したいデータを入手できました。後続の処理ではこれをCSVに出力したうえでチャットで通知します。こちらについては次回解説します。次回がこのフローの解説の最終回です。

今回は以上です。

追記:解説編その4を投稿しました。

wataruf.hatenablog.com

追記:GitHubで公開しているフローを更新しました。CSVに含める列を「最終更新日時」から「投稿日時」に変更しました。

「最終更新日時」を基準にした並び順はTeamsのスレッド上の並び順と一致しない場合があるため、出力対象を「投稿日時」に変更しました。