ADVERTISEMENT

【Power Automate】ソリューション内フローでつまずく時の入力値と条件分岐の直し方

【Power Automate】ソリューション内フローでつまずく時の入力値と条件分岐の直し方
🛡️ 超解決

Power Automateのソリューション内でフローを作成・修正しているとき、意図したとおりに動作せず「どこを直せばいいのかわからない」という状況に陥ることがあります。特に、トリガーやアクションで渡される入力値が想定と異なる場合や、条件分岐の設定が複雑なときに、修正箇所を見失いがちです。この記事では、ソリューション内フローでつまずきやすいポイントを整理し、具体的な直し方をステップごとに解説します。実際の業務で役立つ切り分け方法や注意点も含めているので、トラブルシューティングの参考にしてください。

【要点】この記事で確認すること

  • 最初に見る場所: フローの実行履歴で各アクションの入力値と出力値を確認し、想定と実際の値の違いを把握します。
  • 切り分けの軸: トリガーから渡される動的コンテンツの有無、条件式の構文、ソリューション内の環境変数・参照関係の3つに分けて確認します。
  • 注意点: ソリューション内フローでは環境変数やコネクタ参照が他のソリューションと競合する可能性があるため、安易な値の変更は避け、必ずバックアップを取ってから修正してください。

ADVERTISEMENT

ソリューション内フローでつまずく原因の特定

ソリューション内フローが正しく動作しない原因は、大きく分けて「入力値の問題」「条件分岐のロジックミス」「環境設定の不整合」の3つです。それぞれの原因を特定するための手順を説明します。

実行履歴で実際の値を確認する

フローの実行履歴を開き、各アクションの「入力」と「出力」を確認してください。例えば、SharePointの「アイテムの取得」アクションでIDが空になっている場合、トリガーで正しくIDが渡されていないことがわかります。実行履歴はフローの「28日間の実行履歴」から参照でき、失敗したフローだけでなく成功したフローも確認することで、正常時の値と比較できます。

動的コンテンツの値が空の場合の対処

トリガーやアクションから動的コンテンツを選択したが、値が空で渡されるケースがあります。原因として、トリガーのスキーマが更新されていない、または選択した項目がコレクション型であることが考えられます。対策として、トリガーの設定を開き「新しいパラメーターの追加」から必要な項目を明示的に追加するか、解析JSONアクションを使って値を整形します。

問題の症状 考えられる原因 確認すべき箇所
トリガーからの動的コンテンツが空 トリガーの出力スキーマに項目が含まれていない トリガーの「設定」→「スキーマ」を確認
条件分岐で常にfalseになる 比較演算子の誤り、データ型不一致 式エディタで実際の値と型を確認
環境変数が反映されない ソリューションの既定値が未設定、または別環境で値が異なる ソリューションコンポーネントの環境変数一覧

条件分岐の直し方:構文とデータ型

条件分岐が正しく評価されない原因として、構文エラーやデータ型の不一致が頻繁に発生します。ここでは具体的な修正手順を説明します。

式エディタでの比較演算子の確認

Power Automateの条件アクションでは、式を使って複雑な条件を記述できます。例えば、数値の比較では「@greater(変数, 100)」のように関数を使います。文字列の比較では「@equals(triggerOutputs()?[‘body/Title’], ‘承認’)」のようにします。よくある失敗として、比較する値の前後に不要な空白が含まれているケースがあるので、trim関数を使って除去してください。

  1. フローの編集画面で条件アクションをクリックし、「編集」を選択します。
  2. 条件ボックス内の左側のフィールドで、動的コンテンツまたは式を選択します。
  3. 右側のフィールドで比較する値を直接入力するか、動的コンテンツを選択します。
  4. 真の場合と偽の場合のアクションを設定します。
  5. 保存後、フローをテスト実行し、実行履歴で条件の結果を確認します。

データ型不一致による失敗

数値と文字列の比較は、暗黙の型変換が行われずエラーになることがあります。例えば、SharePointの数値列から取得した値は数値型ですが、条件式で文字列として比較すると「式は無効です」と表示されます。対策として、int関数やstring関数を使って明示的に型変換を行います。また、空文字列とnullの扱いにも注意が必要です。

ソリューション内でよくある失敗パターン

ここでは、実際に多くのユーザーが遭遇する失敗例を3つ紹介します。それぞれに対して具体的な修正方法を示します。

