ADVERTISEMENT

【Power Automate】添付ファイルが複数ある時だけ分岐したい場合の設定

【Power Automate】添付ファイルが複数ある時だけ分岐したい場合の設定
🛡️ 超解決

Power Automateを利用してメールの添付ファイルや申請フォームの添付ファイルを処理する際、添付ファイルが1つしかない場合と複数ある場合で異なる処理を実行したい場面があります。例えば、添付ファイルが複数あるときだけ上長承認が必要なルートに分岐させる、といった要件です。この記事では、添付ファイルの数を正しく判定して条件分岐を設定する方法を解説します。具体的な手順や失敗しやすいポイントを交えながら、安定して動作するフローの作成を目指します。

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

  • 最初に見る場所: 動的コンテンツ内の「添付ファイル」フィールド(配列)と、その長さを取得するlength関数です。
  • 切り分けの軸: 添付ファイルが0個か1個か複数かを、配列の長さで判定します。empty関数やlength関数の使い分けが重要です。
  • 注意点: 会社PCでフローを編集する際、使用するトリガーの種類によって添付ファイルのデータ構造が異なることがあります。管理者に紐づくコネクタのプランや添付ファイルのサイズ制限も確認してください。

ADVERTISEMENT

1. 添付ファイルの数を取得する基本式

Power Automateでは、添付ファイルは配列として扱われます。メールトリガー(「新しいメールが届いたとき」)の場合、動的コンテンツに「添付ファイル」というフィールドが表示されます。SharePointやCommon Data Serviceなど他のトリガーでも、添付ファイルは配列として提供されることが一般的です。配列の長さを取得するには、式ビルダーでlength関数を使用します。例えば、メールトリガーの場合、次のように記述します。

length(outputs('トリガー名')?['body/attachments'])

トリガー名の部分は実際のトリガーの名前に置き換えてください。この式の戻り値が添付ファイルの個数です。0個の場合は0、1個の場合は1、複数の場合は2以上となります。したがって、複数の場合だけ分岐したいなら、条件式で「length(…) > 1」と設定します。empty関数も利用できますが、empty関数は「空かどうか」しか判定できないため、1個と複数を区別するにはlength関数が必須です。

2. 条件分岐の設定手順

ここでは、メールトリガーを使った具体的な手順を示します。SharePointや他のトリガーでも基本的な考え方は同じです。

  1. Power Automateで新規フローを作成し、トリガーとして「新しいメールが届いたとき」を選択します。必要に応じてフォルダーやフィルター条件を設定します。
  2. トリガーの下に「条件」アクションを追加します。条件アクションは「コントロール」カテゴリにあります。
  3. 条件の左側の値を設定するため、式ビルダーを開きます。動的コンテンツのタブではなく「式」タブをクリックし、前述のlength関数を入力します。トリガー名は自動生成された名前(例:「新しいメールが届いたとき」)をそのまま使うか、動的コンテンツから「添付ファイル」を選択して数式に変換しても構いません。
  4. 演算子のドロップダウンから「が次の値より大きい」を選択し、値のフィールドに「1」と入力します。これで、添付ファイルが2つ以上の場合に真の分岐に入る条件が設定できました。
  5. 「はいの場合」の分岐に複数添付ファイル時の処理を追加します。例えば、別の承認者を指定するアクションや、メールにファイル一覧を添付するアクションを記述します。
  6. 「いいえの場合」の分岐には、添付ファイルが0個または1個の場合の処理を記述します。さらに、0個と1個を分けたい場合は、いいえの場合の中に別の条件をネストします。

上記の手順で、添付ファイルが複数の時だけ分岐する基本形が完成します。SharePointリストの場合は、トリガー「アイテムが作成されたとき」などで「添付ファイルの数」フィールドが直接使えることもあります。その場合はlength関数を使わずにその数値を比較できます。

3. 比較表:length関数とempty関数の使いどころ

関数 用途 0個の判定 1個の判定 複数の判定
length 配列の長さを取得 =0 =1 >1
empty 空かどうかを真偽値で返す true false(ただし1個もfalseになるため区別不可) false(複数でもfalseのため区別不可)

上の表から分かるように、複数の添付ファイルを正確に判定するにはlength関数が唯一の選択肢です。empty関数は0個の判定に便利ですが、それ以外の用途ではlengthと併用する必要があります。

4. 実際のフロー例:申請書に添付ファイルが複数ある場合に承認者を追加する

SharePointリストを使った申請フローを例にします。リストにアイテムが作成されたとき、添付ファイルが複数ある場合にのみ第二承認者を追加する設定です。

4.1 トリガーと変数の準備

