GlideFilter - スコープ対象、グローバル

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:14分
  • GlideFilter API を使用すると、1 つ以上のレコードが指定された要件セットを満たしているかどうかを判断するクエリをフィルタリングできます。

    この API のメソッドには、GlideFilter グローバルオブジェクトを使用してアクセスできます。

    大文字と小文字の区別

    デフォルトでは、 GlideFilter API は大文字と小文字を区別します。setCaseSensitive() メソッドを使用して、大文字と小文字の区別を有効または無効にします。GlideRecord クエリでは大文字と小文字が区別されません。

    次の例は、GlideRecord クエリで大文字と小文字が区別されず、同じユーザーレコードが大文字または小文字になる理由を示しています。

    var gr_Query = new GlideRecord('sys_user');
    gr_Query.addQuery('first_name', 'Abel');
    gr_Query.query();
    while (gr_Query.next())
      gs.info("Upper case query: " + gr_Query.getDisplayValue());
    
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.addQuery('first_name', 'abel');
    gr_Query.query();
    while (gr_Query.next())       
      gs.info("Lower case query: " + gr_Query.getDisplayValue());
    GlideRecord.query() 出力には、大文字と小文字に関係なく同じ結果が表示されます。
    Upper case query: Abel Tuter
    Lower case query: Abel Tuter

    次の例は、 GlideFilter が大文字の条件で一致するレコードの値のみを取得する方法を示しています。小文字の条件では一致しません。

    // Matches the 'Abel Tuter' user record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=Abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
            gs.info("Upper case condition: " + gr_Query.getDisplayValue());
    }
    
    // The following code does not match 'Abel Tuter' user record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
            gs.info("Lower case condition: " + gr_Query.getDisplayValue());
    }
    出力は、フィルターがデフォルトの大文字と小文字を区別して大文字の結果のみを返すことを示しています。
    Upper case condition: Abel Tuter

    次の例は、 setCaseSensitive() メソッドを使用して GlideFilter の大文字と小文字の区別を無効にする方法を示しています。ケースがフィールド値と一致しない場合でも、フィルターは条件に一致します。

    // Matches the 'Abel Tuter' user record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=Abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
         gs.info("Upper case condition: " + gr_Query.getDisplayValue());
    }
    
    // The following code disables case sensitivity and matches the same record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    
    var condition = 'first_name=abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    glideFilter.setCaseSensitive(false);
    
    while (gr_Query.next()) {
      if (glideFilter.match(gr_Query, true))
        gs.info("Lower case condition: " + gr_Query.getDisplayValue());
    }
    出力には、大文字と小文字を区別しない GlideFilter の結果が表示されます。
    Upper case condition: Abel Tuter
    Lower case condition: Abel Tuter

    null 値をフィルター

    GlideFilter クエリ結果から null 値を除外するには、クエリ条件に ISNOTEMPTY を追加します。次の例は、 GlideRecordGlideFilter で同じエンコードクエリを使用した場合に、どのように異なる結果が生成されるかを示しています。
    var insertRecordsGr = new GlideRecord('u_test_table');
    insertRecordsGr.deleteMultiple();
    var dates = ['', '2021-01-29', '2021-01-30', '2021-01-31'];
    dates.forEach(function(val) {
      insertRecordsGr.initialize();
      insertRecordsGr.u_date_field = val;
      insertRecordsGr.insert();
    });
    
    var now_GR = new GlideRecord('u_test_table');
    now_GR.addEncodedQuery('u_date_field<javascript:gs.beginningOfToday()');
    now_GR.query();
    
    // Encoded query includes null values with GlideFilter, which might cause unexpected results
    var condition = 'u_date_field<javascript:gs.beginningOfToday()';
    
    var grWithGlideFilter = new GlideRecord('u_test_table');
    grWithGlideFilter.query();
    var filter = new GlideFilter(condition, 'filterCondition');
      
    var countWithGlideFilter = 0;
    while (grWithGlideFilter.next()) {
      if (GlideFilter.checkRecord(grWithGlideFilter, condition))
         countWithGlideFilter++;
    }
    
    gs.info('Record RowCount: ' + now_GR.getRowCount() + ' - Filter Count: ' + countWithGlideFilter);
    出力は、 GlideRecord が空の日付値をスキップして 3 つのレコードを返すことを示しています。GlideFilter クエリは空の日付値をカウントし、4 件のレコードを返します。
    Record RowCount: 3 - Filter Count: 4
    GlideFilter の結果から null 値を除外するには、クエリ対象のフィールドに AND 条件 ISNOTEMPTY を追加します。
    // Encoded query includes null values with GlideFilter
    var condition = 'u_date_field<=javascript:gs.beginningOfToday()^u_date_fieldISNOTEMPTY';
    出力は、 GlideFilter エンコードクエリが null 日付の値をスキップし、3 つの結果をカウントすることを示しています。
    Record RowCount: 3 - Filter Count: 3

    GlideFilter – GlideFilter(文字列フィルター、文字列タイトル)

    GlideFilter オブジェクトをインスタンス化します。

    表 : 1. パラメーター
    名前 タイプ 説明
    フィルター 文字列 標準の Glide 形式でエンコードされたクエリ文字列。「 エンコードされたクエリ文字列」を参照してください。setCaseSensitive() メソッドを使用して無効にしない限り、結果は大文字と小文字が区別されます。

    GlideFilter クエリ結果から null 値を除外するには、クエリ条件に ISNOTEMPTY を追加します。

    タイトル 文字列 フィルターのわかりやすいタイトル。

    次の例は、Rebekah という名前のユーザーの数をフィルタリングする方法を示しています。

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setCaseSensitive(false);
      
    var countResults = 0;
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         countResults++;
    }
    
    gs.info('Number of users named Rebekah: ' + countResults);
    出力:
    Number of users named Rebekah: 2

    GlideFilter - checkRecord(GlideRecord now_GR, 文字列フィルター, ブール値一致)

    指定されたフィルターを指定された GlideRecord の内容と比較します。

    指定されたフィルターに条件が 1 つ含まれている場合、レコードが条件を満たすと true が返されます。

    フィルターは複数の条件をサポートします ( 例:「active=true^number=abc^category=request」)match パラメーターを使用して、一致を判断するためにすべての条件を満たす必要があるか、または単一の条件のみを満たす必要があるかを定義できます。

    表 : 2. パラメーター
    名前 タイプ 説明
    now_GR GlideRecord 評価する GlideRecord
    フィルター 文字列 標準の Glide 形式でエンコードされたクエリ文字列。「 エンコードされたクエリ文字列」を参照してください。

    GlideFilter クエリ結果から null 値を除外するには、クエリ条件に ISNOTEMPTY を追加します。

    注:
    filter値は大文字と小文字を区別します。また、 setCaseSensitive(false) を使用して大文字と小文字を区別する値を変更することはできません。
    一致 ブーリアン オプション。filterパラメーターに複数の条件が含まれている場合に、すべての条件を満たす必要があるかどうかを示すフラグ。

    有効な値:

    • true:メソッドが true を返すには、すべての条件が満たされる必要があります。
    • false:メソッドが true を返すには、条件のうち 1 つだけが満たされる必要があります。

    デフォルト:true

    表 : 3. 返される内容
    タイプ 説明
    ブーリアン フィルター比較の結果。
    • true:フィルター条件が満たされました。
    • false:フィルター条件を満たしていませんでした。

    次の例は、フィルター条件を満たすインシデントテーブルの各レコードに true を表示する方法を示しています。それ以外の場合は false です。

    var rec = new GlideRecord('incident');
    rec.query();
    
    var bool = true;
     
    while(rec.next())
    {
       bool = GlideFilter.checkRecord(rec, "active=true");
       gs.info("number "+ rec.number + " is " + bool);
    }
    出力:
    number INC0000060 is false
    number INC0009002 is false
    number INC0000009 is false
    ...
    number INC0000015 is true
    number INC0000016 is true
    number INC0000017 is true
    ...

    GlideFilter - match(GlideRecord now_GR, ブール一致)

    指定された GlideRecord に対してフィルターを評価します。

    表 : 4. パラメーター
    名前 タイプ 説明
    now_GR GlideRecord 評価する GlideRecord
    一致 ブーリアン

    すべてのフィルター条件が一致する必要があるかどうかを示すフラグ。

    有効な値:
    • true:すべてのフィルター条件が一致する必要があります。
    • false:フィルター条件の一致は必要ありません。

    デフォルト値:false

    表 : 5. 返される内容
    タイプ 説明
    ブーリアン 一致チェックの結果。
    • true:フィルター条件が満たされました。
    • false:フィルター条件を満たしていませんでした。

    次の例は、フィルター条件が指定された GlideRecord と一致することを確認する方法を示しています。

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setCaseSensitive(false);
      
    var countResults = 0;
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         countResults++;
    }
    
    gs.info('Number of users named Rebekah: ' + countResults);
    出力:
    Number of users named Rebekah: 2

    GlideFilter - setCaseSensitive(ブール値の大文字と小文字を区別)

    大文字と小文字を区別するフィルター結果を有効または無効にします。

    表 : 6. パラメーター
    名前 タイプ 説明
    caseSensitive ブーリアン フィルターで大文字と小文字を区別するかどうかを示すフラグ。
    有効な値:
    • true:フィルターで大文字と小文字が区別されます。
    • false:フィルターで大文字と小文字が区別されません。

    デフォルト:true

    表 : 7. 返される内容
    タイプ 説明
    なし

    次の例は、大文字と小文字を区別する結果を無効にする方法を示しています。

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    
    // Disable case-sensitive filtering
    filter.setCaseSensitive(false);
    
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         gs.info(now_GR.getDisplayValue());
    }

    出力は、フィルターが小文字の条件で大文字の結果を取得することを示しています。

    Rebekah Padley
    Rebekah Lindboe

    GlideFilter - setEnforceSecurity(ブール値 enforceSecurity)

    フィルター文字列のサンドボックス評価を有効または無効にします。

    表 : 8. パラメーター
    名前 タイプ 説明
    セキュリティを強制 ブーリアン

    サンドボックスでフィルターを評価するかどうかを示すフラグ。

    有効な値:
    • true:サンドボックス内のフィルターを評価します。
    • false:サンドボックスでフィルターを評価しません。

    デフォルト値:false

    表 : 9. 返される内容
    タイプ 説明
    なし

    次のコード例は、このメソッドを呼び出す方法を示しています。

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setEnforceSecurity(true);
      
    var countResults = 0;
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         countResults++;
    }
    
    gs.info('Number of users named Rebekah: ' + countResults);
    

    出力:

    Number of users named Rebekah: 2