概要

Query Builder は、Vitextra List Filter Online Web パーツの中でページ編集者が定義済みフィルターを設定する部分です。定義済みフィルターとは、Web パーツに表示されるすべてのアイテムが満たさなければならない条件の集合です。ユーザーはこのフィルターを見ることも解除することもできず、フィルター ウィンドウと列見出しのフィルターで結果をさらに絞り込むことだけができます。

定義済みフィルターは条件とグループのツリーとして保存され、SharePoint がサーバー側で実行する CAML クエリに変換されます。ブラウザーにすべてを読み込んでから絞り込むのではなく、条件に一致するアイテムだけがページ単位で返されます。これが、大きなリストでも Web パーツが高速に動作する理由です。

定義済みフィルターの代表的な用途:

  • 現在のユーザーが作成または更新したドキュメントだけを表示する。
  • ダッシュボード ページに過去 12 か月のレコードだけを表示する。
  • 承認済みのアイテム、添付ファイルのあるアイテム、または 状態 が Closed ではないアイテムだけを表示する。
  • 部署ごとにビューを作成することなく、1 つのリストから部署ごとのページを作成する。

📝 注
Query Builder は常に適用されるフィルターを定義します。ユーザーがフィルター ウィンドウで目にするコントロールは別途構成します。KB10255. List Filter Online のフィルター ペイン コントロールとサポートされる列の種類 を参照してください。


Query Builder の場所

  1. ページを編集モードで開き、List Filter Online Web パーツの [Web パーツの編集] を選択します。
  2. プロパティ ウィンドウで [フィルター] グループまでスクロールします。[ビューをフィルター:] のラベルの下に現在のフィルターのプレビューが表示されます。まだ何も定義されていない場合は [フィルターが適用されていません] と表示されます。
  3. [フィルターの編集] を選択します。Query Builder が大きなサイド パネルで開きます。
  4. クエリを組み立て、[保存] を選択して適用するか、[キャンセル] を選択して変更を破棄します。Web パーツは新しいフィルターで直ちに再描画されます。

プロパティ ウィンドウの [フィルター] グループ: フィルターのプレビューと [フィルターの編集] ボタン

プロパティ ウィンドウの [フィルター] グループ: フィルターのプレビューと [フィルターの編集] ボタン

Query Builder は、[データ ソース] グループで**サイトとリストまたはライブラリ**を選択した後にのみ使用できます。フィールドの一覧とその種類は、選択したリストから取得されるためです。


条件とグループ

クエリは 2 種類の構成要素で組み立てます。

  • 条件は 1 つの比較です: フィールド - 演算子 - 値。たとえば Amount - より大きい - 5000 のようになります。値を必要としない演算子もあります (データを含む、現在のユーザーである、今日)。
  • グループは条件と他のグループを含み、1 つの論理演算子で結合します。AND (すべての条件が真) または OR (少なくとも 1 つの条件が真) です。グループの左端にあるトグルで切り替えます。

パネルには常に 1 つのルート グループがあり、これは削除できません。どのグループでも、[追加] ボタンから 2 つのコマンドを選択できます。

  • [条件] - 現在のグループに空の行を追加します。
  • [グループ] - 入れ子のグループ (既定では AND) を追加します。同じ方法で条件を入力します。

グループは他のグループ内に入れ子にできます。各行と各入れ子グループの右側には削除アイコンがあります。グループを削除すると、その中のすべてが削除されます。

Query Builder で入れ子の AND/OR グループを使用したクエリ

Query Builder で入れ子の AND/OR グループを使用したクエリ

図のクエリは次のように読めます: タイトルが空ではなく「C」で始まる かつ (自分が作成した、または自分が更新した) かつ (過去 1 年以内に作成された、または過去 1 年以内に更新された) かつ (添付ファイルがある、または Customer が入力されていて Amount が 5,000 より大きい)。

💡 ヒント
ルート グループは AND のままにし、選択肢となる条件のまとまりはそれぞれ独自の OR グループに入れてください。この形のクエリはプレビューで読みやすく、後から拡張するのも簡単です。


列の種類ごとの演算子

行の演算子の一覧は、選択したフィールドの種類によって決まります。次の表は、サポートされる列の種類ごとに Query Builder が提供する演算子を示します。

