はじめに
PowerAutomate上で数値を指定した書式の文字列に変換する場合、FormatNumber関数を使用して型を整えることができます。
3桁ごとにカンマ区切り | formatNumber(12345678,'#,#','ja-jp') formatNumber(12345678,'N0','ja-jp') |
12,345,678 |
---|---|---|
円表示 | formatNumber(12345678, 'C2', 'ja-jp') | ¥12,345,678.00 |
10桁固定 | formatNumber(12345678,'D10','ja-jp') | 0012345678 |
ただしFormatNumber関数を使用する際、数値がない(空白を含む)データを扱う場合に注意が必要で、空白があるとFormatNumber関数は数値として解釈できず、フローにエラーが発生します。
今回は空白があってもフローにエラーを出さず、値があれば正しくフォーマットする式を解説します。
手順
-
エラーがでる挙動の確認
リストとフローを用意してどのようなエラーがでるか再現してみます。
今回はSharepointリストの「項目が作成されたとき」をトリガーにして、数値列(Number1とNumber2の二つ)の内容をメールに差し込む形にしたいと思います。 -
エラーが出る式の設定
3桁区切りの型に変換するようFormatNumber関数を指定して保存します。
挙動のテストとして、SharepointリストのNumber1列に「12345678」、Number2列に「987654321」と入力した場合、メールでは以下のようにフォーマットされた数値が表示されました。
次はNumber1列に「1234578」、Number2列は何も入力しない場合の挙動を確認します。
フローがエラーとなりました。エラー内容は以下の通りです。
Unable to process template language expressions in action '共有メールボックスからメールを送信する_(V2)' inputs at line '0' and column '0': 'The template language function 'formatNumber' expects its first parameter to be an integer or a decimal number. The provided value is of type 'Null'. Please see https://aka.ms/logicexpressions#FormatNumber for usage details.'.つまりは「指定されたフィールドの型が 'Null' になっています」とのことです。
-
FormatNumber式を修正
FormatNumber式をそれぞれ以下の式に修正します。
if(equals(triggerBody()?['Number●'], null), null, formatNumber(triggerBody()?['Number2'], 'N0', 'ja-jp'))
「Number1(もしくはNumber2)」が空白でない場合、3 桁ごとにカンマで区切った形式でフォーマットし、値が空白であればnull を返します。 -
動作の確認
これでフローの設定は完了です!空白のデータでもフローエラーで止まることなく実行することができました。
まとめ
空白があってもエラーを回避しつつ、データがある場合には正しくフォーマットすることができました。フローが正しく動作するか確認するときは、空白データでも正しく動くかなど様々なパターンで確認しましょう!