Power Automate SharePoint・リスト操作

Power AutomateでSharePointリストを条件付きで取得する方法

Power Automate(パワーオートメイト)を使ってSharePointリストを自動処理する際、「特定の条件に合うデータだけ取得したい」という場面は非常に多くあります。
例えば、以下のようなケースです。

  • ステータスが「承認待ち」のアイテムだけを抽出したい
  • 担当者が「田中」のレコードのみをTeamsに通知したい
  • 更新日が今月のものだけを処理したい

これらを実現するために重要なのが、「Filter Query(フィルタークエリ)」の設定です。
しかし、このFilter Queryは構文が特殊で、日本語環境では列名の内部名などにも注意が必要です。

本記事では、Power AutomateでSharePointリストを条件付きで取得する方法を、初心者にもわかりやすく解説します。
基本の書き方から複数条件、日付の指定、部分一致など、実務で使える具体例まで徹底的に紹介します。

目次

✅ 「アイテムの取得(Get items)」アクションの基本構成

SharePointリストのデータを取得するには、Power Automateの「アイテムの取得(Get items)」アクションを使用します。
このアクションを使うと、リスト内の全アイテムまたは条件に合致するアイテムをまとめて取得できます。

・手順

  1. 「+ 新しいステップ」から「SharePoint」を検索
  2. 「アイテムの取得(Get items)」を追加
  3. 「サイトアドレス」と「リスト名」を指定
  4. 上級オプションの「Filter Query」に条件を設定

ここで入力する「Filter Query」が、条件付き取得の肝になります。


✅ Filter Queryの基本構文

Filter QueryはOData(Open Data Protocol)という形式で条件を指定します。

通常の日本語ではなく、英語の論理構文で書くのがポイントです。

基本の書き方は以下の通りです。

列名 eq '値'
  • eq:等しい(equal)
  • ne:等しくない(not equal)
  • gt:より大きい(greater than)
  • lt:より小さい(less than)
  • ge:以上(greater or equal)
  • le:以下(less or equal)

・例1:ステータスが「承認待ち」のアイテムを取得

Status eq '承認待ち'

・例2:担当者が「佐藤」でないアイテムを取得

Person ne '佐藤'

・例3:金額が1000以上のアイテムを取得

Amount ge 1000

Filter Queryでは、文字列の場合は ' '(シングルクォート)で囲み、数値や日付の場合はクォート不要です。


✅ 日本語列名を使うときの注意点(内部名の扱い)

日本語で作成されたSharePointリストでは、見た目の列名と内部的な列名(Internal Name)が異なることがあります。
Filter Queryは内部名で指定しなければ機能しません。

・内部名を確認する手順

  1. SharePointリストを開き、「設定(⚙)」→「リストの設定」へ
  2. 「列」をクリックし、対象の列を開く
  3. URLの末尾に Field= の後に出てくる文字列が内部名

例:
URLの一部が以下のような場合

.../FldEdit.aspx?List=%7Bxxx%7D&Field=申請者_x0020_名

内部名は「申請者_x0020_名」です。
この「x0020」はスペースを意味しています。

したがって、Filter Queryでは以下のように指定します:

申請者_x0020_名 eq '田中'

これを間違えると、正しいデータが取得できません。

参考:Power Automate|「複数の項目の取得」から1件だけ取り出す方法|条件指定・最新データ抽出ガイド




✅ 複数条件を組み合わせる方法(and / or)

Filter Queryでは、「and」「or」を使って条件を組み合わせることができます。
複数の条件を指定したい場合は、OData構文でつなげるだけです。


・例1:部署が「営業部」かつステータスが「完了」

Department eq '営業部' and Status eq '完了'

・例2:担当者が「佐藤」または「鈴木」

Person eq '佐藤' or Person eq '鈴木'

・例3:金額が1000以上かつ2000以下

Amount ge 1000 and Amount le 2000

and / or を使う場合、演算子の前後にスペースを入れることを忘れないようにしましょう。
Power Automateでは、構文が1文字違うだけで実行エラーになります。


✅ 日付を条件にする場合の書き方

SharePointリストの日付列(例:作成日や更新日)を条件にする場合は、OData形式で日付を指定します。
日付は「UTC形式」で記述する必要があります。


・例1:作成日が今日以降

Created ge '@{utcNow()}'

・例2:1週間前より新しいデータ

Created ge '@{addDays(utcNow(), -7)}'

・例3:2025年1月1日以降

Created ge datetime'2025-01-01T00:00:00Z'

UTC形式で時間も含める場合は、datetime'~' の形で囲みます。
Z はUTC(協定世界時)を意味します。

参考:【Power Automate】リストの値を取得する方法|SharePoint・Excel・変数の扱いまで徹底解説


✅ 部分一致・含む条件を使う(substringof)

特定の文字列を含むデータを取得したい場合は、substringof() 関数を使います。
これは「LIKE検索」のような動きをします。


・例1:タイトルに「請求書」を含むアイテム

substringof('請求書', Title)

・例2:備考欄に「緊急」が含まれる

substringof('緊急', Remarks)

部分一致は非常に便利ですが、書き方を間違えやすい構文でもあります。
文字列は必ずシングルクォートで囲み、検索対象の列名を後に記述する点に注意しましょう。


✅ 複雑な条件の例:現場でよく使われるFilter Query

