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

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

【Power Automate】【TIPS】JSON配列の値を更新する

下記投稿で解説したフローのなかでJSON配列の値を更新する方法について触れました。この方法は使う機会が多いと思うのでひとつの投稿として切り出して解説をします。
wataruf.hatenablog.com

概要

JSON配列の特定のプロパティを指定して値を更新する方法を解説します。

結論:setProperty関数を使う

Power Automateには setProperty関数があります。setProperty関数を使ってJSON配列の値を更新することができます。

setProperty(【①】,【②】,【③】)
【①】・・・ 更新対象の配列
【②】・・・ プロパティ名
【③】・・・ 設定する値

例:setProperty(variables('サンプルJSON'),'価格',2000)
これは「サンプルJSONという配列変数にある"価格"プロパティの値を2000に更新する」を表します。

解説

フロー図を使って解説します。


まずは配列変数を宣言します。


「データ操作」>「作成」アクションでsetProperty関数を使い、価格プロパティの値を更新します。


この「作成」アクションの出力が以下の通りです。価格プロパティの値が1584から2000に更新されました。


最後に「作成」アクションの出力を「変数」>「変数の設定」アクションを使って配列変数を更新します。


変更が更新されました。OK

ポイント:「作成」アクションと「変数の設定」アクションを組み合わせて使う

フロー図をみて気づいたかたもいると思います。このフローではsetProperty関数を「変数の設定」アクションではなく「作成」アクションで使用しています。

なぜ「変数の設定」アクションでsetProperty関数を使わないのでしょうか。それは使わないのではなく、使えないからです。

「変数の設定」アクションでは"名前"と"値"で同じ変数を使用することができません。これは"循環参照の禁止"です。

ためしに"名前"と"値"に「サンプルJSON」変数をいれてフローを保存しようとすると、、

エラーが発生してフローの保存が行えません。

The inputs of workflow run action '変数の設定' of type 'SetVariable' are not valid. Self reference is not supported when updating the value of variable 'サンプルJSON'.

循環参照を回避するために「作成」アクションと「変数の設定」を組み合わせて使います。

実行できました。

これを応用することによって

「作成」アクションと「変数の設定」の組み合わせは以下のフローでも使用しています。
wataruf.hatenablog.com


この部分です。このフローでは繰り返し処理(Apply to each)のなかで使っています。


このフローでは繰り返し処理のインデクサとしてJSON配列のプロパティで作ったアレイ配列を使用しています。
その繰り返し処理のなかでJSON配列の値を更新することで以下のように配列の値を入力することができます。

繰り返し処理 1週目


繰り返し処理 2週目


繰り返し処理 3週目


繰り返し処理 最終


このように「JSON配列が持つプロパティの値を更新する」という動的な処理を実現することもできます。

配列操作のパターンを覚えると、実現できることが格段に増えます。
(`・ω・´)ノシ


今回は以上です。