【PowerAutomate】ソートするフローを作る。配列の並べ替え。

スポンサーリンク




作業を自動化する
  • プログラミングは分からないけど自動化したい
  • PowerAutomateの使い方がイマイチ分からない
  • 配列をソートしたい

無料ツールでさらにノンプログラミングで自動化ができるならぜひやってみたい!

この記事では、そんな方に向けて配列をソートする方法を3ステップで説明します。

  • 配列をソートするフロー
  • ソートのやり方
  • フローを作る
みずしぶき
みずしぶき

この記事を読めば、フローを使ったソート方法が分かるようになります。

まだPowerAutomateを使った事が無いという方はこちらの記事を参考にしてください。

PowerAutomateはブラウザで操作するのでインストール無しで利用できます。Windows10ではないMacユーザも自由に使えます。

私がPowerAutomateの勉強で実際に読んだ本を紹介します。

スポンサーリンク

配列をソートするフロー

ソートするフロー


フローの内容は後で説明するので、このフローで動くんだ。くらいで見ておいてください。

(1)ソート前

日付がバラバラで入っています。

(2)昇順ソート後

古い日付から新しい日付の順番に並び替えされました。

(3)降順ソート後

新しい日付から古い日付の順番に並び替えされました。

みずしぶき
みずしぶき

条件を1箇所変えるだけで昇順・降順どちらもできます。

ソートのやり方

PowerAutomateにはソートするアクションや、関数がありません。
なので今回はバブルソートと呼ばれるアルゴリズムを参考にフローを作成しました。

バブルソート(英: bubble sort)は、隣り合う要素の大小を比較しながら整列させるソートアルゴリズム。

https://ja.wikipedia.org/

ソートの動きを簡単に説明します。

日付を昇順(小さい順)にソートする動き
①2つを比較

2022/7/15
2022/7/13
 ←小さい
2022/7/14
2022/7/12


②小さいほうを新しい配列に入れる

2022/7/13


③2つを比較

2022/7/15
2022/7/14 ←小さい
2022/7/12


④小さいほうを新しい配列に入れる

2022/7/13
2022/7/14


⑤2つを比較

2022/7/15
2022/7/12 ←小さい


⑥小さいほうを新しい配列に入れる

2022/7/13
2022/7/14
2022/7/12


⑦1つ残る

2022/7/15


⑧残った1つを新しい配列に入れる

2022/7/13
2022/7/14
2022/7/12
2022/7/15

①~⑧が1セットです。最後にできた新しい配列を使い①から繰り返します。
繰り返す回数は配列に入っているデータの個数です。この例の場合は4回繰り返すとソートが完了します。

みずしぶき
みずしぶき

ここ分からなければ、読み飛ばしてOK!

スポンサーリンク

フローを作る

これから作るフローです。
複雑なのでパーツ毎に分けて作成していきます。

  1. 変数を初期化
  2. 1つめのループ
  3. 2つめのループ:はいの場合
  4. 2つめのループ:いいえの場合

今回使うアクションは6種類です。

  • データ操作:作成
  • 変数:変数を初期化する
  • 変数:変数の設定
  • 変数:配列変数に追加
  • コントロール:Apply to each
  • コントロール:条件

使い方は作りながら見ていきましょう。それではフローを作っていきます。
まだ画面を開いていない方はMicrosoftの公式サイトからPowerAutomateを開いてください。

画面左にある作成から「インスタントクラウドフロー」を選択。
次の画面で「手動でフローをトリガーします」を選んで作成します。

(1)変数を初期化

4つ続いている「変数の初期化」のアクションを設定します。

新しいステップから変数の「変数を初期化する」を4回選択します。

変数-変数を初期化する

1つめ:変数を初期化する
ソートする配列を準備します。
アクションの名前を「ソートする配列」に変更、3か所設定。
※アクションの名前は「…」にある名前の変更を押して下さい。

名前:日付リスト
種類:アレイ
値 :[“2022/7/15″,”2022/7/13″,”2022/7/14″,”2022/7/12”]
   ※画像のようにスペースや改行する必要はありません。