トリガーに「アイテムが作成されたとき」を選択し、該当のSharePointリストを指定します。次に「変数を初期化する」アクションで、添付ファイルの配列を格納する変数を作成します。動的コンテンツから「添付ファイル」を選び、型を「配列」として保存します。この変数に対してlength関数を適用すると安全です。

4.2 条件分岐の実装

条件アクションで、変数の長さが1より大きいかどうかを判定します。真の場合(複数)には「承認の開始」を追加し、複数の承認者(申請者直属の上司と第二承認者)を設定します。偽の場合(0または1)には、承認者を1つだけ設定するか、承認なしでアイテムを更新する処理を入れます。この分岐により、添付ファイルの数に応じて承認フローを柔軟に制御できます。

5. 失敗しやすいパターンとその対策

実際の開発でよく遭遇する失敗とその回避策を紹介します。

5.1 添付ファイルが存在しない場合のエラー

length関数の引数がnullの場合、フローがエラーで停止します。対策として、条件の前に「empty(変数)」で空チェックを入れ、空の場合は0個として扱う分岐を先に作成します。または、length関数内で「?」を使って安全にアクセスする方法もあります(例:outputs(‘トリガー’)?[‘body/attachments’])。

5.2 動的コンテンツが配列として認識されない

トリガーの種類によっては、添付ファイルがオブジェクトの配列ではなく単一のオブジェクトとして返される場合があります。この場合、length関数が想定と異なる結果を返します。対策として、まず変数アクションで添付ファイルの内容をJSONとして出力し、構造を確認してください。配列でない場合は、適切なパスを指定する必要があります。

5.3 トリガー名の変更による式の破損

フローをコピーしたり、トリガーを削除・再追加すると、式に使っていたトリガー名が変わり、式が無効になります。対策は、動的コンテンツから直接「添付ファイル」を選択して式を自動生成させることです。手動で式を書く場合は、トリガー名をハードコードせずに動的コンテンツトークンを使うと安全です。

5.4 添付ファイルの数が制限を超える

Power Automateやコネクタによっては、添付ファイルの個数やサイズに制限があります。例えば、メールコネクタでは添付ファイルの最大サイズが制限されている場合があります。大量の添付ファイルを処理する場合、パフォーマンスが低下したり、タイムアウトが発生する可能性があるため、管理者に制限値を確認してください。

6. 管理者に確認すべきポイント

会社の環境でPower Automateを利用する場合、以下の点を管理者に確認しておくとスムーズです。

  • コネクタのライセンス: 添付ファイルを扱うコネクタ(Outlook、SharePointなど)がプレミアムライセンスを必要とするかどうか。プレミアムが必要な場合は、適切なライセンスが割り当てられているか確認します。
  • 添付ファイルの制限: コネクタごとの添付ファイルの最大サイズや個数の制限。大量のファイルを扱う場合は、事前に制限値を把握しておく必要があります。
  • データポリシーとコンプライアンス: 会社のデータ保護ポリシーにより、外部への添付ファイル転送が制限されている場合があります。フローが意図せずデータを外部に送信しないように注意します。
  • サービスの制限: Power Automate自体の実行時間やループ回数の制限。添付ファイルの数が多いとループ処理が制限に引っかかる可能性があります。

7. よくある質問(FAQ)

Q. 添付ファイルが1個の場合と複数の場合で分岐したいが、0個の場合はどうすればいいですか?

A. 最初にempty関数で0個かどうかを判定し、0個の場合は該当する処理へ分岐します。残ったケース(1個以上)に対して、さらにlength関数で1個か複数かを判定します。条件をネストすることで、3つの分岐を実現できます。

Q. SharePointリストの添付ファイルの数を取得する方法は?

A. SharePointトリガー(アイテムが作成されたときなど)では、動的コンテンツに「添付ファイルの数」というフィールドが表示される場合があります。その場合はその数値を直接条件に使えます。表示されない場合は、「添付ファイル」配列のlength関数を使って取得します。

Q. 条件式でエラーが発生する場合の確認方法を教えてください。

A. フローのテスト実行時に、条件の前に「変数の設定」アクションを追加して、添付ファイルの配列の長さを変数に格納してみてください。その変数の値を後続のアクションで出力(例えばメール送信)すると、実際の値が確認できます。これにより、length関数が想定通り動作しているかを検証できます。

8. まとめ

Power Automateで添付ファイルが複数ある場合に分岐するには、length関数を使って配列の長さを取得し、その値が1より大きいかどうかで判定します。empty関数は0個の判定に有効ですが、複数かどうかの判定には使えません。トリガーの種類によって添付ファイルのデータ構造が異なるため、動的コンテンツを正しく参照する必要があります。また、エラーを防ぐためにnullチェックや適切なパス指定を忘れずに行いましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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

ADVERTISEMENT