序
SharePoint ライブラリのプロパティ内で「作業完了状況を true / false で管理する業務」がある場合、作業忘れ防止のための通知機能を実装したいケースがあるかなと思います。今回でいうと CompletionFlag 列が該当しており、チェックが外れているもの(=false)のフォルダを抽出し、業務担当者にメールを配信するというイメージです(下記画像参照)
こういったフォルダ情報を取得する方法はいくつかありますが、ファイルメタデータ(プロパティ)を取得できるアクションの中で(比較的)扱いやすいと感じられるのは「ファイルの取得(プロパティのみ)」アクションしかないような気がしています。
ところが Power Automate の SharePoint コネクタで「ファイルの取得(プロパティのみ)」を使うと、次のサンプル画像を見る限り、戻り値にはフォルダとファイルが混在しており、見た目だけでは判断しにくいことがあります。
さらに厄介なのは、フォルダに関しては「はい / いいえ」列(今回で言えば CompletionFlag)を使ってデータ量を絞り込みにくいことも挙げられます。
今回の記事は、SharePoint ライブラリからフォルダの情報のみ(ファイルは除外)を取得し、さらに、任意の列条件(例:CompletionFlag が false)で絞り込むための手順を整理します。
フロー概観
ざっと、今回構築するフロー図です。要点を箇条にすると以下の通りです。
- 一度、ファイルとフォルダをザックリと抽出してしまう
- 「アレイのフィルター処理」にて「フォルダ」であり「作業未完了」のものを抽出する
- 「JSON の解析」アクションにて、メール通知に必要な値を渡す
- メールを送信する
重要なのは 1. ~ 3. です。それぞれ確認していきましょう。
1. 「ファイルの取得」 アクション
一度、ザックリとライブラリ内のファイルとフォルダを取得してしまいます。したがって、設定箇所は「サイトのアドレス」と「ドキュメント」の2個所のみです。
ただし、注意しなければならないのが「ファイルの件数」です。既定では 100 件が取得件数の上限となっているため、この閾値(しきいち)を任意の数字に変更する必要があります。
「設定」をクリックすると、次のような画面に切り替わるので「改ページ」とファイル件数分くらいの「しきい値」を手入力します。
この取得するファイル件数が多くなればなるほどフローの処理速度が遅くなっていくことが予想されるため、可能であれば「はい / いいえ」や「選択肢」以外の列で基準となりそうなものがあれば、この段階でデータ件数を絞り込んでおくと良いかもしれません(※必須ではありません)
このフィルター式を OData フィルタークエリと呼んでいます。各フィルターの書き方は(初見だと難しいかもしれませんが)次の記事がよくまとまっています。
2. 「アレイのフィルター処理」 アクション
次のステップへと進む前に、一度、フローを実行して結果を手元で確認します。実行結果の「出力」からデータを確認できます(あまりの情報量に最初は面食らうかもしれませんが頑張りましょう)
確認内容は CompletionFlag 列の値と、ファイルとフォルダを識別している値の2点です。列を新しく作る時に日本語入力していた場合は X000_X111_x222 のような文字列で出力されてしまいます。その際は、コチラの記事を参考に特定します(※ {IsFolder} は既定で存在する列なので心配無用です)
この結果の中から CompletionFlag のプロパティのチェックが外れている(CompletionFlag = false)かつ、フォルダ({IsFolder} = true)を抽出するために「アレイのフィルター処理」アクションを配置します。
差出人には「前アクションで得た結果」を意味する value を動的なコンテンツとして配置します。下2個所の設定項目は「抽出条件」を意味するものなので、この項目にフィルター条件を設定していきます。
ところが、少々複雑なフィルター条件を入力する場合、このままの状態では設定することができません。したがって「詳細設定モードで編集」と書かれている青色の文字部分をクリックして直接文字を入力していきます。
入力内容は次のとおりです。
- SharePoint ライブラリのアイテム(= item() )の内、{IsFolder} が true と等しく、
- CompletionFlag が false である
@and(
equals(item()?['{IsFolder}'], true),
equals(item()?['CompletionFlag'], false)
)
それを @and(A, B)の形でくくっているので AND 条件(完全一致)となります。この JSON でのデータ抽出についての記事はコチラをご一読いただくと(多少なり)抵抗が薄れるはずです。ご参考ください。
数式を入力しても上手く取得できない場合は coalse() を入れてあげることで取得できることがあります(2026.01.26, 追記)
@and(
equals(item()?['{IsFolder}'], true),
equals(coalesce(item()?['CompletionFlag'], false), false)
)
3. 「JSON の解析」 アクション
アレイのフィルター処理アクションを挟むことで、必要なデータを取り出すことに成功しました。あとは動的なコンテンツをメール本文に配置すれば作業完了…と言いたいところですが「アレイのフィルター処理」で得た結果が見つからないはずです。
ここで必要なアクションが「JSON の解析アクション」です。このアクションを配置する前に、再び、フローをテスト実行して「アレイのフィルター処理」アクションから得られた結果を手元に控えておきます。
その後「JSON の解析」アクションを配置して「アレイのフィルター処理」アクションで得られた結果の内「本文(body)」と書かれたものを選択して配置します。
「サンプルから生成」ボタンをクリックし、先ほどコピー元に取っておいた出力結果を貼り付けて「完了」ボタンをクリックします。
すると「アレイのフィルター処理」で得られた結果を動的なコンテンツとして利用できるようになります。ここまで設定できれば作業は完了したも同然です。
4. 「メール送信(V2)」 アクション
あとは「JSON の解析アクション」で得られた動的なコンテンツを活用しながらリマインダーメールなどを作成していきます。1つ注意点を挙げるならば、アレイのフィルター処理では「フォルダ」を抽出していることです。
つまり、フォルダが2件あれば2通、5件なら5通のメールが送信されていくという点です。案件ごとに担当者が1人ずつ割り当てられているのであれば問題ないかなと思いますが、案件ごとに複数人の担当者がいる場合や、反対に、1人の担当者が複数の案件を受け持っている場合など、状況に応じて Apply to each アクションを避ける実装をしていかなければならないことがあります。
本稿では、その実装については触れませんが、上に引いた記事を参考にしながら最適解・妥協点を探っていく余地はあるのかな…と思います。JSON データの操作に抵抗がなくなっていけば、より便利なフローを作成できるようになりますので、ある程度、フロー作成に慣れてきたら挑戦してみてください。
結
上で紹介した方法以外にもフォルダを引っ張ってくる方法はいくつかあります。ただ、その場合、少し難易度が高まるように思います。
一般的に、SharePoint ライブラリは、フォルダを構成しない運用をしていくことが望ましい(≒メタデータで管理するのがよい)とされているため、もしかしたら高度なアクションしか前もって用意されていないのかもしれません。
可能であれば、フォルダで整理するのではなく、今後の Copilot 活用を見越して ①プロジェクトごとのドキュメントライブラリ作成と、②メタデータ付与による徹底管理に舵を切り替えていく運用を目指してみると、より SharePoint Online の利便性を実感できるのではないかな…と考えています。





