2つめ:変数を初期化する
別の変数の値を消す為に使います。
アクションの名前を「空白」に変更、3か所設定。

名前:空白
種類:文字列
値 :※何も入力しません。

3つめ:変数を初期化する
2つのデータを比較する為に前のデータを入れておく箱です。
アクションの名前を「比較データ」に変更、3か所設定。

名前:比較1
種類:文字列
値 :※何も入力しません。

4つめ:変数を初期化する
比較したデータを入れる箱です。
アクションの名前を「ソート処理用配列」に変更、3か所設定。

名前:ソート処理用配列
種類:アレイ
値 :動的なコンテンツの「日付リスト」を選択

(2)1つめのループ

ここでは配列を指定してそのデータ数だけ繰り返すようにします。
フローの中に2つめのループがありますが、まずは1番下の「余ったデータを入れる」まで作ります。

新しいステップでコントロールの「Apply to each」を選択。

コントロール-Apply to each

動的なコンテンツにある「日付リスト」を選択。
「日付リスト」のデータ数だけ2つめのループを実行させます。

新しいステップで変数の「変数の設定」を選択。

変数-変数の設定

アクションの名前を「比較を空にする」に変更、2か所設定。

名前:比較1
値 :動的なコンテンツの「空白」を選択

比較1は2つめのループでデータを入れて使います。ループに入る前に綺麗にしておきます。

新しいステップでコントロールの「Apply to each」を選択。

コントロール-Apply to each

動的なコンテンツにある「ソート処理用配列」を選択。
※この中のフローは後で作ります。

新しいステップでデータ操作の「作成」を選択。
※「アクションの追加」ではなく、その下にある「新しいステップ」を選んでください。

データ操作-作成

アクションの名前を「余ったデータを入れる」に変更、2か所設定。

名前:ソート処理用配列
値 :動的なコンテンツの「比較1」を選択

ループ(Apply to each 2)の中の比較で選ばれなかったデータを配列に入れます。

(3)2つめのループ:はいの場合

2つめのループの中の「はいの場合」まで作成します。
このループでは比較をしますが、1番目のデータは比較対象がありません。2番目になってようやく1番目と比較ができるからです。
ここでは配列の1番目かどうか判断して、1番目なら比較1にデータを入れます。また比較結果を入れる箱を空にします。

みずしぶき
みずしぶき

「はいの場合」は、1番最初のデータだった場合の処理になります。

アクションの追加でコントロールの「条件」を選択。

コントロール-条件

3つ設定します。

左:式へ length(variables(‘比較1’))
中:次の値に等しい
右:0

この式は「比較1」が空だった場合、「はい」になります。
lengthは文字数を返す関数なので、0になれば空だと分かります。

式の説明

length(variables(‘比較1’))

  • variables(‘比較1’) 変数の名前’比較1’の値を返します。
  • length ()の中にある文字の数を返します。 length(‘てすと’)は3

新しいステップで変数の「変数の設定」を選択。

変数-変数の設定

アクションの名前を「比較にデータを入れる(1番目)」に変更、2か所設定します。

名前:比較1
値 :Apply to each 2の「現在のアイテム」

アクションの追加で変数の「配列変数に追加」を選択。

変数-配列変数に追加

アクションの名前を「比較にデータを入れる(1番目)」に変更、2か所設定します。

名前:ソート処理用配列
値 :[]

[]は配列を空にします。

みずしぶき
みずしぶき

次が最後。フロー完成は目の前です!

(4)2つめのループ:いいえの場合

2つめのループの中の「いいえの場合」まで作成します。
ここでは2つのデータを比較して(昇順であれば)小さい方を配列に入れます。
そして、大きい方は次の比較で使うため比較1へ入れておきます。

アクションの追加でコントロールの「条件」を選択。

コントロール-条件

アクションの名前を「比較1<=現在のアイテム(昇順)」に変更、3か所設定します。

左:比較1
中:次の値以下 ※昇順の場合
右:動的なコンテンツのApply to each2の「現在のアイテム」

