【Power Automate】子フローの戻り値を設定する前に確認したいポイント

【Power Automate】子フローの戻り値を設定する前に確認したいポイント
🛡️ 超解決

Power Automateで親フローから子フローを呼び出すとき、戻り値の受け渡しで思わぬエラーに直面することがあります。特に初めて子フローを設計する場合、戻り値の定義方法やデータ型の不一致に気づかず、原因特定に時間がかかりがちです。この記事では、子フローの戻り値に関するトラブルを未然に防ぐために、設定前に確認すべきポイントを具体例とともに整理します。開発環境と本番環境の違いも考慮しながら、実際の画面構成に沿って解説します。

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

  • 最初に見る場所: 子フローの「応答」アクションの定義と、親フローの「子フローの呼び出し」アクションの出力変数のデータ型
  • 切り分けの軸: 子フロー側の戻り値設定、親フロー側の受け取り設定、環境やコネクタのアクセス権限の3軸
  • 注意点: 会社のポリシーで子フローがソリューション内に制限されている場合、戻り値の公開範囲に影響するためIT管理者への確認が必要

ADVERTISEMENT

1. 子フローの戻り値とは?基本の仕組みとよくある誤解

Power Automateでは、親フローから子フローを呼び出すときに、子フローが処理した結果を戻り値として親フローに返すことができます。この戻り値は、子フローの「応答」アクションで定義します。親フローは「子フローの呼び出し」アクションの出力プロパティから、その値を変数や後続のアクションで利用します。多くのユーザーが誤解しがちなのは、戻り値のデータ型に関する柔軟性です。Power Automateでは、戻り値として文字列、整数、ブール値、配列、オブジェクトなどを返せますが、親フローで受け取る際にデータ型が厳密に一致していないとエラーになります。

よくある誤解:戻り値は自由に複数返せる

「応答」アクションでは1つ以上の出力パラメーターを定義でき、複数の値をまとめて返すことが可能です。しかし、それらはすべてJSONオブジェクトとして返るため、親フローで個別のプロパティにアクセスするには、親フロー側で「応答結果」の変数をJSONオブジェクトとして処理する必要があります。この仕組みを理解していないと、複数の戻り値を単一の値として受け取ろうとして失敗します。

2. 戻り値が正しく渡らない原因を切り分ける3つの軸

トラブルシューティングを効率的に進めるために、以下の3つの軸で切り分けます。

  1. 子フロー側の問題: 応答アクションの定義に誤りがないか、データ型が意図したものになっているか。テスト実行で戻り値を確認します。
  2. 親フロー側の問題: 子フローの呼び出しアクションの出力変数が正しく構成されているか、型変換が必要か。出力変数をそのままログに出力して確認します。
  3. 環境・権限の問題: 子フローが「無視された実行」や「アクセス拒否」になっていないか。子フローの所有者が親フローと同じか、共有設定が適切か確認します。

3. [実践] 戻り値の設定手順と確認ポイント

手順1:子フローで「応答」アクションを追加する

  1. 子フローを開き、フローの最後に「応答」アクションを追加します。
  2. 「応答」アクションの「出力」タブで、戻り値の名前、データ型、値を設定します。データ型は、文字列、整数、ブール値、配列、オブジェクトから選択します。
  3. テスト実行を行い、戻り値が期待どおりの値と型になっているか確認します。実行履歴から出力を直接確認できます。

手順2:親フローで「子フローの呼び出し」アクションを設定する

  1. 親フローで「子フローの呼び出し」アクションを追加し、呼び出す子フローを選択します。
  2. 「入力パラメーター」が必要な場合は子フローに渡す値を設定します。
  3. 戻り値を利用するには、アクションの出力変数を動的なコンテンツとして参照します。たとえば「応答結果」という名前の変数が自動生成されます。
  4. 親フローで戻り値を変数に代入するか、直接アクションの入力に使用します。
  5. 親フローをテスト実行し、戻り値が正しく受け取れているか「応答結果」の値を確認します。

確認ポイント:データ型の不一致に注意

