はじめに
Power Automate では、変数の値を更新するときにその変数を自己参照ができません。例えば、ループ変数の更新のような「x=x+1」という処理をそのまま書くことができません。そこで、この記事ではこの対処方法について2つのパターン分けて紹介します。
変数の自己参照によるエラー
1で初期化した変数xに1を足してx=2に更新する、先ほど例に挙げた「x=x+1」の処理をするフローを作成します。
add(variables('x'),1)
すると、変数の自己参照を含むこのフローを保存するときに下記のエラーが出ます。変数xの更新においてその変数の自己参照はサポートされていないという内容です。
The inputs of workflow run action '変数の設定' of type 'SetVariable' are not valid. Self reference is not supported when updating the value of variable 'x'.
それでは、このエラーにどのように対処すればいいのでしょうか?
足し算と引き算の場合
足し算、引き算には専用のアクションがあるため、以下の2つを使用することで自己参照を避けることができます。
① アクション:変数の値を増やす(足し算)
② アクション:変数の値を減らす(引き算)
「変数の値を増やす」と「変数の値を減らす」には負の値を入力することもできます。入力する値が常に絶対値で与えられる場合はこの2つを使い分ければいいですが、そうでない(負の値をもつ)場合はどちらかに統一して使用することが望ましいです。
掛け算と割り算の場合
掛け算と割り算には専用のアクションがないため、一度、対象の変数の値をコピーして再利用することで自己参照を避けることができます。ここでは、変数の値をコピーする方法を2つ紹介します。
① アクション:作成
mul(output('出力'),2) // output('出力')に2を掛ける -> 1×2=2
② アクション:変数の初期化
div(variables('temp'),2) // variables('temp')を2で割る -> 2÷2=1
複数の処理で変数の値をコピーする場合は「変数の初期化」で変数temp(temporary)を定義して繰り返し使用する、そうでない場合は「作成」で一度だけ使用するなどの使い分けが考えられます。
おわりに
今回は、Power Automate で変数を自己参照した際のエラーとその対処方法について紹介しました。Power Automate では直接的な自己参照がサポートされていないため、特定のアクションを使って間接的に変数操作を行う必要があります。この記事が少しでも皆さんの課題解決に繋がれば幸いです。