LoginSignup
9

posted at

updated at

Power Automate 2022年9月に追加された強力な新関数の紹介

概要

2022年9月に、PowerAutomateへ以下の関数が追加されました。

  • sort
  • reverse
  • chunk
  • isInt
  • isFloat
  • dateDifference

紹介の Power Automate ブログは以下

私は Hiroさんのツィートで知りました。いつもありがとうございます!

Hiroさんもヤバいとおっしゃってますが、これらの関数は現在の Power Automate において、とても強力なのです!
その革新的な機能を紹介できればと思います。

sort()

配列の構造を持つ、コレクション内のアイテムを昇順(asc)に並べ替えることができます。ソートキーとしてカラムを指定可能です。
ソートの対象は Array ([ ]で囲まれたコレクション)である必要があります。
降順(desc)に並べる場合は、後述の reverse() 関数と組み合わせてください。

リファレンスはこちら

sort関数が無かった時代、処理速度の遅いループ処理を使わずに、コレクションをソートするには一工夫する必要がありました。

関数一つで手軽にソート機能を利用できるようになったのはとても便利です。
ただし、上記blogの手段は、独自のソートキーを利用したソートを実施するには有効な手法です。
(たとえば、アルファベット⇒数字の順に並べる)

- 配列のソート

単一な配列へのソートは、第一パラメータのみ指定します

sort([<collection>])

image.png

- テーブルのソート

カラムを持つ配列に対しては、ソートフィールドとしてカラムを指定する必要があります。

sort([<collection>], <sortBy>?)

image.png

第2パラメータのソートフィールドに複数のカラムを指定することは、現在のところ不可能なようです。
もし、指定方法をご存じでしたら教えてください。

例) sort(outputs('table'),'col1','col2') はエラーとなります

reverse()

コレクション内の項目の順序を逆にします。

reverse([<collection>])

image.png

sort() と組み合わせると、コレクションを降順(desc)にソートできます。

reverse(sort([<collection>]))

image.png

chunk()

文字列または配列を同じ長さのチャンクに分割します。

- 文字列のチャンク

文字列をチャンクすると、第2パラメータで指定した長さ毎に、単一な配列が返ります。

chunk('<collection>', '<length>')

image.png

- 配列のチャンク

配列をチャンクすると、指定した長さ毎に要素を分割した配列が返ります。

image.png

chunk('[collection]', '<length>')

- テーブルのチャンク

当然、テーブル構造を持つコレクションのチャンクも可能です。

image.png

- チャンクの活用方法

使いどころとしては、文字列を1文字ずつに分割する等、が思いつきます。
[選択]アクション + range() + substring() が必要だった処理を、関数一つで実現できるようになるのは便利ですね。

上記のソートもですが、こういうロジックを考え公開してくださるHiroさんには感謝しかありません。

isInt()

文字列が整数かどうかを示すブール値を返します。引数は文字列型である必要があります。

isInt('<string>')

isFloat()

文字列が浮動小数点数であるかどうかを示すブール値を返します。第1引数は文字列型である必要があります。

不変カルチャを使用したチェックの場合は、第2パラメータの指定は不要です。

isFloat('<string>')

ロケール固有の形式で表される浮動小数点数を識別するには、オプションで第2引数に RFC4646ロケール・コード を指定するとのことです。

isFloat('<string>', '<locale>'?)

dateDifference()

こちらも待望の関数ですね。

2 つのタイムスタンプの差をタイムスパンとして返します。
endDateからstartDateを減算し、結果を文字列形式でタイムスタンプとして返します。
日付の形式は、ISO 8601 に準拠していれば、正常に動作することを私の環境で確認しています。

dateDifference('<startDate>', '<endDate>')

日付の比較を行うと、差分の日数が返ります。
startDate が endDate より未来の場合、マイナス値が返ります。

image.png

また、戻り値のフォーマットでお気づきだと思いますが、時間の計算も可能です。

image.png

時間の計算は、リファレンスに記載がない(2022/09/25)機能のため、自己責任でご利用ください

まとめ

待望の、非常に利便性の高い、強力な関数が追加されました。
Power Automate の利用が捗りますね!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9