子フローから整数を返しているのに、親フローで文字列として扱おうとするとエラーが発生します。必ず「応答」アクションで指定したデータ型と親フローでの使用箇所の型が一致しているか確認してください。また、戻り値が複数ある場合は、親フローで「応答結果」をJSONオブジェクトとして扱い、各プロパティにアクセスします。

4. 頻出エラーパターンとその対処法

エラーパターン 原因 対処法
「無効なテンプレート」エラー 子フローが公開されていない、またはアクセス権がない 子フローを「共有」して親フローと同じ環境からアクセスできるようにする。または子フローをソリューション内で公開する
戻り値が空になる 子フロー内で応答アクションに到達せずに終了している(条件分岐で抜けている) 子フローのすべてのパスで応答アクションが実行されるようにロジックを見直す
型変換エラー 親フローで戻り値を数値として計算しようとしたが、子フローが文字列を返している 子フローの応答アクションのデータ型を整数に変更するか、親フローでint()関数を使って変換する
応答結果がJSONオブジェクトとして扱えない 親フローで「応答結果」を単一値として参照している 動的コンテンツで「応答結果 プロパティ名」のようにプロパティを指定する
子フロー実行がスキップされる 親フローの条件分岐で子フロー呼び出しが実行されない 親フローの条件を見直し、想定どおりに子フローが呼ばれるかテストする

5. 管理者に確認すべき設定と組織ポリシー

会社のPower Automate環境では、子フローの利用に制限がかかっている場合があります。以下のポイントを管理者に確認しておくと、トラブルを回避できます。

  • ソリューション管理: 子フローがソリューションに含まれているかどうか。ソリューション外のフローは呼び出せないポリシーになっていることがあります。
  • 環境間の共有: 開発環境と本番環境で子フローを共有する場合、環境ごとにソリューションを別途公開する必要があります。
  • コネクタのアクセス許可: 子フローが使用するコネクタ(SharePoint、SQLなど)の接続参照が正しく設定されているか。親フローと子フローで接続参照が異なるとアクセスエラーになります。
  • データ損失防止(DLP)ポリシー: 特定のコネクタがブロックされていないか。子フローで使用するコネクタがDLPポリシーに違反していないか確認します。

6. よくある質問(FAQ)

Q1. 子フローの戻り値が「undefined」になる原因は?

子フローが応答アクションに到達していない可能性が高いです。子フロー内の条件分岐やループの外で応答アクションが実行されるよう、すべてのパスに応答アクションを配置してください。また、子フローがエラーで中断している場合も戻り値が取得できません。

Q2. 戻り値として配列を返すときの注意点を教えてください。

応答アクションでデータ型を「配列」にし、値にJSON配列を指定します。親フローで受け取る際も「応答結果」を配列として扱い、例えば「apply to each」でループ処理します。配列の各要素にアクセスするにはアイテムプロパティを使用します。

Q3. 複数の戻り値をひとつのオブジェクトとして返すことはできますか?

はい、応答アクションで複数の出力パラメーターを設定すれば、それらは自動的に一つのJSONオブジェクトとして返ります。親フローでは「応答結果.パラメーター名」で個別にアクセスできます。

Q4. 子フローを別のユーザーが編集したら戻り値が変わってしまいました。どうすれば?

子フローのバージョン管理が有効になっているか確認してください。変更が意図しないものであれば、以前のバージョンに復元できます。親フローと子フローを同じソリューション内で管理し、変更時に親フローも合わせて更新するルールを設けるとよいでしょう。

7. まとめ

子フローの戻り値でつまずく原因の多くは、応答アクションの設定ミスか、親フローでの受け取り方の誤りです。本記事で紹介した3軸の切り分けと、データ型の一致確認を習慣にすることで、無駄な調査時間を減らせます。また、会社の環境ではソリューションやDLPポリシーの影響も受けるため、事前に管理者に確認しておくことをおすすめします。Power Automateのログとテスト実行を活用し、期待する値が返っているか検証しながら開発を進めてください。


この記事の監修者
✍️

超解決 第一編集部

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