GlideRecord - クライアント

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む16読むのに数分
  • GlideRecord はデータベース操作に使用されます。クライアント側の GlideRecord API は、クライアントスクリプトや UI ポリシースクリプトなど、クライアント側のスクリプトで一部の GlideRecord 機能を使用できるようにします。

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

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

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

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

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

    クライアント側 GlideRecord - addOrderBy(文字列 column)

    並べ替える列をクエリに追加します。

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

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

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

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

    AND 以外の操作を実行するには、addQuery(文字列 name, オブジェクト operator, オブジェクト value) メソッドまたは 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(文字列 name, オブジェクト operator, オブジェクト value)

    フィールドが指定された条件 (field、operator、value) を満たすレコードを返すフィルターを追加します。

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

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

    表 : 6. パラメーター
    名前 タイプ 説明
    name 文字列 チェックするフィールドの名前。
    operator オブジェクト クエリ演算子。使用可能な値は、value パラメーターのデータタイプによって異なります。
    数値:
    • =
    • !=
    • >
    • >=
    • <
    • <=
    文字列 (大文字である必要があります):
    • =
    • !=
    • IN
    • NOT IN
    • STARTSWITH
    • ENDSWITH
    • CONTAINS
    • 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. パラメーター
    名前 タイプ 説明
    responseFunction 関数 コールバックの応答関数。
    表 : 9. 返される内容
    タイプ 説明
    なし

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

    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. パラメーター
    名前 タイプ 説明
    responseFunction 関数 レコードが挿入されたときに 1 回実行する関数。
    表 : 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(文字列 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(文字列 name, 関数 responseFunction, 文字列 value)

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

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

    表 : 26. パラメーター
    名前 タイプ 説明
    name 文字列 オプション。クエリするフィールドの名前。
    responseFunction 関数 クエリ結果が利用可能になったときに呼び出される関数。
    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(文字列 name, 関数 responseFunction, 文字列 value) を呼び出して指定されたクエリ句 (フィルター) を実行します。エンコードされたクエリ文字列の詳細については、「 エンコードされたクエリ文字列」を参照してください。

    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. 返される内容
    タイプ 説明
    なし