ADVERTISEMENT

【Power Automate】プレミアムコネクタが想定どおり進まない時の入力値と条件分岐の直し方

【Power Automate】プレミアムコネクタが想定どおり進まない時の入力値と条件分岐の直し方
🛡️ 超解決

Power Automateでプレミアムコネクタを利用する際、フローが想定どおりに動作しないトラブルに直面したことはありませんか。特に、入力値や条件分岐の設定ミスが原因で、期待した結果が得られないケースは非常に多く見られます。本記事では、具体的な確認手順と修正方法を実例を交えながら解説します。エラーメッセージの読み解き方から、動的コンテンツのデータ型の確認、条件式の評価タイミングまで、現場で役立つテクニックを整理しました。

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

  • 最初に見る場所: フロー実行履歴の詳細出力、特に各アクションの「入力」と「出力」のJSONペイロード
  • 切り分けの軸: コネクタの認証設定、アクションの入力値のデータ型と値、条件式の評価結果、スコープの構成
  • 注意点: プレミアムコネクタは組織のライセンスやデータ損失防止(DLP)ポリシーの影響を受けるため、設定変更前には管理者への確認が必要

ADVERTISEMENT

プレミアムコネクタが想定通り進まない主な原因

プレミアムコネクタを使用したフローが期待どおりに動作しない場合、その原因は大きく分けて以下の3つに分類できます。一つ目は認証や接続設定の問題で、コネクタの資格情報が期限切れであったり、必要なAPI権限が不足しているケースです。二つ目は入力値の誤りで、アクションに渡すデータの型や構造が実際のAPI仕様と一致していない場合です。三つ目は条件分岐やループのロジックミスで、特に動的コンテンツの評価タイミングやデータ型の不整合が原因となります。これらのうち、本記事では二つ目と三つ目に焦点を当てて詳しく説明します。

最初に確認すべきポイント:実行履歴とエラーメッセージ

トラブルシューティングの第一歩は、フローの実行履歴を詳細に確認することです。Power Automateポータルで該当フローの「実行履歴」を開き、問題が発生したアクションを選択します。すると、画面下部に「入力」と「出力」のJSONが表示されます。このJSONを丹念に見ることで、入力値が正しく渡されているか、出力に期待した値が含まれているかを判断できます。

エラーメッセージの種類と読み方

よく見られるエラーとしては「BadRequest」「Unauthorized」「InvalidTemplate」などがあります。たとえばHTTPコネクタで「BadRequest」が返ってきた場合、リクエストボディのJSON形式が誤っているか、必須パラメータが不足している可能性が高いです。一方「InvalidTemplate」は、アクション内で使用している式の構文エラーを示しています。エラーメッセージだけでは原因が特定しにくい場合は、出力JSONの「statusCode」や「body」に詳細なエラーコードが含まれていないか確認してください。

実行履歴を活用した切り分け

実行履歴の「入力」と「出力」を比較することで、どこで値が想定と異なっているかを特定できます。例えば、前のアクションの出力を次のアクションの入力として使っている場合、その値がundefinedや空文字になっていないかチェックします。また、条件分岐が思った通りに動かないときは、条件式で使っている動的コンテンツの値を、実行履歴から直接コピーして別のツール(例えばJSONパーサー)で評価してみると原因が見つかることがあります。

入力値の誤りを特定して修正する手順