列の種類演算子
1 行テキスト、複数行テキスト、ハイパーリンクまたは画像次の値と等しい、次の値と等しくない、次の値で始まる、次の値を含む、データを含む、データを含まない
選択肢次の値と等しい、次の値と等しくない、次の値で始まる、次の値を含む、データを含む、データを含まない
選択肢 (複数値)、参照、集計値 (テキスト結果)次の値と等しい、次の値と等しくない、データを含む、データを含まない (集計値では「次の値で始まる」と「次の値を含む」も使用可能)
数値、通貨、ID次の値と等しい、次の値と等しくない、より大きい、以上、より小さい、以下 (数値では「データを含む」「データを含まない」も使用可能)
日付と時刻指定日、指定日以外、以降、後、以前、前、次の範囲内、今日、過去X日間、過去X週間、過去Xか月、過去X年、次のX日間、次のX週間、次のXか月、次のX年、データを含む、データを含まない
はい/いいえ次の値と等しい、次の値と等しくない、データを含む、データを含まない
添付ファイル次の値と等しい、次の値と等しくない (値: はい / いいえ)
ユーザーまたはグループ次の値と等しい、次の値と等しくない、現在のユーザーである、現在のユーザーではない、データを含む、データを含まない
管理されたメタデータ (単一値および複数値)次の値と等しい、次の値と等しくない、次の値を含む、含まない、データを含む、データを含まない
承認の状態次の値と等しい、次の値と等しくない (値: 状態の一覧)
評価、いいね!次の値と等しい、次の値と等しくない、データを含む、データを含まない (いいね!: 「データを含む」「データを含まない」のみ)

データを含むとデータを含まないは、CAML の IsNotNull と IsNull と同じように、列に何らかの値があるかどうかを判定します。

値のエディターも列の種類に従います。日付には日付の選択 (次の範囲内では 2 つの日付の選択)、数値と通貨には数値フィールド、ユーザーまたはグループにはユーザー選択、管理されたメタデータには用語の選択、はい/いいえと添付ファイルには はい / いいえ の一覧、承認の状態には状態の一覧、テキスト・選択肢・参照の列にはテキスト ボックスが表示されます。

❗ 重要
システム列と読み取り専用の列 (コンテンツ タイプ ID、一意 ID、バージョン、チェックアウト先など) はフィールドの一覧に表示されません。CAML で比較できない種類の列 (画像、場所、定期的なアイテムなど) も表示されません。


静的条件と動的条件

静的条件は、入力した固定の値 (日付、数値、テキスト、ユーザー) と列を比較します。値はそのままクエリに書き込まれます。次の範囲内は両端の日付を含み、暦日単位で判定されます。2 つの日付のうち 1 つだけを設定した場合、条件は片側のみの 以降 または 以前 になります。

動的条件は、クエリが実行される時点で SharePoint によって解決されます。そのため、同じページでもユーザーや日付によって表示されるアイテムが変わります。

演算子解決方法
現在のユーザーである / 現在のユーザーではないユーザー列をサインインしているユーザーの ID と比較します (CAML では <UserID />)。
今日日付列を現在の日付と比較します (<Today />)。
過去X日間 / 週間 / か月 / 年今日から X (日、週、月、年) 前から今日までの範囲。
次のX日間 / 週間 / か月 / 年今日から今日から X (日、週、月、年) 後までの範囲。

過去Xと次のXの数値は、行の値フィールドに入力します。過去Xか月と過去X年はクエリ生成時に開始日に変換されるため、Modified - 過去X年 - 1 と設定したページは、誰もフィルターを編集しなくても常に直近 12 か月を対象とします。

📝 注
SharePoint はサーバー側でクエリを評価します。月および年の範囲の境界日はクエリ生成時にブラウザーで計算され、<Today /> は SharePoint によって解決されます。そのため、夜遅くに更新されたドキュメントが、ローカルの時計が示す日付とは別の日に分類されることがあります。


定義済みフィルターとユーザー フィルターの組み合わせ

ユーザーがフィルター ウィンドウや列見出しでフィルターを適用しても、Web パーツは定義済みフィルターを置き換えません。定義済みフィルターとユーザー フィルターを AND で結合した新しいクエリを組み立てます。

<Where>
  <And>
    
    
  </And>
</Where>

知っておくべき結果:

  • ユーザーは結果を絞り込むことはできますが、定義済みフィルターの範囲を超えて広げることはできません。Created By - 現在のユーザーであるでフィルターされたページは、ユーザーがウィンドウで何を選択しても他の人のアイテムを表示しません。
  • 並べ替え、グループ化、集計、Excel へのエクスポートはすべて、組み合わせた結果に対して動作します。
  • 保存済みフィルターとフィルター リンク (KB10253. List Filter Online でフィルターを保存し、フィルター済みビューのリンクを共有する を参照) には、クエリのユーザー部分だけが保存されます。定義済みフィルターはページ構成の一部であり、ページと共に移動します。

ツリーから CAML へ

SharePoint リストのクエリ言語である CAML では、<And> と <Or> の中に置ける被演算子はちょうど 2 つです。そのため、3 つ以上のメンバーを持つグループは 1 つの要素としては書けず、入れ子になったペアの連鎖に折りたたむ必要があります。Query Builder はこの折りたたみに加えて、種類ごとの細部 - 各値の Type 属性、参照列の LookupId、日付比較の IncludeTimeValue - も処理します。

上の図のクエリは約 70 行の <Where> 句を生成します。比較を省略した骨格は次のとおりです。

<Where>
  <And>
    <Or>  
      <Eq><FieldRef Name="Author" /><Value Type="Integer"><UserID /></Value></Eq>
      <Eq><FieldRef Name="Editor" /><Value Type="Integer"><UserID /></Value></Eq>
    </Or>
    <And>
      <Or>  
        <And> <Geq Created 2025-10-21 /> <Leq Created <Today /> /> </And>
        <And> <Geq Modified 2025-10-21 /> <Leq Modified <Today /> /> </And>
      </Or>
      <And>
        <Or>  
          <And> <IsNotNull Customer /> <Gt Amount 5000 /> </And>
          <Eq Attachments 1 />
        </Or>
        <And> <IsNotNull Title /> <BeginsWith Title "C" /> </And>
      </And>
    </And>
  </And>
</Where>

過去X年の各行は 2 つの日付比較の <And> に、各 OR グループは <Or> 要素に、ルート AND グループの 4 つのメンバーは 3 つの入れ子の <And> 要素になりました。

生成されたクエリの表示

Web パーツが送信する正確な CAML (定義済みフィルター、現在のユーザー フィルター、ビュー フィールド、行数の上限、グループ化を含む) を確認するには、次の手順を実行します。

  1. プロパティ ウィンドウで [開発者ツール] を展開し、[開発者モードを有効にする] をオンにします。
  2. ページを保存します。Web パーツのコマンド バーの右端に開発者ツールのメニューが表示されます。
  3. [CAML クエリ] を選択します。クエリがダイアログに表示され、コピーできます。

[CAML クエリ] ダイアログには SharePoint に送信される正確なクエリが表示される

[CAML クエリ] ダイアログには SharePoint に送信される正確なクエリが表示される

💡 ヒント
フィルターが完成したら、開発者モードを再びオフにしてください。このメニューは Web パーツを表示できるすべてのユーザーに表示されます。


大きなリストでの定義済みフィルター

5,000 アイテムを超えるリストでは、結果を絞り込む最初の条件がインデックス付きの列を使用してアイテム数を十分に絞り込む場合にのみ、SharePoint はクエリを実行します。定義済みフィルターは最初に実行されるものなので、ページがそもそも開くかどうかを左右します。

  • ルート グループはインデックス付き列の条件から始めてください (Created、Modified、Author、Editor、ID などの列のインデックス状態を確認し、必要に応じてリストの設定でインデックスを作成してください)。
  • ルートでは AND を優先してください。インデックスのない 2 つの列の間の OR は、どのインデックスも利用できません。
  • 日付列にインデックスがある場合、動的な日付条件 (過去Xか月、今日) は最初の条件として適しています。

詳細、フィルター構成ツールのインデックス警告、およびワンクリックでのインデックス作成については、KB10257. 大規模リストのフィルター処理: インデックス付き列と 5,000 アイテムのしきい値 を参照してください。


制限事項

  • Query Builder は、データ ソースで選択した 1 つのリストまたはライブラリの列を対象とします。他のリストの列に対する条件は設定できません。
  • 参照列と選択肢列の値は、入力したテキストで照合されます。Query Builder にはこれらの値の選択ツールはありません。
  • 条件を含まない入れ子グループは、クエリ生成時に無視されます。
  • 実際にはほぼすべてのシナリオが 2〜3 レベルで対応でき、それより深いツリーはプレビューで読みにくくなります。
  • 定義済みフィルターはユーザーには表示されません。一部のアイテムが表示されない理由をユーザーに知らせる必要がある場合は、Web パーツのタイトルまたはページ上にその旨を記載してください。

質問と回答

この記事について質問すると、サポートチームから公式回答を受け取れます。

まだ質問はありません。最初の質問を投稿しましょう。

注目の記事

祝日を追加する方法

Vitextra Absence & Coverage に祝日と会社の休日を追加する方法を説明します。Holidays リスト、1 日 1 行の入力、祝日が申請の勤務日数に与える影響、Team Absence Calendar での網掛け表示、My Absences の「今後の祝日」ブロック、毎年の保守を解説します。

96 2 分
Password Vault: エンド ユーザー向けクイック ガイド

従業員向けに、Vitextra Password Vault Web パーツの使い方を作業ごとに紹介します。PIN コードの設定、保管庫のロック解除、エントリの追加、強力なパスワードの生成、ユーザー名とパスワードのコピー、編集と削除、フォルダー、タグ、お気に入り、検索とフィルター、PIN コードの変更、自動ロック、推奨される使い方を説明します。

54 2 分
項目へのリンクとオンライン エディターへのリンク: Short URL Online での対象リンクタイプの選択

Short URL Online の 2 つの対象リンクタイプ (項目へのリンクとオンライン エディターへのリンク) の意味、それぞれが役立つ場面、一部のドキュメントやフォルダーでオプションを選択できない理由について説明します。

17 1 分

共有