Power Automate(パワーオートメイト)でSharePointリストやExcelテーブルからデータを取得するとき、
「複数の項目を取得できたけれど、その中から1件だけ使いたい」という場面は非常に多くあります。
例えば、
- 最新の申請データを1件だけ処理したい
- 条件に合うレコードを1つだけ抽出して通知したい
- 一覧の中から最初の項目を取り出して別処理に渡したい
このようなケースでは、「複数の項目の取得(Get items)」や「行の一覧取得」アクションを使い、配列データから1件を抽出する必要があります。
この記事では、Power Automateで「複数の項目を取得した後に1件だけ取り出す」方法を、初心者にもわかりやすく丁寧に解説します。
SharePoint・Excel両方の例を取り上げながら、条件指定や並び替え、関数の活用まで詳しく紹介していきます。
目次
- ✅ 「複数の項目の取得」アクションの仕組みを理解しよう
- ・SharePointリストの場合
- ・Excel Onlineの場合
- ✅ 「複数の項目」から1件だけ取り出す3つの代表的な方法
- 方法①:first() 関数で最初の項目を取得する
- 方法②:last() 関数で最後の1件を取得する
- 方法③:Filter Query と Top Count を組み合わせる
- ✅ 並び順(Order By)を指定して意図したデータを取得する
- ・SharePointでの指定方法
- ・Excelでの順序指定
- ✅ 実務でよく使われる1件取得のパターン
- ・例1:最新の申請データを1件だけメール通知
- ・例2:Excelの最新在庫情報を取得してTeamsに投稿
- ・例3:指定条件に一致する最初の1件を取得
- ✅ よくあるトラブルと対処法
- ① 「The expression is invalid.」エラー
- ② 「配列が空です(null)」エラー
- ③ 並び順が期待と違う
- ✅ 関数まとめ:1件取得でよく使うPower Automate式
- ✅ まとめ:複数項目の取得から1件を正確に扱うコツ
✅ 「複数の項目の取得」アクションの仕組みを理解しよう
Power Automateでは、データ取得アクションを使うと配列(Array)形式のデータが返されます。
この配列には、リスト内のすべての項目(行データ)が格納されており、複数件をまとめて扱える反面、1件だけを抜き出す処理が必要になることがあります。
使用アクション:「アイテムの取得(Get items)」
取得結果は「value」配列として返されます。
例:
body('アイテムの取得')?['value']
この配列の中に、リストの各項目がオブジェクトとして格納されています。
そのため、「first()」「last()」関数などを使って特定の1件を取り出すことが可能です。
・Excel Onlineの場合
使用アクション:「テーブルから行を一覧として取得(List rows present in a table)」
同様に、配列で複数行が返されます。
body('テーブルから行を一覧として取得')?['value']
この中から特定条件に一致する1行を抽出する手順は、SharePointリストと同じ考え方で行えます。
✅ 「複数の項目」から1件だけ取り出す3つの代表的な方法
複数件のデータを取得したあと、1件だけを抽出する方法は主に3つあります。
方法①:first() 関数で最初の項目を取得する
最もシンプルなのが first() 関数を使う方法です。
配列の先頭(最初の1件)を直接取り出せます。
例:
first(body('アイテムの取得')?['value'])
これにより、配列の中の最初のデータ1件分の情報が取得されます。
その中の特定列(例:Title列)を参照する場合は、次のように書きます。
first(body('アイテムの取得')?['value'])?['Title']
特徴:
- シンプルで高速
- 並び順を制御すれば「最新」や「最古」も簡単に取得可能
注意点:
データの並び順を指定していないと、思わぬ順序で返される場合があります。
そのため、事前に「Order By」などで明確にソートしておくのがおすすめです。
方法②:last() 関数で最後の1件を取得する
last() 関数を使うと、配列の末尾(最後の項目)を取得できます。
例:
last(body('アイテムの取得')?['value'])
この式を使えば、リスト内の「最も古いデータ」や「最新データ」など、目的に応じて選択が可能です。
特徴:
- 古い順でソートすれば「最新」を取得できる
- データ量が多くても柔軟に対応できる
方法③:Filter Query と Top Count を組み合わせる
「複数取得 → 抽出」という流れを避け、最初から1件だけ取得する方法もあります。
SharePointの「アイテムの取得」では、上級オプションで「Top Count」を指定できます。
例:
- 「Top Count」=1
- 「Order By」=
Modified desc
この設定を行うことで、「最終更新日時が最新の1件」だけを取得できます。
関数を使わなくても、アクション設定だけで目的の結果を得られるシンプルな方法です。
✅ 並び順(Order By)を指定して意図したデータを取得する
配列の順番は、取得時に「Order By」を設定しない限り保証されません。
たとえば、最新のデータを取り出したい場合は「Modified desc」などの並び替えを必ず指定しましょう。
「アイテムの取得」アクションの上級オプション内に「順序付け(Order By)」項目があります。
例:
- 最新順(降順):
Modified desc - 古い順(昇順):
Created asc - タイトル順:
Title asc
これで、first() や last() 関数で取り出すデータの順序が確定します。
・Excelでの順序指定
Excelの「テーブルから行を一覧として取得」アクションには直接Order Byがありません。
そのため、取得後に「sort()」関数を使って並び替えるのが一般的です。
例:
sort(body('テーブルから行を一覧として取得')?['value'], '列名', 'Descending')
これにより、指定列を基準に降順で並び替えられます。
その後 first() を使えば、最新のデータを取得できます。
参考:【Power Automate】複数の項目を上から順に取得する方法|実務で使える設定と応用例
✅ 実務でよく使われる1件取得のパターン
ここでは、Power Automateの現場で頻出する「1件取得」の具体的なシナリオを3つ紹介します。
・例1:最新の申請データを1件だけメール通知
フロー構成
- 「アイテムの取得」アクションでリストを取得
- Filter Query:
Status eq '承認待ち' - Order By:
Created desc - Top Count:1
- Filter Query:
- 「変数に値を設定」でデータを格納
- Outlookで「申請通知メールを送信」
ポイント
最新の1件のみ取得するため、フロー全体が軽量化し、処理も高速になります。
・例2:Excelの最新在庫情報を取得してTeamsに投稿
フロー構成
- 「テーブルから行を一覧として取得」アクションで在庫データを取得
- 「並べ替え」式:
sort()で更新日降順に並べ替え first()で最新データを取得- Teamsへ「最新在庫:○○」を投稿
ポイント
Excelデータの並びが不定の場合でも、式によるソートで安定した結果が得られます。
・例3:指定条件に一致する最初の1件を取得
複数のレコードの中から、条件を満たす1件だけを取り出したいときは、Filter Arrayを使います。
手順:
- 「アイテムの取得」で全件取得
- 「Filter array」アクションを追加
- 条件例:
@equals(item()?['Status'], '完了') - その結果に対して
first()を使用:
first(body('Filter_array'))
効果:
条件一致したレコードが複数あっても、1件目のみを確実に処理できます。
参考:【Power Automate】Excelのセルの値を取得する方法|業務自動化に役立つ実践ガイド
✅ よくあるトラブルと対処法
① 「The expression is invalid.」エラー
原因:関数の括弧やパスが間違っている。
対策:body('アクション名')?['value'] のように正しい構文で指定する。
② 「配列が空です(null)」エラー
原因:フィルター条件に一致するデータが存在しない。
対策:
- 条件を見直す。
- 式に
coalesce()やempty()を使って空データ対策を行う。
例:
if(empty(body('アイテムの取得')?['value']), 'データなし', first(body('アイテムの取得')?['value']))
③ 並び順が期待と違う
原因:Order Byが未設定。
対策:降順または昇順を明確に設定する。
✅ 関数まとめ:1件取得でよく使うPower Automate式
| 関数 | 用途 | 例 |
|---|---|---|
first() | 最初の要素を取得 | first(body('Get_items')?['value']) |
last() | 最後の要素を取得 | last(body('Get_items')?['value']) |
take() | 先頭から指定件数を取得 | take(body('Get_items')?['value'], 1) |
sort() | 並べ替え | sort(body('Get_items')?['value'], 'Created', 'Descending') |
empty() | 配列が空か判定 | empty(body('Get_items')?['value']) |
これらを組み合わせることで、複雑な条件にも柔軟に対応できます。
✅ まとめ:複数項目の取得から1件を正確に扱うコツ
最後に、この記事で紹介した内容を振り返ります。
- 「複数の項目の取得」アクションは配列を返す
first()やlast()で簡単に1件取得できる- Order Byを設定して順序を固定することが重要
- Filter QueryやTop Countで最初から1件取得する方法も有効
- エラー時は
empty()やif()で安全に処理
Power Automateの「複数項目取得 → 1件抽出」を正しく設計できるようになると、
最新情報の抽出、日次レポート、承認通知など、多くの自動化フローで安定した結果を得られます。
条件設定・並び順・関数の組み合わせを理解すれば、Power Automateのデータ取得処理は自在にコントロール可能です。
ぜひこの記事を参考に、あなたの業務自動化フローをより正確で効率的なものに仕上げてください。