入力値の誤りは、フローが意図しない挙動を引き起こす主要因です。以下に、具体的な確認手順をまとめました。各ステップを順に実施することで、問題の箇所を効率的に特定できます。

  1. 実行履歴を開き、問題のアクションを選択する – フローの実行履歴ページで、失敗または想定外の出力を得たアクションをクリックします。画面下に表示される「入力」タブと「出力」タブを切り替えて確認します。
  2. 入力パラメータのデータ型を確認する – アクションが期待するパラメータのデータ型(string, integer, boolean, array, objectなど)と、実際に渡している値の型が一致しているか確認します。Power Automateでは、動的コンテンツの青いアイコンで型が大まかに分かります(テキストは「”」アイコン、数値は「123」アイコン)。
  3. 式エディターで値を検証する – アクションの入力欄に直接式を書いている場合、式エディターを使い、正しい式が記述されているか確認します。特に`items()`関数や`outputs()`関数のパスが正しいか注意します。式の結果をプレビューするには、式エディターの右下にある「動的なコンテンツ」タブから「式」を選び、`@<式>`を入力して「OK」をクリックすると、その時点で利用できる値が自動補完されます。
  4. 実際の値をテストする – 問題のアクションに対して、固定値で正しいデータを入力してテスト実行します。固定値で成功した場合、動的コンテンツの参照に問題があることが確定します。その際、元のアクションに戻って、動的コンテンツのソース(前のアクションの出力)が正しく取得できているか確認します。
  5. データ型変換を試す – 数値として扱うべき値が文字列として渡されている場合は、`int()`関数や`float()`関数で変換します。また、日付時刻の形式が異なる場合は`formatDateTime()`を使って統一します。配列の要素を個別に処理する必要がある場合は、`Apply to each`ループ内で`items(‘Apply_to_each’)`を使い、正しいインデックスを指定します。
  6. JSONスキーマを確認する – 特にHTTPコネクタやSQL Serverコネクタなど、リクエストボディにJSONを送るアクションでは、APIの仕様書と照らし合わせてJSONの構造が完全に一致しているか確認します。不要なプロパティが含まれていないか、プロパティ名の大文字小文字が正しいかも重要です。

条件分岐が想定通り動かない場合の直し方

条件分岐(Conditionアクション)は、フローの分岐を制御する重要な要素です。しかし、意図したとおりに分岐しないケースが多発します。原因の大半は、条件式で使用している値のデータ型や、評価されるタイミングにあります。

データ型の不整合を解消する

たとえば、「承認ステータスが“承認済み”である」という条件を設定したにもかかわらず、フローが別の分岐に進んでしまう場合、ステータスの値が実は文字列ではなく数値(1や0)で返ってきている可能性があります。実行履歴から実際の値を確認し、それに合わせて条件式を`@equals(outputs(‘アクション名’)?[‘status’], 1)`のように修正します。また、空文字やnullの扱いにも注意が必要です。空文字を条件とする場合は`@empty()`関数を使い、nullは`@equals(…, null)`と明示します。

評価タイミングと動的コンテンツの更新

Power Automateでは、条件分岐はフロー実行時に一度だけ評価されます。そのため、ループの中で変数を更新しながら条件をチェックする場合、期待したタイミングで評価されないことがあります。変数の更新は`Apply to each`内で行うのが安全で、条件アクションをループの内側か外側か、適切な位置に配置する必要があります。また、条件式の中で`variables(‘変数名’)`を参照する場合、その変数が条件評価前に更新されていることを確認します。

失敗パターンとその解決策(比較表)

ここでは、実際の現場でよく遭遇する失敗パターンを表にまとめました。自分が直面している症状と照らし合わせて、原因と対策を確認してください。

症状 原因 確認方法 解決策
HTTPコネクタで400 Bad Request リクエストボディのJSONがAPI仕様と不一致(キー名の誤り、データ型違い) 実行履歴の入力をコピーして、APIドキュメントと見比べる JSON構造を修正。特にキーの大文字小文字や必須パラメータの有無を確認。式を使って`json()`関数で文字列を変換する
SQL Serverアクションで「列が見つかりません」 テーブル名や列名のスペルミス、スキーマ名の欠落 SQL Server Management Studioなどで実際のテーブル定義を確認 アクションの設定でテーブル名にスキーマ(例:dbo.テーブル名)を含める
条件分岐が常に偽になる 条件式で使用している値が文字列と数値で不一致、または空文字・nullを考慮していない 条件アクションの入力で使用している動的コンテンツを実行履歴から確認 `int()`や`string()`で型を明示的に変換。空文字チェックには`@empty()`、nullチェックには`@equals(…, null)`を使用
Apply to each内のアクションが初回だけ実行される ループの対象が配列になっていない、またはitems関数の参照が誤っている Apply to eachの設定で「出力」が配列かどうか、items関数の引数名が合っているか確認 配列として取得するため、`body(‘アクション名’)`や`outputs(‘アクション名’)?[‘value’]`を設定。ループ内では`items(‘Apply_to_each’)`を参照する
カスタムコネクタから401 Unauthorized 接続の認証情報が期限切れ、またはAPIキーが無効 コネクタの接続設定を開き、資格情報を再入力 接続を削除して再作成。管理者に新しいAPIキーを発行してもらう

管理者に確認すべき設定と注意点

プレミアムコネクタのトラブルは、個人の設定だけでは解決できないことがあります。以下の点について、組織のPower Platform管理者に確認してください。

ライセンスとDLPポリシー

プレミアムコネクタを使用するには、適切なライセンス(例:Power Automate per user plan with attended RPA、または per flow plan)が必要です。また、データ損失防止(DLP)ポリシーによって特定のコネクタがブロックされている場合、管理者がポリシーを変更しない限りフローは実行できません。管理者には、該当コネクタが許可されているか、また使用中の環境でプレミアムコネクタが有効になっているかを問い合わせてください。

カスタムコネクタの認証設定

自社開発のAPIをカスタムコネクタで接続している場合、認証方式(Azure AD、API Key、Basic認証など)が正しく設定されているか確認します。管理者にコネクタの定義と実際のAPIの仕様を突き合わせてもらうと、問題が発見しやすくなります。また、テスト環境のAPIと本番環境のAPIでエンドポイントが異なる場合は、環境別の接続を使い分ける必要があります。

よくある質問(FAQ)

最後に、読者の皆様から寄せられることの多い質問をいくつか紹介します。

Q1. 条件分岐で「contains」関数を使うと、期待した文字列が含まれているのに「偽」と評価されます。なぜですか?
A1. contains関数は、文字列内に部分文字列が含まれているかどうかを判定しますが、大文字小文字を区別します。また、第1引数が配列の場合、要素の完全一致をチェックします。実際の値が配列ではなく文字列であることを確認し、必要に応じて`@toLower()`で小文字に揃えるとよいです。

Q2. Apply to eachの中で変数を更新しても、ループの外で参照すると更新前の値のままです。
A2. Power Automateでは、Apply to each内の変数更新はループの各イテレーションで行われますが、ループ終了後に変数を参照する場合、最後の更新値が正しく反映されます。ただし、ループ内で変数を初期化してはいけません。また、並列分岐があると変数の更新タイミングがずれるため、Apply to eachの設定で「同時実行」をオフにすると安定します。

Q3. プレミアムコネクタの使用制限(API呼び出し回数)に引っかかった場合、どうすればよいですか?
A3. 各プレミアムコネクタには一定期間あたりの呼び出し上限(例えば1時間あたり500回)があります。上限に達すると、それ以降の呼び出しは拒否されます。対策としては、フロー内で不要なAPI呼び出しを減らす(バッチ処理を利用する、キャッシュを活用するなど)か、ライセンスプランを上位のものに変更することを検討します。管理者に問い合わせて、現在の使用量を確認してください。

まとめ

プレミアムコネクタが想定通り動作しない場合、まず実行履歴の詳細を確認し、入力値と出力値の差異を特定することが重要です。データ型の不一致や条件式の評価タイミングの誤りが多くのトラブルの原因となっています。本記事で紹介した手順に従って一つずつ検証することで、問題の切り分けが容易になるはずです。また、組織のポリシーやライセンスに起因する問題は管理者と連携して解決してください。日頃からフローの実行状況をモニタリングし、再発防止に努めることをおすすめします。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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

ADVERTISEMENT