ここからは、実務でよく使われる条件指定のパターンを紹介します。


・例1:ステータスが「承認待ち」で、作成者が「田中」

Status eq '承認待ち' and Author eq '田中'

・例2:部署が「営業部」または「開発部」、かつ金額が10000以上

(Department eq '営業部' or Department eq '開発部') and Amount ge 10000

括弧を使って条件をグループ化すると、複数条件を組み合わせた複雑な抽出が可能です。


・例3:作成日が今月のものだけ取得

Created ge '@{formatDateTime(startOfMonth(utcNow()), 'yyyy-MM-ddTHH:mm:ssZ')}' and Created le '@{formatDateTime(endOfMonth(utcNow()), 'yyyy-MM-ddTHH:mm:ssZ')}'

この構文を使えば、毎月自動で当月分のデータを抽出できます。
月次レポートなどで非常に便利です。


✅ 実務での応用例

Filter Queryの設定をマスターすると、Power Automateでできることが一気に広がります。
ここでは代表的な活用シーンを3つ紹介します。


・応用例1:承認待ちデータを自動で通知

  • 条件:Status eq '承認待ち'
  • フロー:
    1. 「アイテムの取得」で該当データを抽出
    2. 「Apply to each」で各担当者にTeams通知
    3. 件数が0件なら「通知なし」として終了

このように条件付き取得を活用することで、不要な処理を省略できます。


・応用例2:更新日が今日のアイテムだけメールで送信

  • 条件:Modified ge '@{startOfDay(utcNow())}'
  • フロー:
    1. 今日更新されたアイテムを抽出
    2. 件数分のサマリーをHTMLテーブルに変換
    3. Outlookで自動送信

毎日更新状況を報告する自動メールを作成できます。


・応用例3:金額が指定以上の取引をExcelに出力

  • 条件:Amount ge 500000
  • フロー:
    1. 金額条件を満たすリストアイテムを取得
    2. Excelのテーブルに追加
    3. 自動で集計・グラフ化

RPA的な自動化処理に組み込むことで、報告業務の効率を大幅に改善できます。


✅ Filter Queryで使える比較演算子一覧

演算子意味使用例
eq等しいStatus eq '完了'
ne等しくないStatus ne '削除'
gtより大きいAmount gt 1000
ge以上Amount ge 1000
ltより小さいAmount lt 1000
le以下Amount le 1000
andかつStatus eq '完了' and Amount gt 1000
orまたはStatus eq '完了' or Status eq '承認待ち'
substringof()部分一致substringof('緊急', Title)

これらを組み合わせることで、ほぼすべての条件抽出を実現できます。


✅ トラブルシューティング:Filter Queryでうまく動かないときの原因

Filter Queryは便利ですが、構文や列指定のミスで動作しないケースがよくあります。
以下のポイントを確認しましょう。


・1. 列名が内部名になっているか確認

表示名ではなく、必ず内部名(Internal Name)を使用する。
URLから確認できる Field= の値を使うこと。


・2. シングルクォートの有無に注意

文字列には ' ' が必要ですが、数値や日付には不要です。

正しい例:

Status eq '承認待ち'
Amount ge 1000

・3. 大文字・小文字を区別

ODataは構文の大文字小文字を区別します。
EQ ではなく、正しくは eq と小文字で書く必要があります。


・4. フィルター結果が空(null)になる

条件に一致するデータがない場合、空の配列が返されます。
このときは empty() 関数で判定して次の処理を分けましょう。

例:

if(empty(body('アイテムの取得')?['value']), 'データなし', '処理続行')

✅ 高度なテクニック:Filter Query × Order By × Top Count

Filter Queryは単体でも強力ですが、「Order By」や「Top Count」と組み合わせるとさらに便利です。


・例:最新の承認待ちデータ1件だけ取得

  • Filter Query:Status eq '承認待ち'
  • Order By:Modified desc
  • Top Count:1

これで、「承認待ちステータスの中で最新の1件のみ」を取得できます。
承認ワークフローなどで非常に重宝します。


・例:金額が最も高い取引を取得

  • Filter Query:Amount ge 0
  • Order By:Amount desc
  • Top Count:1

ランキング的な処理も簡単に実現可能です。


✅ まとめ:Filter Queryを使いこなせばSharePoint自動化が劇的に効率化する

Power Automateの「Filter Query」は、SharePointリストのデータ取得を効率化する最強のツールです。
正しい構文と内部名を理解すれば、数百件のリストデータの中から条件に合うデータを一瞬で抽出できます。


🔍 記事のポイントまとめ

  • Filter QueryはOData形式で記述(eq, ne, gt, ltなど)
  • 列名は必ず「内部名(Internal Name)」で指定
  • 複数条件は「and」「or」で接続
  • 日付はUTC形式、部分一致は substringof()
  • Order ByTop Count を組み合わせて最新データを取得可能
  • 構文エラーや空配列は empty() 判定で回避

Filter Queryを使いこなせるようになると、Power AutomateのSharePoint自動化の幅は一気に広がります。
「条件に応じたデータ抽出」「特定項目のみ通知」「定期レポート作成」など、実務に直結するフローを効率的に構築できるでしょう。

時間のかかる手動フィルタリングをすべて自動化し、Power Automateの真価を最大限に活かしてください。

    -Power Automate, SharePoint・リスト操作