Power Automateでフローを作成していると、Composeアクションが思ったように動かず、入力値や条件分岐の設定に悩むことがあります。特に動的コンテンツや式を正しく扱えていない場合、フロー全体が停止する原因にもなります。この記事では、Composeアクションが想定どおり進まない原因を具体的に切り分け、入力値と条件分岐の直し方を実務に即して解説します。フローのトラブルシューティングに役立つ判断基準と再発防止策も含めてまとめましたので、ぜひ最後までご確認ください。
【要点】この記事で確認すること
- 最初に見る場所: Composeアクションの入力値に表示される動的コンテンツの内容とデータ型を確認します。
- 切り分けの軸: 入力値が正しいか、条件分岐(Condition)の評価が期待どおりか、フロー実行履歴の出力を確認します。
- 注意点: 会社PCではフロー共有やコネクタ設定の変更が制限される場合があるため、管理者権限が必要な操作は事前に相談してください。
ADVERTISEMENT
目次
Composeアクションの入力値を確認するポイント
Composeアクションが期待通りに動作しない場合、最初に入力値を精査します。入力値には静的なテキストや動的コンテンツ、式(Expression)を指定できますが、それぞれの構文やデータ型に注意が必要です。
動的コンテンツの参照方法を確認する
動的コンテンツを指定する際、フロー内の以前のアクションから適切な項目を選択しているか確認します。よくある失敗は、トリガーやアクションの出力を誤って参照しているケースです。例えば、SharePointの「リスト項目の取得」アクションから「ID」を選ぶべきところを、誤って「名前」を選んでしまうと、後続の条件分岐が期待通りに動きません。フローエディターで動的コンテンツピッカーを開き、参照元のアクション名とフィールド名を再確認してください。
式(Expression)の構文とデータ型の整合性
Composeアクションにカスタム式を直接入力する場合、構文エラーやデータ型の不一致が問題になります。例えば、数値を文字列として扱いたい場合にはstring()関数を使う必要があります。また、日付のフォーマットを指定する際はformatDateTime()関数を使用します。典型的な失敗パターンとして、addDays()関数の戻り値をComposeでそのまま利用し、後続の条件で比較するときに文字列と認識されずにエラーになるケースがあります。式エディターで入力する際は、括弧や引用符の対応を確認し、出力が期待するデータ型になっているかテストしてください。
条件分岐が正しく動作しない原因を特定する
Composeアクションの出力を条件分岐(Condition)で評価する場合、値の比較方法やデータ型の不一致が原因で意図しない結果になることがあります。原因は主に以下の3つに分類できます。
| 原因 | 具体例 | 確認方法 |
|---|---|---|
| データ型の不一致 | Composeの出力が「123」という数値だが、条件で「123」という文字列と比較している。 | 実行履歴でComposeの出力のデータ型(string, integer, booleanなど)を確認する。 |
| nullや空文字の扱い | Composeの結果がnullになっているのに、条件で「空ではない」と評価している。 | @equals()関数や@empty()関数を使って明示的に評価する。 |
| 大文字小文字の違い | Composeが「Abc」を出力しているが、条件で「abc」と比較している。 | toLower()関数で両方を揃えてから比較する。 |
条件式の評価順序と複数条件の組み合わせ
複数の条件をANDやORで組み合わせる場合、括弧の有無で評価結果が変わります。Power AutomateのConditionアクションでは、明示的にグループ化しないと意図しない優先順位で評価されることがあります。例えば、「AかつBまたはC」という条件を「Aかつ(BまたはC)」としたい場合、条件エディターでグループ化ボタンを使って設定する必要があります。この設定を忘れると、条件が常に真または偽になってしまい、フローが正しく分岐しません。
操作手順:Composeアクションと条件分岐の直し方
ここでは、トラブルを解決するための具体的な手順を紹介します。フローが複雑な場合は、一度新規フローでテストしながら進めると原因を特定しやすくなります。
- フロー実行履歴を開き、問題のComposeアクションの出力を確認します。出力値が期待どおりか、データ型が正しいかをチェックしてください。
- Composeアクションの入力値に式を使っている場合、式タブで構文エラーがないか確認します。特に引用符や括弧の対応に注意してください。
- 動的コンテンツが正しく参照されているか、動的コンテンツピッカーで再度選択し直します。古いバージョンのフローでは参照が切れている可能性もあります。
- 条件分岐アクションを開き、左辺と右辺の値のデータ型が同じであることを確認します。必要に応じて
string()やint()関数で型変換を行ってください。 - 条件式に
@equals()や@empty()などの関数を使用して、nullや空文字を明示的に判定します。簡易比較演算子「==」だけでは期待通りにならない場合があります。 - フローを保存し、テストデータを使って再度実行します。実行結果が正しくなければ、手順1から手順5を繰り返します。一度リセットしてシンプルな状態から作り直すことも効果的です。
失敗パターンとその対処法
実務でよく見られる失敗パターンをいくつか紹介します。
Composeアクションの出力が空文字やnullになる
これは、参照元のアクションがデータを取得できていない場合に発生します。例えば、SharePointリストでアイテムが見つからなかった場合、その後のComposeは空文字になります。対処法として、Conditionアクションで@empty()関数を使い、空文字の場合の処理を分岐させます。また、参照元アクションのエラー処理(Configure run after)を設定し、失敗した場合の代替アクションを用意すると、フロー全体が停止するのを防げます。
条件分岐で数値と文字列が正しく比較されない
数値として扱いたい値が文字列になっていると、条件「値が100より大きい」がfalseになります。解決策は、Composeの出力が数値型であることを確認し、文字列の場合はint()で整数に変換します。変換後の値で比較するよう条件を修正してください。
動的コンテンツの参照が消失する
フローを長時間編集しなかったり、アクションの順番を変更すると、動的コンテンツの参照が外れることがあります。この場合、Composeアクションの入力欄に古い参照アイコンが表示されず、値が空になります。対策として、編集中は頻繁に保存し、参照が正しいか定期的に確認します。参照が切れた場合は、もう一度動的コンテンツピッカーから選択し直すことで修正できます。
管理者へ伝えるべき設定情報
会社の環境でPower Automateを使用している場合、管理者に確認すべき設定があります。特に、以下の点はトラブルシューティングの前提条件となるため、事前に情報を整理しておきましょう。
- コネクタの認証状況: SharePointやOutlookなど、使用しているコネクタが正しく認証されているか。追加の認証ポリシー(多要素認証など)が影響している可能性があります。
- フロー共有とアクセス許可: フローが他のユーザーと共有されている場合、編集権限や実行権限が適切に設定されているか。権限不足でアクションが失敗することもあります。
- データ損失防止(DLP)ポリシー: 管理者がDLPポリシーを設定している場合、特定のコネクタやアクションが制限されていることがあります。Composeアクション自体は制限されにくいですが、その後のアクションに影響が出ることがあります。
よくある質問(Q&A)
Composeアクション関連で寄せられる質問をまとめました。
Q1. Composeアクションの出力が空でもフローが成功と表示されるのはなぜ?
Composeアクションはデータの加工や代入が目的であり、出力が空でもエラーにはなりません。後続の条件分岐で空文字を判定していない場合、意図しない動作になります。Conditionアクションで@empty()を使って明示的にチェックすることを推奨します。
Q2. Composeアクションに式を入れても実行時エラーにならないが、結果が違うのはなぜ?
式の構文は正しいが、データ型が期待と異なるケースが多いです。例えば、formatDateTime()を使用しても、元の日付が文字列でないと正しく変換されません。Composeの出力を別のアクション(例:Selectなど)で確認すると原因を特定できます。
Q3. フローを共有したらComposeアクションの動的コンテンツが認識されなくなった。
共有フローでは、参照元のアクションIDが環境によって変わる場合があります。フローをインポートし直すか、動的コンテンツを再度選択することで修正できます。また、式を使った参照(@{outputs('アクション名')?['フィールド']})のほうが移植性が高いため、共有を前提とする場合は式の利用を検討してください。
まとめ
Composeアクションが想定どおり進まない場合、まず入力値のデータ型と動的コンテンツの参照先を確認することが重要です。条件分岐の不具合は、値の型変換やnull処理の不足が原因であることが多いため、string()やint()、empty()関数を適切に活用してください。また、実行履歴で実際の出力値を確認しながら修正を繰り返すことで、原因を確実に特定できます。最後に、管理者にコネクタの認証やDLPポリシーを確認してもらうことで、環境起因のトラブルを未然に防げます。これらのポイントを押さえて、フローの安定運用を目指しましょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【Teams】画面共有時に「音声」も共有する方法!音が流れない時の設定手順
