GlideRecord - クライアント

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:16分
  • GlideRecord API は、データベース操作を実行するメソッドを提供します。この API を使用すると、クライアントスクリプトや UI ポリシースクリプトなど、クライアント側スクリプトで一部の GlideRecord 機能を使用できるようになります。

    GlideRecord にはレコードとフィールドの両方が含まれています。クライアント側の GlideRecord メソッドで作成されたクエリは、サーバー上で実行されます。したがって、クライアントブラウザーからレコードデータを取得する要求が行われます。

    クライアント側の GlideRecord API は、スコープ対象のアプリケーションではサポートされていません。代わりに、スクリプトインクルードを作成して GlideAJAX API を使用するか、REST API を使用します。さらに、この API は、スクリプトを実行するユーザーの認証情報に基づいてアクセス制御リスト (ACL) を適用します。ACL なしでサーバー上でコードを実行するには、 GlideAjax API を使用します。

    クライアント側 GlideRecord:GlideRecord(文字列 tableName)

    指定されたテーブルの GlideRecord クラスのインスタンスを作成します。

    表 : 1. パラメーター
    名前 タイプ 説明
    tableName 文字列 使用するテーブル。
    var now_GR = new GlideRecord('incident');

    クライアント側 GlideRecord - addOrderBy(String column)

    クエリで順番に列を追加します。

    表 : 2. パラメーター
    名前 タイプ 説明
    column 文字列 結果セットを並べ替える列。
    表 : 3. 返される内容
    タイプ 説明
    なし

    クライアント側 GlideRecord - addQuery(文字列名, オブジェクト値)

    指定されたフィールド名が指定された値と等しい (または値のリストにある) レコードを返すクエリを追加します。

    SQL に精通している場合、このメソッドは「where」句に似ています。このメソッドを複数回呼び出すことで、1 つのフィルターに対して 1 つ以上のクエリを作成できます。このメソッドでは、クエリは AND です。目的のクエリをすべて定義したら、 クライアント側 GlideRecord - query(文字列名, 関数 responseFunction, 文字列値) を呼び出して指定されたクエリ句 (フィルター) を実行します。

    AND 以外の操作を実行するには、 addQuery(文字列名、オブジェクト演算子、オブジェクト値) メソッドまたは setEncodedQuery() メソッドのいずれかを使用します。

    表 : 4. パラメーター
    名前 タイプ 説明
    name 文字列 チェックするフィールドの名前。
    value オブジェクト クエリの対象とする値または値のリスト。
    表 : 5. 返される内容
    タイプ 説明
    なし

    複数のクエリを示す例。

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('priority', 4); // Priority is 4 – Low and,
    now_GR.addQuery('state', 3); // State is On Hold
    now_GR.query(response);
     
    function response(result) {
        while(result.next()) {
           // Print all INC with priority 4 – Low AND state is On Hold
            console.log(result.getValue('number')); 
        }
    }

    文字列オブジェクトを渡す方法を示す例。

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('short_description', new String('USB device not working')); // string object
    now_GR.addQuery('priority', 4); //number
    now_GR.query(response);
     
    function response(result) {
        while(result.next()) {
           // Print all INC with priority 4 – Low AND short description contains 'USB device not working'
            console.log(result.getValue('number')); 
        }
    }

    クライアント側 GlideRecord - addQuery(文字列名, オブジェクト演算子, オブジェクト値)

    フィールドが指定された条件 (フィールド、演算子、値) を満たすレコードを返すためのフィルターを追加します。

    SQL に精通している場合、このメソッドは「where」句に似ています。このメソッドを複数回呼び出すことで、1 つのフィルターに対して 1 つ以上のクエリを作成できます。目的のクエリをすべて定義したら、 クライアント側 GlideRecord - query(文字列名, 関数 responseFunction, 文字列値) を呼び出して指定されたクエリ句 (フィルター) を実行します。

    より複雑なクエリを作成するには、 setEncodedQuery() メソッドを使用します。

    表 : 6. パラメーター
    名前 タイプ 説明
    name 文字列 チェックするフィールドの名前。
    オペレーター オブジェクト クエリ演算子。使用可能な値は、 パラメーターのデータタイプによって異なります。
    番号:
    • =
    • !=
    • >
    • >=
    • <
    • <=
    文字列 (大文字である必要があります):
    • =
    • !=
    • IN
    • NOT IN
    • STARTSWITH
    • ENDSWITH
    • 次の値を含む
    • DOES NOT CONTAIN
    • INSTANCEOF
    注:
    LIKE 演算子は使用しないでください。代わりに CONTAINS を使用してください。
    value オブジェクト クエリ対象の値 (大文字と小文字は区別されません)。
    表 : 7. 返される内容
    タイプ 説明
    なし

    フィルターに複数のクエリを追加する方法を示す例。

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('priority', '<=', 2); // Priority is 2 or higher and,
    now_GR.addQuery('short_description', 'CONTAINS', 'crash'); // Short description contains the word crash
    now_GR.query(response);
     
    function response(result) {
        while(result.next()) {
           // Print all INC with priority of 2 or higher AND short description contains "crash"
            console.log(result.getValue('number')); 
        }
    }

    アレイを渡して単一のクエリーで複数の条件を検証する方法を示す例。

    var priorities = [4,2]; 
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('priority', 'IN', priorities); 
    now_GR.query(response); 
    
    function response(result) {
      while(result.next()) {
        console.log(result.getValue('number')); 
      } 
    }

    クライアント側 GlideRecord - deleteRecord(関数 responseFunction)

    現在のレコードを削除し、完了時に指定された応答関数を呼び出します。

    表 : 8. パラメーター
    名前 タイプ 説明
    応答関数 関数 コールバックの応答関数。
    表 : 9. 返される内容
    タイプ 説明
    なし

    この例では、レコードを削除してから、応答関数の 応答 を呼び出してアラートメッセージをログに記録します。

    var recordGR = new GlideRecord('incident');
    if (recordGR.get('99ebb4156fa831005be8883e6b3ee4b9')) {
      recordGR.deleteRecord(response);
    }
    
    function response(result) {
      alert('Deleted record sys_id: ' + result.getValue('sys_id'));
    }

    出力:

    Deleted record sys_id: 99ebb4156fa831005be8883e6b3ee4b9

    クライアント側 GlideRecord - get(文字列 sys_id)

    指定されたsys_idを持つレコードの GlideRecord クエリを実行します。このメソッドは単一のレコードのクエリに使用されることが想定されるため、返される前に次の操作が実行されます。

    表 : 10. パラメーター
    名前 タイプ 説明
    sys_id 文字列 検出されるレコードのsys_id。
    表 : 11. 返される内容
    タイプ 説明
    ブーリアン 1 つ以上の一致するレコードが見つかった場合は True。レコードが見つからなかった場合は false。

    クライアント側 GlideRecord - getEncodedQuery()

    現在の結果セットのクエリ条件をエンコードされたクエリ文字列として取得します。

    表 : 12. パラメーター
    名前 タイプ 説明
    なし
    表 : 13. 返される内容
    タイプ 説明
    文字列 クエリに追加されたすべての条件を含むエンコードされたクエリ文字列。

    クライアント側 GlideRecord:getLimit()

    GlideRecord クエリによって返されるレコードの制限を返します。

    表 : 14. パラメーター
    名前 タイプ 説明
    なし
    表 : 15. 返される内容
    タイプ 説明
    番号 GlideRecord クエリによって返されるレコードの制限。

    クライアント側 GlideRecord - getTableName()

    この GlideRecord に関連付けられているテーブルの名前を取得します。

    表 : 16. パラメーター
    名前 タイプ 説明
    なし
    表 : 17. 返される内容
    タイプ 説明
    文字列 テーブル名
    var item = new GlideRecord('sc_request'); 
    item.addQuery('sys_id', current.request); 
    item.query(itemResponse); 
     
    function itemResponse(item) {
       alert('The table is ' + item.getTableName());
    }

    クライアント側 GlideRecord - hasNext()

    GlideRecord にさらにレコードがあるかどうかを判定します。

    表 : 18. パラメーター
    名前 タイプ 説明
    なし
    表 : 19. 返される内容
    タイプ 説明
    ブーリアン クエリセットにより多くのレコードがある場合は True。

    クライアント側 GlideRecord - insert(関数 responseFunction)

    現在のレコードに設定されているフィールド値を使用して、新しいレコードを挿入します。

    表 : 20. パラメーター
    名前 タイプ 説明
    応答関数 関数 レコードが挿入された後に実行する関数。
    表 : 21. 返される内容
    タイプ 説明
    文字列 挿入されたレコードのSys_id。レコードが挿入されなかった場合は null。
    var now_GR = new GlideRecord('incident');
    now_GR.short_description = 'Learn about GlideRecord';
    var recResponse = now_GR.insert(handleResponse);
    
    function handleResponse(recResponse, answer) {
    // Answer will be the sys_id of the created record or null
    alert('Newly created sys_id is - ' + answer + ' exists');
    }

    クライアント側 GlideRecord - next()

    GlideRecord の次のレコードに移動します。

    表 : 22. パラメーター
    名前 タイプ 説明
    なし
    表 : 23. 返される内容
    タイプ 説明
    ブーリアン クエリセットにこれ以上レコードがない場合は false。
    var rec = new GlideRecord('incident');
    rec.query(recResponse);
     
    function recResponse(rec) {
      while (rec.next()) { 
        alert(rec.number + ' exists');
      }
    }

    クライアント側 GlideRecord - orderBy(String column)

    orderBy 列を指定します。複数列で並べ替えるために複数回呼び出される場合があります。

    表 : 24. パラメーター
    名前 タイプ 説明
    column 文字列 結果セットの順序付けに使用する列名。
    表 : 25. 返される内容
    タイプ 説明
    なし
    function UpdateProjectWBS(project) {
      var count = 0;
      var child = new GlideRecord('pm_project_task');
      child.addQuery('parent', project.sys_id);
      child.orderBy('order');
      child.orderBy('number');
      child.query(childResponse);
      g_form.addInfoMessage(count + ' Project Tasks updated');
    }
     
    function childResponse(child) {
      var len = child.getRowCount().toString().length;
      var seq = 0;
      while (child.next()) {
        count += UpdateProjectTaskWBS(child, 1, ++seq, len, '');
      }
    }

    クライアント側 GlideRecord - query(文字列名, 関数 responseFunction, 文字列値)

    addQuery() フィルターに基づいて、テーブルに対してサーバーへのクエリを実行します。このメソッドは、GlideRecord テーブルとテーブルの参照を照会します。

    同期クエリ呼び出しは行わないでください。応答関数なしでクエリを実行すると、呼び出しは同期されます。つまり、画面はクエリの応答を待ってから続行します。

    表 : 26. パラメーター
    名前 タイプ 説明
    name 文字列 オプション。クエリするフィールドの名前。
    応答関数 関数 クエリ結果が利用可能になったときに呼び出される関数。
    value 文字列 オプション。クエリ対象のフィールド値。リテラルのペアは、クエリのペアと見なされます (フィールド:値)。
    表 : 27. 返される内容
    タイプ 説明
    なし

    応答関数を使用した基本的な例を次に示します。

    var rec = new GlideRecord('incident');
    rec.query(recResponse);
     
    function recResponse(rec) {
      while (rec.next()) { 
       alert(rec.number + ' exists');
      } 
    }

    次の例は、同期構文と非同期構文の違いを非同期の例とともに示しています。

    // synchronous call syntax (no response function): DO NOT USE
            query();
            
            // asynchronous call syntax
            // performs query with current conditions, calls responseFunction when done
            query(responseFunction)
            
            // synchronous call syntax (no response function): DO NOT USE
            // adds "category=hardware" to current query conditions and performs query
            query('category', 'hardware')
            
            // asynchronous call syntax
            // adds "category=hardware" to current query conditions, performs query, and calls responseFunction when done
            query('category', 'hardware', responseFunction)
            
            // asynchronous call example
            // adds "user_name=abel.tuter" to current query conditions, performs query, and calls defined response function when done
            function onLoad() {
            var now_GR = new GlideRecord("sys_user");
            now_GR.query("user_name", "abel.tuter", function(now_GR) {
            if (now_GR.next()) {
            alert("You can access fields by name from the client API, just like in the server API:\n now_GR.name = " + now_GR.name);
            alert("You can also access fields using getValue():\n now_GR.getValue(\"email\") = " + now_GR.getValue("email"));
            if (now_GR.getDisplayValue) {
            alert("In Service Portal, Mobile, and Agent Workspace, you can access a field's display value:\n now_GR.getDisplayValue(\"company\") = " + now_GR.getDisplayValue("company"));
            } else {
            alert("On the desktop, you cannot access a field's display value, but can get its sys_id:\n now_GR.company = " + now_GR.company);
            }
            alert("You cannot dot-walk in the client API:\n now_GR.company.name = " + now_GR.company.name);
            }
            });
            }

    クライアント側 GlideRecord - setEncodedQuery(文字列 encodedQuery)

    指定されたエンコードされたクエリ文字列を現在のクエリ句に追加します。

    このメソッドを使用すると、他のクライアント側の addQuery() メソッドとは異なり、単一のクエリ呼び出しで複雑なフィルター (エンコードされたクエリ文字列) を指定できます。目的のクエリをすべて定義したら、 クライアント側 GlideRecord - query(文字列名, 関数 responseFunction, 文字列値) を呼び出して指定されたクエリ句 (フィルター) を実行します。エンコードされたクエリ文字列の詳細については、「 エンコードされたクエリ文字列」を参照してください。

    query() メソッドを呼び出す前にこのメソッドを複数回呼び出すと、クエリは一緒に AND されます。

    表 : 28. パラメーター
    名前 タイプ 説明
    encodedQuery 文字列 現在のクエリ句に追加するエンコードされたクエリ文字列。
    表 : 29. 返される内容
    タイプ 説明
    なし
    var now_GR = new GlideRecord('incident');
    now_GR.setEncodedQuery('priority=4^ORstate=3');
    now_GR.query(response);
     
    function response(result) {
        while(result.next()) {
            console.log(result.getValue('number'));
        }
    }
    

    クライアント側 GlideRecord - setLimit(数値 maxQuery)

    GlideRecord のレコード数の制限を設定します。

    表 : 30. パラメーター
    名前 タイプ 説明
    maxQuery 番号 取得するレコード数の制限。
    表 : 31. 返される内容
    タイプ 説明
    なし