失敗パターン1: 環境変数の値が反映されない

ソリューション内で使用する環境変数を設定したのに、フロー実行時に意図した値が使われない場合があります。原因として、環境変数の「既定値」が空欄のままソリューションをエクスポートした、または別の環境にインポートする際に値の設定を忘れたことが考えられます。修正方法は、ソリューションの「環境変数」コンポーネントを開き、現在の環境で適切な値を設定してください。フロー内で環境変数を参照しているアクションを確認し、正しく設定されているかもチェックします。

失敗パターン2: 複数条件の優先順位を誤る

条件アクションを入れ子にする際、AND条件とOR条件の組み合わせで思わぬ結果になることがあります。例えば、「ステータスが承認済み かつ 金額が10000以上」という条件を設定したい場合、条件アクションの「追加」から「グループを追加」を選び、グループ内でAND条件を指定します。間違ってグループを使わずに複数の条件を直列に並べると、すべての条件を満たす必要があるAND条件ではなく、一部がtrueで全体がtrueになる誤ったロジックになるので注意してください。

失敗パターン3: ループ内の条件分岐でインデックスを間違える

Apply to eachループ内で条件分岐を使う場合、ループのアイテムプロパティを正しく参照しないと、すべての要素に同じ条件が適用されてしまいます。例えば、items(‘Apply_to_each’)?[‘Status’]のように、現在のループのアイテムを指定する必要があります。ループ内でitem()関数を使うのも有効です。よくあるのが、ループの外で定義した変数を使って条件比較し、結果が全要素で同じになるミスです。

管理者に確認すべき設定項目

社内のPower Automate環境でソリューション内フローが正常に動作しない場合、管理者が確認すべき設定があります。以下の項目をリスト化しましたので、必要に応じて参照してください。

  • データ損失防止(DLP)ポリシー: 特定のコネクタがフローで使用禁止になっていないか確認します。ソリューション内フローがDLPポリシーに違反していると、実行時にエラーの原因になります。
  • ソリューションのコンテキスト: ソリューション内フローは、同じソリューション内の環境変数やコネクタ参照に依存します。他のソリューションと競合していないか、一意の名前が付けられているか確認が必要です。
  • ライセンスと割り当て: フローを実行するユーザーに適切なPower Automateライセンスが割り当てられているか確認します。特にプレミアムコネクタを使用する場合は、ライセンス要件を満たしている必要があります。
  • 環境のリージョンと制限: クラウドフローの実行頻度やAPI呼び出し制限に引っかかっていないか確認します。制限を超えるとフローが節約モードになり、遅延や失敗が発生します。

よくある質問(FAQ)

読者から寄せられる質問をQ&A形式でまとめました。

Q1: ソリューション内フローを編集しようとするとロックされています。どうすればいいですか?
A1: 他のユーザーが同じフローを編集中の場合、ロックがかかることがあります。強制チェックアウトは推奨されないため、編集者に連絡するか、フローのバージョン履歴から復元してください。管理者はソリューションの「最新の変更を破棄」を実行できますが、他のユーザーの変更が失われる可能性があります。

Q2: 条件分岐で式が正しいのに実行時エラーになります。どうしてですか?
A2: 式が正しくても、参照している動的コンテンツの値がnullや空文字列の場合、エラーになることがあります。実行履歴でそのアクションの入力を確認し、値が存在するか確かめてください。また、式内で「?」を使って安全な参照(例:@triggerOutputs()?[‘body/value’])をすることで、nullを無視できます。

Q3: 環境変数を変更したのにフローに反映されません。なぜですか?
A3: 環境変数はフローの実行時に最新の値が読み込まれます。ただし、フローが長時間実行中の場合など、キャッシュされた古い値を参照することがあります。フローを無効にして再度有効にするか、数分待ってから再実行してください。

まとめ

ソリューション内フローでつまずく場合、まず実行履歴で実際の入力値と出力値を確認することが基本です。条件分岐の直し方としては、データ型の一致と演算子の正しい使い方、そして環境変数の設定状態をチェックする必要があります。失敗パターンとして、環境変数の反映漏れ、複数条件の優先順位ミス、ループ内のインデックス誤りがよくあります。管理者はDLPポリシーやライセンス割り当てなど、組織全体の設定も確認することで、問題の根本解決につながります。本記事の手順を参考に、フローを一つずつ検証し、安定した動作を目指してください。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT