ADVERTISEMENT

【Power Automate】手動トリガーの入力でつまずく時の入力値と条件分岐の直し方

【Power Automate】手動トリガーの入力でつまずく時の入力値と条件分岐の直し方
🛡️ 超解決

Power Automateの手動トリガーは、ボタン一つでフローを実行できる便利な機能ですが、入力値を正しく受け取れなかったり、条件分岐が想定通りに動作しないケースが少なくありません。特に、複数の入力項目を設定した場合や、数値とテキストの違いを意識せずに設計すると、予期しない結果に悩まされることがあります。この記事では、手動トリガーで入力値を正しく取得し、条件分岐を正しく設定するための具体的な修正方法を解説します。

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

  • 最初に見る場所: フローのトリガー設定画面で、各入力項目の「種類」と「動的コンテンツ」の表記を確認します。
  • 切り分けの軸: 入力値のデータ型(テキスト/数値/ブール)の違い、動的コンテンツの選択ミス、条件式の構文誤りです。
  • 注意点: 会社PCで共有フローを編集する場合は、他のユーザーへの影響を考慮し、事前にテスト環境で動作確認をしてください。

ADVERTISEMENT

手動トリガーで入力値が取得できない原因

手動トリガーで入力値を設定しても、その後のアクションで値が取得できない、または空欄になってしまう原因は、主に以下の3つです。

データ型の不一致

トリガーの入力項目には「テキスト」「数値」「ブール値(はい/いいえ)」などの種類があります。例えば、「数値」として設定した入力項目を、後続のアクションでテキストとして扱おうとすると正しく動作しません。Power Automateは暗黙的な型変換を行わないため、明示的に型を合わせる必要があります。具体的には、数値として入力を受け付けた場合は、条件式でも数値として比較します。

動的コンテンツの選択ミス

トリガーで設定した入力項目は、「動的コンテンツ」として他のアクションから参照できます。しかし、動的コンテンツの一覧には、トリガー以外のアクションの出力も混ざるため、目的の項目を誤って選択してしまうことがあります。正しい項目名(例:「入力_1」など)を確認して選択してください。

条件分岐での誤った比較演算子

条件分岐「条件」アクションでは、数値とテキストで使用できる演算子が異なります。例えば、数値には「次の値以上」や「次の値以下」が使えますが、テキストには「次の値を含む」といった演算子を使います。間違った演算子を選ぶと、フローがエラーになるか、予期しない判定になります。

入力値の種類ごとの正しい扱い方

手動トリガーの入力項目は、種類によって扱い方が異なります。以下の表に主要な種類と注意点をまとめました。

入力種類 動的コンテンツの表記例 条件式での正しい比較方法 よくある失敗
テキスト trigger()[‘inputs’][‘text’] 「次の値に等しい」「次の値を含む」など文字列演算子 数値と比較してしまう
数値 trigger()[‘inputs’][‘number’] 「次の値に等しい」「次の値以上」など数値演算子 引用符で囲んでしまい文字列扱いになる
ブール値 trigger()[‘inputs’][‘boolean’] 「次の値に等しい」で true または false を指定 文字列の “true” と間違える

条件分岐を正しく設定する手順

ここでは、手動トリガーで受け取った入力値に基づいて条件分岐を行う具体的な手順を説明します。例として、「緊急度」という数値入力(1〜5)を受け取り、3以上なら「高優先度」、それ以外は「通常」と分類するフローを考えます。

  1. Power Automateで「インスタントフロー」を作成し、トリガーに「手動でフローをトリガーします」を選択します。
  2. トリガー設定画面で「+入力の追加」から「数値」を選び、項目名を「緊急度」とします。
  3. 「新しいステップ」で「条件」アクションを追加します。左側の値に動的コンテンツから「緊急度」を選択します。
  4. 演算子のドロップダウンから「次の値以上」を選び、右側の値に「3」と直接入力します(引用符は付けません)。
  5. 条件成立時のアクション(例:メール送信で「高優先度」と表記)と、不成立時のアクション(例:「通常」と表記)を設定します。
  6. フローを保存し、テスト実行します。手動トリガーの画面で「緊急度」に「4」と入力し、正しく条件分岐されるか確認します。

複数条件を組み合わせる場合

条件アクションでは「かつ(And)」と「または(Or)」を使って複数の条件を組み合わせられます。例えば、「緊急度が3以上」かつ「カテゴリが’障害’」という複合条件を設定する場合は、条件アクションの「詳細設定モード」に切り替え、式ビルダーで以下のように記述します。

@and(greaterOrEquals(trigger()['inputs']['number'], 3), equals(trigger()['inputs']['text'], '障害'))

この式では、最初の条件で数値の比較、2番目の条件でテキストの比較を行っています。データ型に注意して式を組み立ててください。

よくある失敗パターンと修正方法

実際にユーザーが遭遇しやすい失敗例を3つ紹介します。

数値をテキストとして比較してしまう

トリガーの入力種類を「数値」に設定しているにもかかわらず、条件式の右側の値を引用符で囲んで「’3’」と入力してしまうケースがあります。この場合、Power Automateは暗黙的に型変換を行わず、数値と文字列の比較となるため常に偽になります。修正方法は、引用符を外して数値として入力することです。

動的コンテンツの選択間違い

複数のアクションがあるフローでは、動的コンテンツ一覧に同じような名前の項目が複数表示されることがあります。例えば、「緊急度」という名前がトリガーと別のアクションの出力の両方に存在する場合、誤って別のアクションの「緊急度」を選んでしまうかもしれません。この場合は、動的コンテンツのツールチップで「トリガー」と書かれているものを選ぶか、式で直接 trigger()['inputs']['number'] と記述すると確実です。

ブール値の扱い

ブール値の入力で「true」を期待しているのに、条件式で文字列の「”true”」と比較してしまうと、常に偽になります。ブール値は引用符なしで true または false と記述します。また、条件アクションの右側の値に「true」と直接入力する場合は、小文字で表記します。

管理者に確認すべき設定

会社の環境でPower Automateを使用している場合、以下の点を管理者に確認すると問題解決がスムーズです。

  • Dynamics 365環境: 組織内でDynamics 365を利用している場合、手動トリガーにCDS(Common Data Service)コネクタが関連することがあります。データ型の互換性に注意してください。
  • 共有フローの権限: フローを他のユーザーと共有している場合、入力項目の変更は全員に影響します。テスト環境で十分に検証してから本番に反映しましょう。
  • データ損失防止(DLP)ポリシー: 条件分岐で使用するコネクタがDLPポリシーでブロックされていないか確認が必要です。

よくある質問(FAQ)

Q1: 手動トリガーの入力項目で「ファイル」を選んだ場合、条件分岐でファイルの有無を判定できますか?

はい、可能です。「ファイル」の入力は、ファイルのメタデータ(名前、サイズなど)を取得できます。条件分岐では、例えば「ファイル名が空でない」という条件を設定することで、ファイルがアップロードされたかどうかを判定できます。

Q2: 条件分岐で「次の値を含む」演算子を使いたいのですが、数値項目では使えません。

「次の値を含む」はテキスト型の演算子です。数値に対して含む判定を行いたい場合は、まず数値をテキストに変換する必要があります。例えば、式 contains(string(trigger()['inputs']['number']), '3') のように記述します。

Q3: フローは正しいのに、実行時に「無効なテンプレート」というエラーが出ます。

このエラーは、トリガーまたはアクションの定義に誤りがある場合に発生します。入力項目のデータ型と条件式で使用している型が一致しているか、動的コンテンツのパスが正しいかを確認してください。特に、式ビルダーで手動入力した式に括弧の過不足がないか注意しましょう。

まとめ

手動トリガーの入力値と条件分岐の問題は、データ型の認識違いや動的コンテンツの選択ミスに起因することがほとんどです。入力項目の種類を意識して設計し、条件式では正しい演算子と型を使うことで、大半の問題は解決できます。また、複雑な条件を組む場合は式ビルダーを活用し、事前にテスト実行を行って動作を確認する習慣が大切です。これらのポイントを押さえて、Power Automateの手動トリガーをより活用してください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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

ADVERTISEMENT