降順にしたい場合は「中:次の値以上」にします。

「はいの場合」にあるアクションの追加から変数の「配列変数に追加」を選ぶ。

変数-配列変数に追加

アクションの名前を「配列変数に追加」に変更、2か所設定します。

名前:ソート処理用配列
値 :比較1

アクションの追加から変数の「変数の設定」を選択。

変数-変数の設定

アクションの名前を「比較にデータを入れる(2番目以降)」に変更、2か所設定します。

名前:比較1
値 :動的なコンテンツのApply to each2の「現在のアイテム」

「いいえの場合」にあるアクションの追加から変数の「配列変数に追加」を選ぶ。

変数-配列変数に追加

アクションの名前を「配列変数に追加3」に変更、2か所設定します。

名前:ソート処理用配列
値 :動的なコンテンツのApply to each2の「現在のアイテム」

フローの1番下の新しいステップからデータ操作の「作成」を選択。

データ操作-作成

動的コンテンツから「ソート処理用配列」を選択。

フローはこれで完成です。お疲れ様でした。

完成したフロー全体像

フローが複雑なので間違えていないか確認してください。

まとめ

配列をソートする方法を3ステップで説明しました。

  • 配列をソートするフロー
  • ソートする仕組み
  • フローを作る

PowerAutomateには配列をソートするアクションはありません。今回はバブルソートと呼ばれる手法をフローで作成してソートを実現しました。処理によってソートしたい場面はでてくると思うので覚えておきましょう。

PowerAutomateの記事まとめ
まだ試してないアクションがあれば見ておきましょう。
初心者向け
【初心者向け】PowerAutomateの使い方。無料で誰でも使えます。
基本的なアクション
【PowerAutomate】メールの添付ファイルをOneDriveへ保存する。
【PowerAutomate】Excelのデータをメールで送信する。
【PowerAutomate】メールを受信したらExcelにデータを入力する。
アクションの応用
【PowerAutomate】第1~5○曜日の日付を求める。
【PowerAutomate】メール本文から名前を抽出する。文字列抽出のキホン。
【PowerAutomate】ソートするフローを作る。配列の並べ替え。
【PowerAutomate】SharePointのリストから列と行をフィルターして表にする。
【PowerAutomate】ExcelからSharePointのリストに一括転記する
【PowerAutomate】SharePointのテキストファイルに改行を付けてメール送信
関数・アクション
【PowerAutomate】日付の関数まとめ。月末月初やExcelシリアル値変換など。
【PowerAutomate】Apply to eachの使い方。勝手に出てくる原因や遅い時の高速化など!

今の勉強法に満足していますか?
やりたい事はネットで調べてなんとか対処しているという方が多いと思います。

私も元々はネットから情報を得ていましたが、知識が少な調べる事ばかりで作業が進まなく悩んでいました。一度専門書を買ってみると勉強に集中できネットより遥かに理解が早かったと感じました。

とはいっても何冊も本を買うとお金も場所も取ります。そこでAmazonが提供するKindle Unlimitedという読み放題のサービス。PCやスマホどちらでも使え、月額980円で毎月1~2冊読めば元がとれたので本代の節約になりました。

>>Kindle Unlimitedへ登録する

確かにネットの情報量は多いのでほしい情報は見つかります。でも、ネットで自分の求めている情報を探すのは時間がかかります。気になる事を都度調べるのは効率悪くないですか?

ではどうしたらいいのでしょうか。

それは基礎知識を学ぶ事です。
専門書は初心者向けから上級者向けまでレベル別で出版されているので、求めている内容がそこにありました。

Kindle unlimitedはラインナップが勝手に変わるという予測できない点はありますが、読みたくなった今すぐに読める点が私にはドハマりでした。

初回30日無料なので今すぐに読みたい本がある方はお試しでも利用できます。Kindle Unlimitedは200万冊以上の本が読めるそうです!

ネットの検索時間から解放され、本来の目的に集中しましょう。

\30日間無料/

タイトルとURLをコピーしました