GlideRecord - グローバル

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:193分
  • GlideRecord API はデータベース操作に使用されます。

    GlideRecord API は、サーバー側のコードでデータベースとやり取りするための主要な手段です。GlideRecord は、1 つのテーブルのレコードを含むオブジェクトです。API を使用して GlideRecord オブジェクトをインスタンス化し、クエリパラメーター、フィルター、制限、および順序を追加します。

    この API を使用して動的属性を作成するには、dynamic_schema_writer ロールが必要です。この API を使用して動的データを読み取るには、dynamic_schema_reader ロールが必要です。

    GlideRecord と同じ機能を実行し、ACL を適用するクラスの詳細については、「GlideRecordSecure の使用」を参照してください。

    Dynamic Schema」も参照してください。

    クエリのビルドと実行の詳細については、 GlideRecord の記事を参照してください。

    GlideRecordSecure は、GlideRecord と同じ機能を実行し、ACL も適用する GlideRecord から継承されたクラスです。詳細については、GlideServer API を参照してください。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    レコードから値を取得

    ほとんどの場合、ドット連結を使用してレコードから値を取得しないでください。ドット連結では、フィールド値ではなくオブジェクト全体が取得されます。オブジェクトを取得すると、より多くのストレージが使用され、アレイまたは サービスポータルで使用すると、望ましくない結果が生じる可能性があります。

    オブジェクト全体を取得する代わりに、次のいずれかの方法を使用してフィールド値をコピーできます。

    GlideElement オブジェクトをドット連結する必要がある場合は、 toString() メソッドを使用して値を取得します。たとえば、別の参照フィールドを設定するために、現在の発信者のマネージャー sys_idが必要な場合があります。次の例は、オブジェクト全体ではなく文字列値を取得する方法を示しています。
    var mgr = current.caller_id.manager.toString();

    動的属性

    この API には、 GlideDynamicAttributeStore - グローバル API の動的スキーマメソッドと同じ機能を持つメソッドがあります。この API の動的属性メソッドを使用して、指定された GlideRecord に対してアクションを実行します。複数のレコードに同じ動的属性グループを設定する場合は、 GlideDynamicAttributeStore API のメソッドを使用します。この API を使用すると、目的の属性を持つ GlideDynamicAttributeStore オブジェクトをステージングし、さまざまな setDynamicAttributeValues() メソッドを使用してそのオブジェクトを複数の GlideRecords にコピーできます。

    GlideRecord:GlideRecord(文字列 tableName)

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

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

    GlideRecord - addActiveQuery()

    アクティブなレコードを返すフィルターを追加します。

    表 : 2. パラメーター
    名前 タイプ 説明
    なし
    表 : 3. 返される内容
    タイプ 説明
    GlideQueryCondition アクティブなレコードを返すためのフィルター。
    var inc = new GlideRecord('incident');
    inc.addActiveQuery();
    inc.query();

    スコープ対応

    スコープ対象のアプリケーションで addActiveQuery() メソッドを使用するには、対応するスコープ対象のメソッド addActiveQuery() を使用します。

    GlideRecord - addDomainQuery(オブジェクト glideRecord)

    クエリに使用されるドメインを、ユーザーのドメインから指定された GlideRecord のドメインに変更します。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    この機能には、Domain Support - Domain Extensions Installer (com.glide.domain.msp_extensions.installer) プラグインが必要です。

    表 : 4. パラメーター
    名前 タイプ 説明
    glideRecord オブジェクト ドメインを取得する GlideRecord。
    表 : 5. 返される内容
    タイプ 説明
    なし
    //This example requires the Domain plugin be active, the Group table is the specified 
    //Domain table, and the ITIL user is in the Database Atlanta domain
    //From any domain (using queryNoDomain()) look up the incidents that an ITIL user can only see 
    //who is in the Database Atlanta domain, should expect all incidents with the global or the
    //Database Atlanta domain specified.
    var domain = new GlideRecord('sys_user');
    domain.addQuery('user_name', 'itil');
    domain.queryNoDomain();
    if (domain.next()) {
        var domainQuery = new GlideRecord('incident');
        domainQuery.addQuery('active', true);
        domainQuery.addDomainQuery(domain);
        domainQuery.query();
        gs.print('Number of Incidents for ITIL user: ' + domainQuery.getRowCount());
        while (domainQuery.next())
            gs.print(domainQuery.number);
    }

    スコープ対応

    このメソッドは、スコープ対象のアプリケーションでは使用できません。

    GlideRecord - addEncodedQuery(文字列クエリ, ブール値 enforceFieldACL)

    設定されている可能性がある他のクエリにエンコードされたクエリを追加します。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    注:
    ユーザーに基づいてクエリーアクセスを適用するには、 addUserEncodedQuery()です。
    表 : 6. パラメーター
    名前 タイプ 説明
    query 文字列 エンコードされたクエリ文字列
    enforceFieldACL ブーリアン オプション。フィールドの ACL (アクセス制御リスト) ルールを適用するかどうかを示すフラグ。
    有効な値:
    • true:フィールド ACL を適用します。
    • false:フィールド ACL を適用しません。

    デフォルト値:false

    表 : 7. 返される内容
    タイプ 説明
    なし
    var queryString = "priority=1^ORpriority=2";
     var now_GR = new GlideRecord('incident');
     
     now_GR.addEncodedQuery(queryString);
     now_GR.query();
     while (now_GR.next()) {
     gs.addInfoMessage(now_GR.number);
     }

    スコープ対応

    スコープ対象のアプリケーションで addEncodedQuery() メソッドを使用するには、対応するスコープ対象のメソッド addEncodedQuery() を使用します。

    GlideRecord - addExtraField(文字列 dotWalkedField)

    単一の要求で、フォームまたはスクリプトから 1 つ以上のドット連結フィールドのクエリを実行します。

    addExtraField() メソッドを使用すると、フォームまたはスクリプト内のドット連結要素ごとに複数のクエリを実行するのではなく (データベースへの複数回の往復が必要) の代わりに、単一のデータベース要求でドット連結フィールドをクエリできます。

    表 : 8. パラメーター
    名前 タイプ 説明
    ドットウォークフィールド 文字列 ドット連結フィールド名。フィールド名のレベルはドット (ピリオド) で区切られています。たとえば、クエリを実行する場合は 、値 Caller.Company を入力します。 会社 > 問い合わせユーザー インシデント [incident] テーブルの条件。

    dotWalkedFieldの形式は、ドット連結フォームまたはスクリプトのフィールドの左から右の順序に従います。

    表 : 9. 返される内容
    タイプ 説明
    なし
    注:
    addExtraField() メソッドは出力結果には影響しません。スクリプトでこのメソッドを使用するかどうかに関係なく、出力は常に同じです。
    次の例は、cmn_location の連絡先名フィールド (cmdb_ciフィールドの「location」参照フィールドから参照) をクエリする方法を示しています。
    注:
    この例の dotWalkedField 値 cmdb_ci.location.contact.name は、リスト内のフィールドを選択するときに、 ServiceNow® UI で "cmdb_ci fields" => "cmn_location fields" => "sys_user fields" のように見えます。
    var gliderecord = new GlideRecord("incident");
    gliderecord.addQuery("number", "INC0041457");
    gliderecord.addExtraField("cmdb_ci.location.contact.name");
    gliderecord.query();
    gliderecord.next();
    gs.print(gliderecord.cmdb_ci.location.contact.name);

    出力は、addExtraField() を使用しない gs.print(gr.cmdb_ci.location.contact.name) と同じです。addExtraField() メソッドは、ドット連結フィールドのクエリを最適化します。出力例:

    Abel Tuter

    GlideRecord - addFunction(オブジェクト function)

    事前定義された GlideDBFunctionBuilder オブジェクトをレコードに適用します。

    GlideDBFunctionBuilder スコープ対象クラスを使用して関数を定義します。関数を定義したら、 addFunction(Object function) メソッドを使用して関数をレコードに適用します。

    表 : 10. パラメーター
    名前 タイプ 説明
    関数 オブジェクト SQL 操作を定義する GlideDBFunctionBuilder または GlideDBCaseStatementBuilder オブジェクト。
    表 : 11. 返される内容
    タイプ 説明
    なし
    var functionBuilder = new GlideDBFunctionBuilder();
    var myAddingFunction = functionBuilder.add();
    myAddingFunction = functionBuilder.field('order');
    myAddingFunction = functionBuilder.field('priority');
    myAddingFunction = functionBuilder.build();
    
    var now_GR = new GlideRecord('incident');
    now_GR.addFunction(myAddingFunction);
    now_GR.addQuery(myAddingFunction, '<', 5);
    now_GR.query();
    while(now_GR.next())
    gs.log(now_GR.getValue(myAddingFunction));
    

    出力:

    *** Script: 1
    *** Script: 4
    *** Script: 3
    *** Script: 1
    *** Script: 1
    *** Script: 2
    *** Script: 1
    *** Script: 1

    GlideRecord - addInactiveQuery()

    非アクティブなレコードを返すフィルターを追加します。非アクティブなレコードでは、アクティブフラグが false に設定されています。

    表 : 12. パラメーター
    名前 タイプ 説明
    なし
    表 : 13. 返される内容
    タイプ 説明
    GlideQueryCondition アクティブフラグが false のレコード。
    var inc = new GlideRecord('incident');
    inc.addInactiveQuery();
    inc.query();

    スコープ対応

    スコープ対象のアプリケーションでは、スコープ対象のメソッド addQuery("active","false")) を使用します。

    GlideRecord - addJoinQuery(文字列テーブル)

    関連テーブルの関係に基づいてレコードを返すフィルターを追加します。

    たとえば、データベースグループ内のすべてのユーザーを検索します (テーブルsys_user_grmemberユーザー)。別の例としては、アサインされたインシデント (incident.problem_id関係を介した問題) を持つすべての問題を検索することです。

    これは真のデータベース結合ではありません。代わりに、 addJoinQuery() はサブクエリを追加します。したがって、結果セットは結合に基づいて制限されますが、アクセスできるフィールドはベーステーブルのフィールド (GlideRecord が初期化されたテーブルにあるフィールド) のみです。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    表 : 14. パラメーター
    名前 タイプ 説明
    table 文字列 テーブル名
    表 : 15. 返される内容
    タイプ 説明
    GlideQueryCondition 関係が一致するレコード。

    インシデントが関連付けられている問題を検索します。この例では、インシデントが関連付けられている問題を返します。ただし、クエリの一部として返されるインシデントからは値を取得しません。

    var prob = new GlideRecord('problem');
    prob.addJoinQuery('incident');
    prob.query();

    関連するインシデントの active=false 問題を検出します。

    // Look for Problem records
    var now_GR = new GlideRecord('problem');
     
    // That have associated Incident records
    var grSQ = now_GR.addJoinQuery('incident');
     
    // Where the Problem records are "active=false"
    now_GR.addQuery('active', 'false');
     
    // And the Incident records are "active=true"
    grSQ.addCondition('active', 'true');
     
    // Query
    now_GR.query();
     
    // Iterate and print results
    while (now_GR.next()) {
        gs.print(now_GR.getValue('number'));
    }

    スコープ対応

    スコープ対象のアプリケーションで addJoinQuery() メソッドを使用するには、対応するスコープ付きメソッド addJoinQuery() を使用します。

    GlideRecord - addJoinQuery(文字列テーブル, 文字列 primaryField)

    関連テーブルの関係に基づいてレコードを返すフィルターを追加します。

    たとえば、データベースグループ内のすべてのユーザーを検索します (テーブルsys_user_grmemberユーザー)。別の例としては、アサインされたインシデント (incident.problem_id関係を介した問題) を持つすべての問題を検索することです。

    これは真のデータベース結合ではありません。代わりに、 addJoinQuery() はサブクエリを追加します。したがって、結果セットは結合に基づいて制限されますが、アクセスできるフィールドはベーステーブルのフィールド (GlideRecord が初期化されたテーブルにあるフィールド) のみです。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    表 : 16. パラメーター
    名前 タイプ 説明
    table 文字列 テーブル名
    プライマリフィールド 文字列 sys_id 以外の場合は、プライマリフィールド。
    表 : 17. 返される内容
    タイプ 説明
    GlideQueryCondition 関係が一致するレコード。

    sys_idの代わりに結合キーの [open_by] フィールドを使用して、インシデントのある問題を検索します。

    var now_GR = new GlideRecord('problem'); 
    now_GR.addJoinQuery('incident', 'opened_by'); 
    now_GR.query();

    スコープ対応

    スコープ対象のアプリケーションで addJoinQuery() メソッドを使用するには、対応するスコープ付きメソッド addJoinQuery() を使用します。

    GlideRecord - addJoinQuery(文字列テーブル, 文字列 primaryField, 文字列 joinTableField)

    関連テーブルの関係に基づいてレコードを返すフィルターを追加します。

    たとえば、データベースグループ内のすべてのユーザーを検索します (テーブルsys_user_grmemberユーザー)。別の例としては、アサインされたインシデント (incident.problem_id関係を介した問題) を持つすべての問題を検索することです。

    これは真のデータベース結合ではありません。代わりに、 addJoinQuery() はサブクエリを追加します。したがって、結果セットは結合に基づいて制限されますが、アクセスできるフィールドはベーステーブルのフィールド (GlideRecord が初期化されたテーブルにあるフィールド) のみです。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    表 : 18. パラメーター
    名前 タイプ 説明
    table 文字列 テーブル名
    プライマリフィールド 文字列 sys_id 以外の場合は、プライマリフィールド。
    joinTableField 文字列 sys_id 以外の場合、テーブルを結合するフィールド
    表 : 19. 返される内容
    タイプ 説明
    GlideQueryCondition 関係が一致するレコード。

    インシデントcaller_idフィールド値が問題opened_byフィールドの値と一致する、インシデントが関連付けられている問題を検索します。

    var now_GR = new GlideRecord('problem'); 
    now_GR.addJoinQuery('incident', 'opened_by', 'caller_id'); 
    now_GR.query();

    スコープ対応

    スコープ対象のアプリケーションで addJoinQuery() メソッドを使用するには、対応するスコープ付きメソッド addJoinQuery() を使用します。

    GlideRecord - addNotNullQuery(文字列 fieldName)

    指定されたフィールドが null でないレコードを返すフィルターを追加します。

    表 : 20. パラメーター
    名前 タイプ 説明
    fieldName 文字列 フィールド名
    表 : 21. 返される内容
    タイプ 説明
    GlideQueryCondition パラメーターフィールドが null 以外のレコードの GlideQueryCondition。
    var target = new GlideRecord('incident'); 
      target.addNotNullQuery('short_description');
      target.query();   // Issue the query to the database to get all records
      while (target.next()) {   
         // add code here to process the incident record
      }

    スコープ対応

    スコープ対象のアプリケーションで addNotNullQuery() メソッドを使用するには、対応するスコープ対象のメソッド addNotNullQuery() を使用します。

    GlideRecord - addNullQuery(文字列 fieldName)

    指定されたフィールドが null であるレコードを返すフィルターを追加します。

    表 : 22. パラメーター
    名前 タイプ 説明
    fieldName 文字列 フィールド名
    表 : 23. 返される内容
    タイプ 説明
    GlideQueryCondition 指定されたフィールドが null であるレコードの GlideQueryCondition。
    var target = new GlideRecord('incident'); 
      target.addNullQuery('short_description');
      target.query();   // Issue the query to the database to get all records
      while (target.next()) {   
         // add code here to process the incident record
      }

    スコープ対応

    スコープ対象のアプリケーションで addNullQuery() メソッドを使用するには、対応するスコープ対象のメソッド addNullQuery() を使用します。

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

    要求をビルドする機能を提供します。この要求は、実行されると、指定されたテーブルから要求に一致する行を返します。

    SQL に精通している場合、このメソッドは "where" 句に似ています。1 回のクエリで 1 つ以上の addQuery() 呼び出しを行うことができます。このメソッドでは、クエリは AND です。クエリステートメントのいずれかを OR で処理する必要がある場合は、クラス GlideQueryCondition を使用します。

    addQuery() は通常、3 つのパラメーターで呼び出されます。テーブルフィールド、演算子、および比較値。myObj.addQuery('category','Hardware');のように、テーブルフィールドと比較値の2つのパラメータのみで呼び出すことができます。この場合の演算子は「等しい」と見なされます。

    クエリの使用の詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    注:
    ユーザーに基づいてクエリーアクセスを適用するには、 addUserQuery() です。
    表 : 24. パラメーター
    名前 タイプ 説明
    name 文字列 動的属性ストア要素内の属性へのテーブルフィールド名またはパス。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    オペレーター オブジェクト クエリ演算子。使用可能な値は、 パラメーターのデータタイプによって異なります。
    番号:
    • =
    • !=
    • >
    • >=
    • <
    • <=
    文字列 (大文字である必要があります):
    • =
    • !=
    • IN
    • NOT IN
    • STARTSWITH
    • ENDSWITH
    • 次の値を含む
    • DOES NOT CONTAIN
    • INSTANCEOF
    注:
    LIKE 演算子の代わりに CONTAINS を使用します。
    動的スキーマ演算子:
    • =
    • !=
    • <
    • >
    • <=
    • >=
    • 次の間
    • 次の値を含む
    • DOES_NOT_CONTAIN
    • ENDSWITH
    • GT_FIELD
    • GT_OR_EQUALS_FIELD
    • IN
    • ISEMPTY
    • ISNOTEMPTY
    • IS_NOT_NULL
    • IS_NULL
    • 高評価
    • LT_FIELD
    • LT_OR_EQUALS_FIELD
    • 一致
    • NOT_IN
    • NOT_LIKE
    • NOT_MATCHES
    • NSAMEAS
    • SAMEAS
    • STARTSWITH
    value オブジェクト クエリ対象の値 (大文字と小文字は区別されません)。
    表 : 25. 返される内容
    タイプ 説明
    GlideQueryCondition GlideRecord に追加された GlideQueryCondition への参照。

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

    var rec = new GlideRecord('incident');
    rec.addQuery('active',true);
    rec.addQuery('sys_created_on', ">", "2010-01-19 04:05:00");
    rec.query();
    while (rec.next()) { 
     rec.active = false;
     gs.print('Active incident ' + rec.number + ' closed');
     rec.update();
    }

    次の例は、 IN 演算子の使用方法を示しています。

    var que = new GlideRecord('incident');
    que.addQuery('number','IN','INC00001,INC00002');
    que.query();
    while(que.next()) {
     //do something....
    }

    次の例は、動的属性ストアの属性を使用してこのメソッドを呼び出す方法を示しています。

    var gr_Inc = new GlideRecord('incident');
    gr_Inc.addQuery('inc_dynamic_schema->avg_mpg', 'GT_FIELD', 'inc_dynamic_schema2->avg_mpg'); 
    gr_Inc.query();
    while(gr_Inc.next()) {
        gs.info(gr_Inc.number + " Gas Mileage 1: " + gr_Inc.getDynamicAttributeValue('inc_dynamic_schema->avg_mpg') +  " GT_FIELD Gas Mileage 2 :" + gr_Inc.getDynamicAttributeValue('inc_dynamic_schema2->avg_mpg'));
    }

    スコープ対応

    スコープ対象のアプリケーションで addQuery() メソッドを使用するには、対応するスコープ対象のメソッド addQuery() を使用します。

    GlideRecord - addSystemEncodedQuery(文字列クエリ)

    エンコードされたクエリ文字列を使用してクエリを追加します。 このメソッドを使用して、クエリーアクセスをバイパスします。

    システムレベルのアクセスが必要な場合は、このメソッドを使用して、クエリー ACL の適用がユーザーに対して明示的にバイパスされるようにします。クエリアクセスを強制するには、addUserEncodedQuery() クエリアクセスを強制するには、

    クエリー ACL チェックをバイパスするシステムレベルのアクセスのための追加の方法:

    このメソッドを GlideRecordSecure で使用する方法については、「 クエリー ACL の強制」を参照してください。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    表 : 26. パラメーター
    名前 タイプ 説明
    query 文字列 エンコードされたクエリ文字列
    表 : 27. 返される内容
    タイプ 説明
    なし

    次の例は、優先度の値が 1 または 2 の最初の 12 件のインシデントの数値を返す方法を示しています。

    var queryString = "priority=1^ORpriority=2";
    var now_GR = new GlideRecord('incident');
    now_GR.addSystemEncodedQuery(queryString);
    
    now_GR.setLimit(12);
    now_GR.query();
    
    while (now_GR.next()) {
      gs.info(now_GR.getValue('number'));
    }

    出力:

    *** Script: INC0002318
    *** Script: INC0000144
    *** Script: INC0006927
    *** Script: INC0003577
    *** Script: INC0006928
    *** Script: INC0000135
    *** Script: INC0005637
    *** Script: INC0003196
    *** Script: INC0002647
    *** Script: INC0004074
    *** Script: INC0003444
    *** Script: INC0001694

    GlideRecord - addSystemOrderBy(文字列名)

    orderBy 列を指定します。 このメソッドを使用して、クエリーアクセスをバイパスします。

    システムレベルのアクセスが必要な場合は、このメソッドを使用して、クエリー ACL の適用がユーザーに対して明示的にバイパスされるようにします。クエリアクセスを強制するには、addUserOrderBy() クエリアクセスを強制するには、

    クエリー ACL チェックをバイパスするシステムレベルのアクセスのための追加の方法:

    複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は昇順で並べ替えられます。レコードを降順に並べるには、「 addSystemOrderByDesc()」を参照してください。

    表 : 28. パラメーター
    名前 タイプ 説明
    name 文字列 この GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。
    表 : 29. 返される内容
    タイプ 説明
    なし

    次の例は、インシデントレコードを簡単な説明の昇順で並べ替える方法を示しています。

    var queryString = "priority=1";
    var now_GR = new GlideRecord('incident');
    
    now_GR.addSystemOrderBy('short_description'); // Ascending Order
    now_GR.addSystemEncodedQuery(queryString);
    
    now_GR.setLimit(6);
    now_GR.query();
    
    while (now_GR.next()) {
      gs.info(now_GR.getValue('short_description'));
    }

    出力:

    *** Script: Access token revoked
    *** Script: Access token revoked
    *** Script: Account locked, pls reset my password for Linkedin Sales Navigator
    *** Script: Active Directory (AD) synchronization error
    *** Script: Adobe Photoshop & Digital Publishing Instance is down
    *** Script: Application response time is poor when performing any action in ADP Payroll S...

    GlideRecord - addSystemOrderByDesc(文字列名)

    降順の orderBy 列を指定します。 このメソッドを使用して、クエリーアクセスをバイパスします。

    システムレベルのアクセスが必要な場合は、このメソッドを使用して、クエリー ACL の適用がユーザーに対して明示的にバイパスされるようにします。クエリアクセスを強制するには、addUserOrderByDesc() クエリアクセスを強制するには、

    クエリー ACL チェックをバイパスするシステムレベルのアクセスのための追加の方法:

    複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は降順で並べられます。レコードを昇順で並べ替えるには、「 addSystemOrderBy()」を参照してください。

    表 : 30. パラメーター
    名前 タイプ 説明
    name 文字列 GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。
    表 : 31. 返される内容
    タイプ 説明
    なし

    次の例は、インシデントレコードを簡単な説明の降順に並べ替える方法を示しています。

    var queryString = "priority=2";
    var now_GR = new GlideRecord('incident');
    
    now_GR.addSystemOrderByDesc('short_description'); //Descending Order
    now_GR.addSystemEncodedQuery(queryString);
    
    now_GR.setLimit(6);
    now_GR.query();
    
    while (now_GR.next()) {
      gs.info(now_GR.getValue('short_description'));
    }

    出力:

    *** Script: Xignite U.S. and Global Real Time Quotes upgrade to the latest version
    *** Script: Xignite Company, Market and Industry News Headlines upgrade to the latest ver...
    *** Script: Workday Talent Management Instance relocation from US datacenter to Hongkong ...
    *** Script: Warning displayed while launching Tableau Server
    *** Script: Warning displayed while launching SAP Financial Accounting
    *** Script: Warning displayed while launching Jive Daily

    GlideRecord - addSystemQuery(文字列名, オブジェクト演算子, オブジェクト値)

    要求をビルドする機能を提供します。この要求は、実行されると、指定されたテーブルから要求に一致する行を返します。 このメソッドを使用して、クエリーアクセスをバイパスします。

    システムレベルのアクセスが必要な場合は、このメソッドを使用して、クエリー ACL の適用がユーザーに対して明示的にバイパスされるようにします。クエリアクセスを強制するには、addUserQuery() クエリアクセスを強制するには、

    クエリー ACL チェックをバイパスするシステムレベルのアクセスのための追加の方法:

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    表 : 32. パラメーター
    名前 タイプ 説明
    name 文字列 テーブルフィールド名。
    オペレーター オブジェクト クエリ演算子。使用可能な値は、 パラメーターのデータタイプによって異なります。
    番号:
    • =
    • !=
    • >
    • >=
    • <
    • <=
    文字列 (大文字である必要があります):
    • =
    • !=
    • IN
    • NOT IN
    • STARTSWITH
    • ENDSWITH
    • 次の値を含む
    • DOES NOT CONTAIN
    • INSTANCEOF
    注:
    LIKE 演算子の代わりに CONTAINS を使用します。
    動的スキーマ演算子:
    • =
    • !=
    • <
    • >
    • <=
    • >=
    • 次の間
    • 次の値を含む
    • DOES_NOT_CONTAIN
    • ENDSWITH
    • GT_FIELD
    • GT_OR_EQUALS_FIELD
    • IN
    • ISEMPTY
    • ISNOTEMPTY
    • IS_NOT_NULL
    • IS_NULL
    • 高評価
    • LT_FIELD
    • LT_OR_EQUALS_FIELD
    • 一致
    • NOT_IN
    • NOT_LIKE
    • NOT_MATCHES
    • NSAMEAS
    • SAMEAS
    • STARTSWITH
    value オブジェクト クエリ対象の値 (大文字と小文字は区別されません)。
    表 : 33. 返される内容
    タイプ 説明
    GlideQueryCondition GlideRecord に追加されたクエリ条件。

    次の例は、Fred という名前のすべてのアクティブユーザーを明示的に返す方法を示しています。

    var rec = new GlideRecord('sys_user');
    rec.addSystemQuery("first_name", "=", "Fred");
    rec.query();
    
    while (rec.next()) {
      gs.info('Active user ' + rec.getValue('last_name'));
    }
    出力:
    Active user Luddy
    Active user Kunde

    GlideRecord - addUserEncodedQuery(文字列クエリ)

    エンコードされたクエリ文字列を使用してクエリを追加します。 このメソッドを使用して、ユーザーに基づいてクエリーアクセスを強制します。

    このメソッドは、現在のユーザーが (ACL に基づいて) クエリアクセス権を持つレコードのみを返します。

    関連するメソッド:

    このメソッドを GlideRecordSecure で使用する方法については、「 クエリー ACL の強制」を参照してください。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    表 : 34. パラメーター
    名前 タイプ 説明
    query 文字列 エンコードされたクエリ文字列
    表 : 35. 返される内容
    タイプ 説明
    なし

    次の例は、優先度の値が 1 または 2 の最初の 12 件のインシデントの数値を返す方法を示しています。

    var queryString = "priority=1^ORpriority=2";
    var now_GR = new GlideRecord('incident');
    now_GR.addUserEncodedQuery(queryString);
    
    now_GR.setLimit(12);
    now_GR.query();
    
    while (now_GR.next()) {
      gs.info(now_GR.getValue('number'));
    }

    出力:

    *** Script: INC0002318
    *** Script: INC0000144
    *** Script: INC0006927
    *** Script: INC0003577
    *** Script: INC0006928
    *** Script: INC0000135
    *** Script: INC0005637
    *** Script: INC0003196
    *** Script: INC0002647
    *** Script: INC0004074
    *** Script: INC0003444
    *** Script: INC0001694

    GlideRecord - addUserOrderBy(文字列名)

    orderBy 列を指定します。 このメソッドを使用して、ユーザーに基づいてクエリーアクセスを強制します。

    このメソッドは、現在のユーザーが (ACL に基づいて) クエリアクセス権を持つレコードのみを返します。

    関連するメソッド:
    • orderBy() は、ACL を強制しなくても同じ機能を提供します。
    • addSystemOrderBy() クエリアクセスチェックをバイパスします。

    複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は昇順で並べ替えられます。レコードを降順に並べ替えるには、「 addUserOrderByDesc()」を参照してください。

    表 : 36. パラメーター
    名前 タイプ 説明
    name 文字列 この GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。
    表 : 37. 返される内容
    タイプ 説明
    なし

    次の例は、インシデントレコードを簡単な説明の昇順で並べ替える方法を示しています。

    var queryString = "priority=1";
    var now_GR = new GlideRecord('incident');
    
    now_GR.addUserOrderBy('short_description'); // Ascending Order
    now_GR.addUserEncodedQuery(queryString);
    
    now_GR.setLimit(6);
    now_GR.query();
    
    while (now_GR.next()) {
      gs.info(now_GR.getValue('short_description'));
    }

    出力:

    *** Script: Access token revoked
    *** Script: Access token revoked
    *** Script: Account locked, pls reset my password for Linkedin Sales Navigator
    *** Script: Active Directory (AD) synchronization error
    *** Script: Adobe Photoshop & Digital Publishing Instance is down
    *** Script: Application response time is poor when performing any action in ADP Payroll S...

    GlideRecord - addUserOrderByDesc(文字列名)

    降順の orderBy 列を指定します。 このメソッドを使用して、ユーザーに基づいてクエリーアクセスを強制します。

    このメソッドは、現在のユーザーが (ACL に基づいて) クエリアクセス権を持つレコードのみを返します。

    関連するメソッド:

    複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は降順で並べられます。レコードを昇順で並べ替えるには、「 addUserOrderBy()」を参照してください。

    表 : 38. パラメーター
    名前 タイプ 説明
    name 文字列 GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。
    表 : 39. 返される内容
    タイプ 説明
    なし

    次の例は、インシデントレコードを簡単な説明の降順に並べ替える方法を示しています。

    var queryString = "priority=2";
    var now_GR = new GlideRecord('incident');
    
    now_GR.addUserOrderByDesc('short_description'); //Descending Order
    now_GR.addUserEncodedQuery(queryString);
    
    now_GR.setLimit(6);
    now_GR.query();
    
    while (now_GR.next()) {
      gs.info(now_GR.getValue('short_description'));
    }

    出力:

    *** Script: Xignite U.S. and Global Real Time Quotes upgrade to the latest version
    *** Script: Xignite Company, Market and Industry News Headlines upgrade to the latest ver...
    *** Script: Workday Talent Management Instance relocation from US datacenter to Hongkong ...
    *** Script: Warning displayed while launching Tableau Server
    *** Script: Warning displayed while launching SAP Financial Accounting
    *** Script: Warning displayed while launching Jive Daily

    GlideRecord - addUserQuery(文字列名, オブジェクト演算子, オブジェクト値)

    要求をビルドする機能を提供します。この要求は、実行されると、指定されたテーブルから要求に一致する行を返します。呼び出し元ユーザーには、この要求を追加するフィールドで指定されたクエリ操作を実行するためのアクセス権が必要です。 このメソッドを使用して、ユーザーに基づいてクエリーアクセスを強制します。

    このメソッドは、現在のユーザーが (ACL に基づいて) クエリアクセス権を持つレコードのみを返します。

    関連するメソッド:
    • addQuery() は、ACL を強制しなくても同じ機能を提供します。
    • addSystemQuery() クエリアクセスチェックをバイパスします。

    クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。

    glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。

    表 : 40. パラメーター
    名前 タイプ 説明
    name 文字列 テーブルフィールド名。
    オペレーター オブジェクト クエリ演算子。使用可能な値は、 パラメーターのデータタイプによって異なります。
    番号:
    • =
    • !=
    • >
    • >=
    • <
    • <=
    文字列 (大文字である必要があります):
    • =
    • !=
    • IN
    • NOT IN
    • STARTSWITH
    • ENDSWITH
    • 次の値を含む
    • DOES NOT CONTAIN
    • INSTANCEOF
    注:
    LIKE 演算子の代わりに CONTAINS を使用します。
    動的スキーマ演算子:
    • =
    • !=
    • <
    • >
    • <=
    • >=
    • 次の間
    • 次の値を含む
    • DOES_NOT_CONTAIN
    • ENDSWITH
    • GT_FIELD
    • GT_OR_EQUALS_FIELD
    • IN
    • ISEMPTY
    • ISNOTEMPTY
    • IS_NOT_NULL
    • IS_NULL
    • 高評価
    • LT_FIELD
    • LT_OR_EQUALS_FIELD
    • 一致
    • NOT_IN
    • NOT_LIKE
    • NOT_MATCHES
    • NSAMEAS
    • SAMEAS
    • STARTSWITH
    value オブジェクト クエリ対象の値 (大文字と小文字は区別されません)。
    表 : 41. 返される内容
    タイプ 説明
    GlideQueryCondition GlideRecord に追加されたクエリ条件。

    次に、現在のユーザーが表示する権限を持つ Fred という名前のユーザーのみを返す方法を示します。

    var rec = new GlideRecord('sys_user');
    rec.addUserQuery("first_name", "=", "Fred");
    rec.query();
    
    while (rec.next()) {
      gs.info('Active user ' + rec.getValue('last_name'));
    }
    出力:
    Active user Luddy
    Active user Kunde

    GlideRecord - addValue(文字列フィールド, 数値)

    現在の GlideRecord オブジェクトのデータベースレベルで、指定された数値フィールドに対してアトミックな加算および減算演算を提供します。

    通常、GlideRecord オブジェクトは 1 つのレコードとしてデータベースに書き込まれます。個々のフィールド値は定義されたとおりに保存されます。GlideRecord フィールドに値を追加するコードでは、フィールドをアトミックにインクリメントするのではなく、新しい値でデータベースに保存するだけです。

    たとえば、次のコードが実行されると、データベースの u_count フィールドの値は 2 になります。
    gs.print(now_now_GR.u_count); // "1" 
    now_GR.u_count += 1; 
    now_GR.update(); 
    now_GR.get(now_now_GR.sys_id); 
    gs.print(now_now_GR.u_count); // "2"   
    別のユーザーが同じコードを同時に実行した場合、2 つの操作がそれぞれ 1 をu_countするのではなく、最終的な効果u_count 2 つしか含まれておらず、1 つの操作の更新が実際に失われます。
    逆に、 addValue() メソッドは、レコードがアトミック演算として更新されると、データベース内で加算/減算を実行します。2 つの操作が同時に実行されると、それぞれフィールドが適切に更新されます。
    gs.print(now_now_GR.u_count); // "1" 
    now_GR.addValue("u_count", 1); 
    now_GR.update(); 
    now_GR.get(now_GR); // The record must be reloaded from the database to observe the result
    gs.print(now_now_GR.u_count); // "3", if executed concurrently with another user 
    注:
    明示的に行わない限り、新しい値はデータベースから読み戻されません。

    setValue() と同様に、addValue() の変更は、その後の update() または insert() の呼び出し後にのみデータベースで有効になります。insert() が呼び出されると、指定されたフィールドは addValue() に渡された value パラメーターで初期化されます。

    注:
    addValue() を呼び出す前に指定されたフィールドに対して setValue() が呼び出された場合、addValue() メソッドは処理されず、エラーメッセージがログに記録されます。
    表 : 42. パラメーター
    名前 タイプ 説明
    フィールド 文字列 変更するこの GlideRecord 内のフィールドの名前。

    関連付けられたフィールドが数値タイプでない場合、操作は無視されます。

    value 番号 レコードの保存時に値に追加する金額。減算演算を実行するには、単に負の値を渡します。
    表 : 43. 返される内容
    タイプ 説明
    なし

    加算される値を表示します。

    gs.print(now_GR.u_count); // "1" 
    now_GR.addValue("u_count", 1); 
    now_GR.update(); 
    now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
    gs.print(now_GR.u_count);

    出力:2

    減算された値を表示します。

    gs.print(now_GR.u_count); // "4" 
    now_GR.addValue("u_count", -1); 
    now_GR.update(); 
    now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
    gs.print(now_GR.u_count);

    出力:3

    GlideRecord - applyEncodedQuery(文字列 queryString)

    指定されたエンコードされたクエリ用語の値を設定し、現在の GlideRecord に適用します。

    表 : 44. パラメーター
    名前 タイプ 説明
    queryString 文字列 現在の GlideRecord に適用するエンコードされたクエリ。
    表 : 45. 返される内容
    タイプ 説明
    なし

    function createAcl(table, role) {
      gs.print("Checking security on table " + table);
      var now_GR = new GlideRecord("sys_security_acl");
      now_GR.addQuery("name", table);
      now_GR.addQuery("operation", "read");
      now_GR.query();
      var encQuery = now_GR.getEncodedQuery();
      if (now_GR.next()) {
        // existing acl found so use it
        createAclRole(now_GR.sys_id.toString(), role);
        return;
      } else {
      now_GR.initialize();
      now_GR.applyEncodedQuery(encQuery);
      var acl = now_GR.insert();
        gs.print("Added read access control on " + table);
        createAclRole(acl, role);
      } 
    }

    GlideRecord - applyTemplate(文字列テンプレート)

    テンプレートテーブル [sys_template] のテンプレートレコードを現在のレコードに適用します。指定されたテンプレートが見つからない場合、アクションは実行されません。

    注:
    このメソッドは、テンプレートの [次の関連子テンプレート] フィールドが入力されている場合、now_GR.insert() メソッドを自動的にインスタンス化します。詳細については、「 関連タスクレコードのテンプレートを作成する」を参照してください。
    表 : 46. パラメーター
    名前 タイプ 説明
    template 文字列 テンプレート [sys_template] テーブルのテンプレートの名前。
    表 : 47. 返される内容
    タイプ 説明
    なし
    var rec1 = new GlideRecord("incident");
    rec1.initialize();
    rec1.applyTemplate("my_incident_template");
    rec1.insert();

    GlideRecord:autoSysFields(Boolean e)

    sys_updated_by、sys_updated_on、sys_mod_count、sys_created_by、およびsys_created_onフィールドの更新を有効または無効にします。これは、履歴情報を変更せずにレコードのフィールド値を手動で更新するためによく使用されます。

    警告:
    この方法を使用する場合は注意が必要です。このメソッドを使用すると、sys_mod_countフィールドはインクリメントされず、他のsys_フィールドは更新されません。これにより、アクティビティフォーマッター、履歴セット、通知、メトリクスなどの機能が損なわれる可能性があります。
    表 : 48. パラメーター
    名前 タイプ 説明
    e ブーリアン false の場合、sys_updated_by、sys_updated_on、sys_mod_count、sys_created_by、sys_created_on への更新は無効になります。
    表 : 49. 返される内容
    タイプ 説明
    なし
    var inc = new GlideRecord('incident');
     
    // Change all Open(1) incidents to Active(2)
     
    inc.addQuery('state', 1);
    inc.query();
     
    while (inc.next()) {
      inc.autoSysFields(false);  // Do not update sys_updated_by, sys_updated_on, sys_mod_count, sys_created_by, and sys_created_on
      inc.setWorkflow(false);    // Do not run any other business rules
      inc.setValue('state', 2);
      inc.update();
    }

    GlideRecord:canCreate()

    アクセス制御ルール (ユーザーのロールを含む) がこのテーブルへの新しいレコードの挿入を許可するかどうかを決定します。

    表 : 50. パラメーター
    名前 タイプ 説明
    なし
    表 : 51. 返される内容
    タイプ 説明
    ブーリアン ユーザーのロールがこのテーブルのレコードの作成を許可するかどうかを示すフラグ。
    可能な値:
    • true:作成が許可されました
    • false:作成は許可されていません

    この例は、benefit_planテーブルにレコードを作成できるかどうかを示しています。

    canCreateBenefitPlan : function() {
      var now_GR = new GlideRecord('benefit_plan');
      return now_GR.canCreate();
    }

    スコープ対応

    スコープ対象のアプリケーションで canCreate() メソッドを使用するには、対応するスコープ対象のメソッドである canCreate() を使用します。

    GlideRecord - canDelete()

    アクセス制御ルール (ユーザーのロールを含む) がこのテーブルのレコードの削除を許可するかどうかを決定します。

    表 : 52. パラメーター
    名前 タイプ 説明
    なし
    表 : 53. 返される内容
    タイプ 説明
    ブーリアン ユーザーのロールがこのテーブルのレコードの削除を許可するかどうかを示すフラグ。
    有効な値:
    • true:削除が許可されています
    • false:削除は許可されていません
    var att = new GlideRecord('sys_attachment');
    att.get('$[sys_attachment.sys_id]');
    var sm = GlideSecurityManager.get();
    var checkMe = 'record/sys_attachment/delete';
    var canDelete = sm.hasRightsTo(checkMe, att);
    gs.log('canDelete: ' + canDelete);

    スコープ対応

    スコープ対象のアプリケーションで canDelete() メソッドを使用するには、対応するスコープ対象のメソッド canDelete() を使用します。

    GlideRecord - canRead()

    アクセス制御ルール (ACL) によって、現在のユーザーが関連付けられた GlideRecord テーブル内の現在のレコードを読み取ることが許可されているかどうかを示します。このメソッドは、特定のリソースに対して利用可能なすべての ACL を評価します。

    注:
    このメソッドは、テーブルレベルのアクセスを確認するために使用しないでください。このメソッドを 1 回呼び出すだけでは、テーブルレベルの最終的なアクセス権チェック結果を得るには不十分な場合があります。テーブルレベルのアクセスチェックを実行するには、 GlideSecurityManager.hasRightsTo() メソッドを使用します。

    ACL の詳細については、「 アクセス制御の評価順序」を参照してください。

    表 : 54. パラメーター
    名前 タイプ 説明
    なし
    表 : 55. 返される内容
    タイプ 説明
    ブーリアン ユーザーのロールが現在のレコードの読み取りを許可しているかどうかを示すフラグ。
    有効な値:
    • true:読み取りは許可されています
    • false:読み取りは許可されていません

    この例では、インシデント [incident] テーブルを反復処理し、ユーザーが各レコードの読み取り権限を持っているかどうかを確認する方法を示します。

    var grTable = new GlideRecord('incident');
    grTable.query();
    while (grTable.next()) {
      if (grTable.canRead()) 
    		…
    }

    スコープ対応

    スコープ対象のアプリケーションで canRead() メソッドを使用するには、対応するスコープ対象のメソッドである canRead() を使用します。

    GlideRecord - canWrite()

    アクセス制御ルール (ユーザーのロールを含む) がこのテーブルのレコードの更新を許可するかどうかを決定します。

    表 : 56. パラメーター
    名前 タイプ 説明
    なし
    表 : 57. 返される内容
    タイプ 説明
    ブーリアン ユーザーのロールがこのテーブルのレコードの書き込みを許可しているかどうかを示すフラグ。
    有効な値:
    • true:書き込みが許可されています
    • false:書き込みは許可されていません

    この例は、レコードをbenefit_planテーブルに書き込むことができるかどうかを示しています。

    canWriteBenefitPlan : function() {
      var now_GR = new GlideRecord('benefit_plan');
      return now_GR.canWrite();
    }

    スコープ対応

    スコープ対象のアプリケーションで canWrite() メソッドを使用するには、対応するスコープ対象のメソッドである canWrite() を使用します。

    GlideRecord - changes()

    レコード内のいずれかのフィールドが変更されたかどうかを判定します。

    表 : 58. パラメーター
    名前 タイプ 説明
    なし
    表 : 59. 返される内容
    タイプ 説明
    ブーリアン 指定されたレコードに変更があるかどうかを示すフラグ。
    可能な値:
    • true:指定されたレコードのフィールドが変更されました。
    • false:フィールドは変更されていません。

    この例は、インシデントレコードに変更があるかどうかを確認する方法を示しています。

    var now_GR = new GlideRecord("incident");
    now_GR.query();
    now_GR.next();
    if (now_GR.changes()) {
      gs.print("The incident record reported changes right after being read");
    } else {
      gs.print("The incident record has not changed");
    }

    スコープ対応

    スコープ対象のアプリケーションにこの機能を実装するには、次のようなコードを追加します。

    var now_GR = new GlideRecord("incident");
       now_GR.get("965c9e5347c12200e0ef563dbb9a7156");
       now_GR.short_description = "test";
       var elements = now_GR.getElements();
       var hasChanged = false;
       for(var i=0; i < elements.length;i++){
         var element = elements[i];
         hasChanged = hasChanged || element.changes();
         gs.info(element.getName() + ":" + element.changes());
       }
       gs.info(hasChanged);

    GlideRecord - chooseWindow(Number firstRow, Number lastRow, Boolean forceCount)

    後続のクエリによって返される行の範囲を設定します。

    chooseWindow() で setLimit() を使用する
    setLimit() メソッドは暗黙的に chooseWindow() メソッドを呼び出すため、クエリで chooseWindow() と併用すると予期しない結果が生じる可能性があります。
    • chooseWindow() メソッドが最初に呼び出された場合、そのレコードウィンドウは setLimit() メソッドによって上書きされます。
      クエリで次の行を使用すると、行 1 から始まる 100 件のレコードが返されます。
      grIncident.chooseWindow(20,30);
      grIncident.setLimit(100);
    • setLimit() メソッドが最初に呼び出された場合、chooseWindow() によって設定されたウィンドウが使用され、制限が上書きされます。
      クエリで次の行を使用すると、行 21 から始まる 10 件のレコードが返されます。
      grIncident.setLimit(5);
      grIncident.chooseWindow(20,30);
      注:
      chooseWindow() メソッドで query() を実行すると、COUNT(*) クエリがトリガーされるため、多数のレコードを含むテーブルでパフォーマンスが低下する可能性があります。chooseWindow() の前に setLimit() を使用して COUNT(*) クエリの実行をスキップできますが、setNoCount() を使用すると同じパフォーマンス上の利点が得られます。
    関連項目:
    表 : 60. パラメーター
    名前 タイプ 説明
    最初の行 番号 範囲 (両端を含む) の開始行の 0 ベースのインデックス。(値 0 は最初の行を返します)。
    lastRow 番号 範囲の終了行のゼロから始まるインデックス (排他的)。

    たとえば、 firstRow = 1 で lastRow = 5 の場合、4 つのレコードが返されます (2-5)。

    forceCount ブーリアン オプション。行数クエリを強制するかどうかを示すフラグ。この呼び出しのほとんどの実装では、行数が実行されます。テキスト検索など、行カウントが実行されない例外ケースがあります。このフラグを設定すると、行数が確実に発生します。
    有効な値:
    • true:行数は常にカウントされます。
    • false:メソッドの通常の実行で実装されている場合に行数がカウントされます。

    デフォルト値:false

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

    この例は、インシデント [incident] テーブルからレコード 3 と 4 を返す方法を示しています。

    var now_GR = new GlideRecord('incident');
    now_GR.orderBy('number');
    now_GR.chooseWindow(2, 4);
    now_GR.query();
    while (now_GR.next()) {
      gs.info(now_GR.getValue('number') + ' is within window');
    }

    出力:

    *** Script: INC0000003 is within window
    *** Script: INC0000004 is within window

    GlideRecord - deleteMultiple()

    クエリを満たすすべてのレコードを削除します。

    この方法では添付ファイルは削除されません。

    このメソッドでは、ドット連結はサポートされていません。参照テーブルで deleteMultiple() 関数を使用すると、テーブル内のすべてのレコードが削除されます。また、 deleteRecord() を使用してカスケード削除を行う場合、同じ GlideRecord オブジェクトに対する setWorkflow() の以前の呼び出しは無視されます。

    通貨フィールドのあるテーブルで deleteMultiple() は使用しないでください。常に各レコードを個別に削除してください。また、大きなテーブルを操作する場合は、このメソッドを chooseWindow() メソッドまたは setLimit() メソッドとともに使用しないでください。setLimit() メソッドは、deleteMultiple() で削除されるレコードの数を制限しません。クエリによって返されたすべてのレコードは、 setLimit() に関係なく削除されます。

    glide.db.forced.chunk.thresholdシステムプロパティは、チャンクレコードを強制的に削除および更新するしきい値を設定します。チャンクは、巨大なテーブルでプライマリキー以外の削除によってレプリケーションの問題が発生するのを防ぐのに役立ちます。詳細については、「Available system properties」を参照してください。

    注:
    deleteMultiple() を使用してカスケード削除を行う場合、同じ GlideRecord オブジェクトに対する setWorkflow() の以前の呼び出しは無視されます。
    表 : 62. パラメーター
    名前 タイプ 説明
    なし
    表 : 63. 返される内容
    タイプ 説明
    なし

    この例では、インシデントテーブルからすべての非アクティブなレコードを削除する方法を示します。

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('active','false');
    now_GR.query();
    now_GR.deleteMultiple();

    スコープ対応

    スコープ対象のアプリケーションで deleteMultiple() メソッドを使用するには、対応するスコープ対象のメソッド deleteMultiple() を使用します。

    GlideRecord:deleteRecord()

    1 件のレコードを削除します。

    表 : 64. パラメーター
    名前 タイプ 説明
    なし
    表 : 65. 返される内容
    タイプ 説明
    ブーリアン レコードが正常に削除されたかどうかを示すフラグ。
    可能な値:
    • true:レコードが削除されました。
    • false:削除するレコードが見つかりませんでした。

    この例では、インシデントテーブルからすべての非アクティブなレコードを削除する方法を示します。

    var rec = new GlideRecord('incident');
    rec.addQuery('active',false);
    rec.query();
    while (rec.next()) { 
     gs.info('Inactive incident ' + rec.number + ' deleted');
     rec.deleteRecord();
    }

    出力:

    Inactive incident INC0010010 deleted
    Inactive incident INC0010011 deleted

    この例では、レコードが挿入された直後にインシデントテーブルから削除する方法を示します。インシデント GlideRecord は、削除する前に挿入後に再ロードする必要があります。

    var grTicket = new GlideRecord('incident');
    grTicket.initialize();
    grTicket.short_description = 'Example ticket';
    grTicket.work_notes = 'An update about the ticket';
    var ins_sys_id = grTicket.insert(); // Insert the record
    grTicket.get(ins_sys_id); // Reload the inserted record
    gs.info(grTicket.deleteRecord()); // Delete the record

    出力:

    true

    スコープ対応

    スコープ対象のアプリケーションで deleteRecord() メソッドを使用するには、対応するスコープ対象のメソッド deleteRecord() を使用します。

    GlideRecord:disableSysIdInOptimization()

    grIncident.addQuery('sys_id', 'IN', listOf200SysIds) などの多数のsys_idsを渡したときに、追加のデータベースクエリが実行されないようにするデフォルトの最適化を無効にします。

    このメソッドは、呼び出された GlideRecord にのみ影響します。すべての GlideRecord のsys_id制限の最適化を変更するには、 glide.db.first_pass_sys_id_list_size.max システムプロパティの値を調整します (デフォルトは 100)。

    このメソッドを呼び出すか、 glide.db.first_pass_sys_id_list_size.max システムプロパティを調整して、 glide.db.first_pass_sys_id_list_size.max で定義したよりも多くのsys_idエントリを含むリストを渡すと、 GlideRecord.getRowCount() からの戻り値が正しくない可能性があります。

    表 : 66. パラメーター
    名前 タイプ 説明
    なし
    表 : 67. 返される内容
    タイプ 説明
    なし

    次のコード例は、 disableSysIdInOptimiation() メソッドを使用して、200 個のエントリを含むインシデントsys_idリストを渡すときにsys_id制限の最適化を無効にする方法を示しています。

    var listOf200SysIds = [ ... ]; // 200 comma separated sys_ids
    var grIncident = new GlideRecord('incident');
    grIncident.addQuery('sys_id', 'IN', listOf200SysIds);
    grIncident.disableSysIdInOptimization(); // Rowcount could be incorrect without this method call
    grIncident.query();
    if (grIncident.next())
        gs.info("Rowcount: " + grIncident.getRowCount());

    出力:

    Rowcount: 200

    GlideRecord - find(String columnName, String value)

    指定された列に一致する値を持つレコードがある場合は true を返します。見つかった場合は、一致する最初のレコードにも移動し、レコードが返されるまで基本的に next() を実行します。

    注:
    このメソッドは、GlideRecord を変更した後に update() メソッドを適用すると、既存のレコードを更新する代わりにレコードを作成します。レコードの作成を回避するには、find() を呼び出す前に next() メソッドを呼び出します。たとえば、次のようになります。
    var existingMaterials = new GlideRecord('u_m2m_material_num_service_instance');
    existingMaterials.addQuery('u_service_instance', serviceInstance.sys_id);
    existingMaterials.query();
    existingMaterials.next(); // This line added to prevent new record creation
    
    existingMaterials.find('u_material_number', 'ca41b9fd37a84200fdc25ca543990ed8');
    
    existingMaterials.u_material_quantity = 5;
    existingMaterials.update("Modify request via catalog");
    関連項目:
    表 : 68. パラメーター
    名前 タイプ 説明
    columnName 文字列 検索するフィールド名。
    value 文字列 指定されたフィールドでチェックする値。
    表 : 69. 返される内容
    タイプ 説明
    ブーリアン 現在のテーブル内のレコードのいずれかが、指定されたフィールドに一致する値を持つかどうかを示すフラグ。
    可能な値:
    • true:一致するフィールド。
    • false:一致するフィールドがありません。

    この例では、[簡単な説明] フィールドに「重大」と入力されているレコードをインシデントテーブルで検索する方法を示します。

    var now_GR = new GlideRecord("incident");
    now_GR.query();
    var shortDescription = "Critical";
    if (now_GR.find("short_description", shortDescription)) {
      gs.print("An incident with the specified field value was found");
      var recordID = now_GR.getValue("sys_id");
      gs.print("Found in the following record: " + recordID);
    } else {
      gs.print("An incident with the specified field value was not found");
    }

    出力:

    An incident with the specified field value was found
    Found in the following record: 552c48888c033300964f4932b03eb092

    GlideRecord - get(オブジェクト名, オブジェクト値)

    現在の GlideRecord オブジェクトの指定されたレコードを返します。

    このメソッドは、1 つまたは 2 つのパラメーターを受け取ります。単一のパラメーターのみが渡された場合、メソッドはそれが目的のレコードのsys_idであると見なします。見つからない場合は、値と表示値の照合を試みます。2 つのパラメーターが渡された場合、最初のパラメーターは検索する GlideRecord 内の列の名前です。2 つ目は検索する値です。複数のレコードが見つかった場合は、 next() を使用して追加のレコードにアクセスします。

    表 : 70. パラメーター
    名前 タイプ 説明
    name オブジェクト オプション。指定された value パラメーターを検索するためにインスタンス化された GlideRecord 列の名前。パラメーターが 1 つだけ渡された場合、メソッドはこのパラメーターがsys_idであると想定します。
    value オブジェクト 一致する値。計算されたフィールドの場合、レコード内のフィールドのスクリプト化されたデフォルト値に対して計算を実行するのではなく、値がそのまま照合されます。
    表 : 71. 返される内容
    タイプ 説明
    ブーリアン 要求されたレコードが見つかったかどうかを示します。
    可能な値:
    • true:レコードが見つかりました
    • false:レコードが見つかりませんでした

    この例では、sys_idを渡してインシデントレコードを取得します。

    var grIncident = new GlideRecord('incident');
    var returnValue = grIncident.get('99ebb4156fa831005be8883e6b3ee4b9');
    gs.info(returnValue); // logs true or false
    gs.info(grIncident.number); // logs Incident Number

    この例では、検索するレコードの列と検索する値を渡して、インシデントレコードを取得します。

    var grIncident = new GlideRecord('incident');
    var returnValue = grIncident.get('caller_id.name','Sylivia Wayland');
    gs.info(returnValue); // logs true or false
    gs.info(grIncident.number); // logs Incident Number

    スコープ対応

    スコープ対象のアプリケーションで get() メソッドを使用するには、対応するスコープ対象のメソッド get() を使用します。

    GlideRecord - getAttribute(文字列 fieldName)

    指定されたフィールドの辞書属性を返します。

    表 : 72. パラメーター
    名前 タイプ 説明
    fieldName 文字列 辞書属性を返すフィールド名
    表 : 73. 返される内容
    タイプ 説明
    文字列 ディクショナリー属性

    この例は、「tree_picker」の辞書属性を返す方法を示しています。

    function doit() {
      var now_GR = new GlideRecord('sys_user');
      now_GR.query("user_name","admin");
      if (now_GR.next()) {
        gs.print("we got one");
        gs.print(now_GR.location.getAttribute("tree_picker"));
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで getAttribute() メソッドを使用するには、対応するスコープ対象のメソッド getAttribute() を使用します。

    GlideRecord - getClassDisplayValue()

    テーブルのラベルを返します。

    表 : 74. パラメーター
    名前 タイプ 説明
    なし
    表 : 75. 返される内容
    タイプ 説明
    文字列 テーブルを識別するラベル。

    この例では、渡されたテーブルのラベルを出力します。

    // Display the incident table label
    var now_GR = new GlideRecord("incident");
    var value = now_GR.getClassDisplayValue();
    gs.info("The table label is " + value + ".");

    出力:

    The table label is Incident.

    スコープ対応

    スコープ対象のアプリケーションで getClassDisplayValue() メソッドを使用するには、対応するスコープ対象のメソッド getClassDisplayValue() を使用します。

    GlideRecord - getDisplayValue(文字列名)

    現在のレコードの表示値または動的属性ストア内の属性の表示値を取得します。

    Display values は、データベースとユーザーまたはシステムの設定と設定の実際の値に基づいて操作されます。

    返される表示値は、フィールドタイプによって異なります。
    • 選択肢フィールド:データベース値は数値ですが、表示値はよりわかりやすいものです。
    • 日付フィールド:データベース値は UTC 形式で、表示値はユーザーのタイムゾーンに基づいています。
    • 暗号化テキスト:データベース値は暗号化されますが、表示される値はユーザーの暗号化コンテキストに基づいて暗号化されません。
    • 参照フィールド:データベース値はsys_idですが、表示値は参照されるレコードの表示フィールドです。

    Dynamic Schema」も参照してください。

    表 : 76. パラメーター
    名前 タイプ 説明
    name 文字列 オプション。動的属性の表示値を要求する場合にのみ必要です。

    取得する動的スキーマ内の属性へのパス。

    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    表 : 77. 返される内容
    タイプ 説明
    文字列 現在のレコードまたは指定された要素の表示値。

    この例では、指定されたインシデントレコードの表示値をログに書き込みます。

    var now_GR = new GlideRecord('incident');
    now_GR.get('sys_id','<sys_id>');
    gs.info(now_GR.getDisplayValue());

    出力:

    INC0000050

    この例では、動的属性ストア要素内の属性の表示値を取得する方法を示します。

    var gr_AppTab = new GlideRecord('application_table'); 
    gr_AppTab.setValue('dyn_att_field->attr', 42); 
    gr_AppTab.setDisplayValue('dyn_att_field->attr2, true);
    gr_AppTab.update();
    gs.info('Attr value: ' + 
    gr_AppTab.getDisplayValue('dyn_att_field->attr);
    gs.info('Attr2 value: ' + 
    gr_AppTab.getDisplayValue('dyn_att_field->attr2);

    出力:

    Attr value: System error
    Attr2 value: true

    スコープ対応

    スコープ対象のアプリケーションで getDisplayValue() メソッドを使用するには、対応するスコープ対象のメソッド getDisplayValue() を使用します。

    GlideRecord - getDynamicAttribute(文字列 fullPath)

    指定された動的属性ストアパスの GlideElementDynamicAttribute オブジェクトを返します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 78. パラメーター
    名前 タイプ 説明
    fullPath 文字列 目的の動的属性を見つけるために使用するパス。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    表 : 79. 返される内容
    タイプ 説明
    オブジェクト 指定された動的属性を含む GlideElementDynamicAttribute オブジェクト。

    fullPathパラメーターが無効な場合は、null を返します。

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

    var gr_Inc = new GlideRecord('incident');
    gr_Inc.get('number', 'INC0009009');
    gr_Inc.getDynamicAttribute('attr_store->color').setValue('Blue');
    gr_Inc.update();
    
    gr_Inc = new GlideRecord('incident');
    gr_Inc.get('number', 'INC0009009');
    gs.info(gr_Inc.getDynamicAttribute('attr_store', 'color'));
    出力:
    *** Script: Blue

    GlideRecord - getDynamicAttribute(String dynamicAttributeField, String attrPath)

    指定されたテーブルフィールドと属性パスにある動的属性を含む GlideElementDynamicAttribute オブジェクトを返します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 80. パラメーター
    名前 タイプ 説明
    動的属性フィールド 文字列 動的属性を含むテーブル内のフィールドの名前。
    属性パス 文字列 関連する動的スキーマ属性を見つけるために使用する属性パス。

    形式:「 attr_name」

    attr_name:動的属性の名前。

    テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールドにあります。

    表 : 81. 返される内容
    タイプ 説明
    オブジェクト 指定された動的属性を含む GlideElementDynamicAttribute オブジェクト。

    dynamicAttributeField パラメーターまたは attrPath パラメーターのいずれかが無効な場合は、null を返します。

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

    var gr_Inc = new GlideRecord('incident');
    gr_Inc.get('number', 'INC0009009');
    gr_Inc.getDynamicAttribute('attr_store', 'color').setValue('Blue');
    gr_Inc.update();
    
    gr_Inc = new GlideRecord('incident');
    gr_Inc.get('number', 'INC0009009');
    gs.info(gr_Inc.getDynamicAttribute('attr_store', 'color'));
    出力:
    *** Script: Blue

    GlideRecord - getDynamicAttributeValue(文字列 fullPath)

    指定されたパスにある動的属性の値を返します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 82. パラメーター
    名前 タイプ 説明
    fullPath 文字列 目的の動的属性を見つけるために使用するパス。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    表 : 83. 返される内容
    タイプ 説明
    オブジェクト 指定されたパスにある動的属性の値。

    fullPathパラメーターに無効なデータが含まれている場合、または指定された属性値がサポートされているデータタイプの 1 つでない場合は、null を返します。

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

    // Update the value of the attribute 'attribute_store->time_of_purchase' incident 'INC0009009' to a timestamp (in UTC)
    var gr1 = new GlideRecord('incident');
    gr1.get('number', 'INC0009009');
    gr1.setDynamicAttributeValue('attribute_store->time_of_purchase', '2020-05-13 13:52:44');
    gr1.update();
    
    // Then retrieve the value of the attribute on the same record
    var gr2 = new GlideRecord('incident');
    gr2.get('number', 'INC0009009');
    gs.info("Time of Purchase Value        (UTC): " + gr2.getDynamicAttributeValue('attribute_store->time_of_purchase'));
    gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store->time_of_purchase'));

    出力:

    *** Script: Time of Purchase Value        (UTC): 2020-05-13 13:52:44
    *** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44

    GlideRecord - getDynamicAttributeValue(String dynamicAttributeField, String attrPath)

    現在のテーブルの指定されたフィールドにある動的属性の値と指定された属性パスを返します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 84. パラメーター
    名前 タイプ 説明
    動的属性フィールド 文字列 動的属性を含むテーブル内のフィールドの名前。
    属性パス 文字列 関連する動的スキーマ属性を見つけるために使用する属性パス。

    形式:「 attr_name」

    attr_name:動的属性の名前。

    テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールドにあります。

    表 : 85. 返される内容
    タイプ 説明
    オブジェクト 指定されたパスにある動的属性の値。

    dynamicAttributeField パラメーターまたは attrPath パラメーターのいずれかが無効な場合は、null を返します。

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

    // Update the value of the attribute 'attribute_store->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
    var gr1 = new GlideRecord('incident');
    gr1.get('number', 'INC0009009');
    gr1.setDynamicAttributeValue('attribute_store', 'time_of_purchase', '2020-05-13 13:52:44');
    gr1.update();
    
    // Then retrieve the value of the attribute on the same record
    var gr2 = new GlideRecord('incident');
    gr2.get('number', 'INC0009009');
    gs.info("Time of Purchase Value        (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'time_of_purchase'));
    gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'time_of_purchase'));

    出力:

    *** Script: Time of Purchase Value        (UTC): 2020-05-13 13:52:44
    *** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44

    GlideRecord - getDynamicAttributeDisplayValue(文字列 fullPath)

    指定されたパスにある動的属性の表示値を返します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 86. パラメーター
    名前 タイプ 説明
    fullPath 文字列 目的の動的属性を見つけるために使用するパス。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    表 : 87. 返される内容
    タイプ 説明
    文字列 指定されたパスにある動的属性の表示値。

    fullPathパラメーターが無効な場合は、null を返します。

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

    // Update the value of the attribute 'attribute_store->time_of_purchase' incident INC0009009 to a timestamp (in UTC)
    var gr1 = new GlideRecord('incident');
    gr1.get('number', 'INC0009009');
    gr1.setDynamicAttributeValue('attribute_store->time_of_purchase', '2020-05-13 13:52:44');
    gr1.update();
    
    // Then retrieve the value of the attribute on the same record
    var gr2 = new GlideRecord('incident');
    gr2.get('number', 'INC0009009');
    gs.info("Time of Purchase Value        (UTC): " + gr2.getDynamicAttributeValue('attribute_store->time_of_purchase'));
    gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store->time_of_purchase'));

    出力:

    *** Script: Time of Purchase Value        (UTC): 2020-05-13 13:52:44
    *** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44

    GlideRecord - getDynamicAttributeDisplayValue(文字列 dynamicAttributeField, 文字列 attrPath)

    指定されたテーブルフィールドと属性パスにある動的属性の表示値を返します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 88. パラメーター
    名前 タイプ 説明
    動的属性フィールド 文字列 動的属性を含むテーブル内のフィールドの名前。
    属性パス 文字列 関連する動的スキーマ属性を見つけるために使用する属性パス。

    形式:「 attr_name」

    attr_name:動的属性の名前。

    テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールドにあります。

    表 : 89. 返される内容
    タイプ 説明
    文字列 指定されたパスにある動的属性の表示値。

    dynamicAttributeField パラメーターまたは attrPath パラメーターのいずれかが無効な場合は、null を返します。

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

    // Update the value of the attribute 'attribute_store->time_of_purchase' incident INC0009009 to a timestamp (in UTC)
    var gr1 = new GlideRecord('incident');
    gr1.get('number', 'INC0009009');
    gr1.setDynamicAttributeValue('attribute_store', 'time_of_purchase', '2020-05-13 13:52:44');
    gr1.update();
    
    // Then retrieve the value of the attribute on the same record
    var gr2 = new GlideRecord('incident');
    gr2.get('number', 'INC0009009');
    gs.info("Time of Purchase Value        (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'time_of_purchase'));
    gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'time_of_purchase'));

    出力:

    *** Script: Time of Purchase Value        (UTC): 2020-05-13 13:52:44
    *** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44

    GlideRecord - getED()

    要素の記述子を返します。

    表 : 90. パラメーター
    名前 タイプ 説明
    なし
    表 : 91. 返される内容
    タイプ 説明
    GlideElementDescriptor 要素の記述子。

    この例では、インシデント GlideRecord の名前フィールドを取得する方法を示しています。

    grInc = new GlideRecord('incident');
    grInc.getActiveQuery();
    grInc.query();
    if (grInc.next())
      gs.info("Table Descriptor is - " + grInc.getED().getName());
    

    出力:

    Table Descriptor is - incident

    スコープ対応

    スコープ対象のアプリケーションで getED() メソッドを使用するには、対応するスコープ対象のメソッド getED() を使用します。

    GlideRecord - getElement(文字列 fieldName)

    指定されたフィールドの GlideElement を取得します。

    このメソッドによって返される値は、完全な GlideElement オブジェクトです。結果は、フィールド値をドット連結するのと同じです。たとえば、 now_GR.getElement('short_description')nowGR.short_description と同じ結果を提供します。

    ほとんどの場合、ドット連結を使用してレコードから値を取得しないでください。ドット連結では、フィールド値ではなくオブジェクト全体が取得されます。オブジェクトを取得すると、より多くのストレージが使用され、アレイまたは サービスポータルで使用すると、望ましくない結果が生じる可能性があります。

    オブジェクト全体を取得する代わりに、次のいずれかの方法を使用してフィールド値をコピーできます。

    GlideElement オブジェクトをドット連結する必要がある場合は、 toString() メソッドを使用して値を取得します。たとえば、別の参照フィールドを設定するために、現在の発信者のマネージャー sys_idが必要な場合があります。次の例は、オブジェクト全体ではなく文字列値を取得する方法を示しています。
    var mgr = current.caller_id.manager.toString();

    参照: GlideElement:toString()

    表 : 92. パラメーター
    名前 タイプ 説明
    fieldName 文字列 GlideElement オブジェクトを返す列名。
    表 : 93. 返される内容
    タイプ 説明
    GlideElement 現在のレコードの指定された列の GlideElement。各オブジェクトは、現在の GlideRecord のフィールドを記述します。

    この例では、渡されたテーブルの GlideElement オブジェクトを取得し、それらを予想されるシステムメタデータ値と比較する方法を示します。

    function compareElement(comment, table, element, /*{}*/ expected) {
      var now_GR = new GlideRecord(table);
      var el = now_GR.getElement(element);
      for (var n in expected) {
        assertEquals(comment + ":" + table + "." + element, expected[n], el.sys_meta[n]);
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで getElement() メソッドを使用するには、対応するスコープ対象のメソッド getElement() を使用します。

    GlideRecord - getEncodedQuery()

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

    表 : 94. パラメーター
    名前 タイプ 説明
    なし
    表 : 95. 返される内容
    タイプ 説明
    文字列 エンコードされたクエリ文字列

    この例では、後で読み取り ACL ロールを作成するために使用する現在のエンコードクエリを取得する方法を示します。

    function createAcl(table, role) {
      gs.print("Checking security on table " + table);
      var now_GR = new GlideRecord("sys_security_acl");
      now_GR.addQuery("name", table);
      now_GR.addQuery("operation", "read");
      now_GR.query();
      var encQuery = now_GR.getEncodedQuery();
      if (now_GR.next()) {
        // existing acl found so use it
        createAclRole(now_GR.sys_id.toString(), role);
       return;
      } else {
        now_GR.initialize();
        now_GR.applyEncodedQuery(encQuery);
        var acl = now_GR.insert();
        gs.print("   Added read access control on " + table);
        createAclRole(acl, role);
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで getEncodedQuery() メソッドを使用するには、対応するスコープ対象のメソッド getEncodedQuery() を使用します。

    GlideRecord - getEscapedDisplayValue()

    現在のレコードの表示フィールドのフィールド値を取得し、Jelly スクリプトで使用するエスケープ文字を追加します。

    注:
    このメソッドを機能させるには、関連するテーブルに表示値が設定されている必要があります。これを行う方法については、「 テーブル表示値としてフィールドを選択する」を参照してください。
    表 : 96. パラメーター
    名前 タイプ 説明
    なし
    表 : 97. 返される内容
    タイプ 説明
    文字列 現在のテーブルの表示フィールドのエスケープされた値。

    この例では、ユーザー [sys_user] テーブルからuser_nameエスケープされた表示値を取得する方法を示します。

    var userName = "Michael J'ones";
    var now_GR = new GlideRecord("sys_user");
    if (now_GR.get("user_name", userName)) {
      gs.print("Deleting existing user=" + userName);
      now_GR.deleteRecord();
    }
    now_GR.initialize();
    
    var name = userName.split(" ", 2);
    var firstName = name[0];
    var lastName = name[1];
    now_GR.setValue("user_name", userName);
    gs.print("Name: " + now_GR.getValue("user_name"));
    now_GR.setValue("first_name", firstName);
    now_GR.setValue("last_name", lastName);
    var escapeValue = now_GR.getEscapedDisplayValue();
    gs.print("Escaped name: " + escapeValue);

    出力:

    Name: Michael J'ones
    Escaped name: Michael J\'ones

    GlideRecord - getFields()

    現在のレコード内のフィールドの Java ArrayList を取得します。

    表 : 98. パラメーター
    名前 タイプ 説明
    なし
    表 : 99. 返される内容
    タイプ 説明
    Java アレイリスト 現在のレコードのフィールド
    // This can be run in "Scripts - Background" for demonstration purposes
     
    // Get a single incident record
    var grINC = new GlideRecord('incident');
    grINC.query();
    grINC.next();
    gs.print('Using ' + grINC.getValue('number'));
    gs.print('');
     
    // getFields() returns a Java ArrayList
    var fields = grINC.getFields();
     
    // Enumerate GlideElements in the GlideRecord object that have values
    gs.print('Enumerating over all fields with values:');
    for (var i = 0; i < fields.size(); i++) {
      var glideElement = fields.get(i);
      if (glideElement.hasValue()) {
        gs.print('  ' + glideElement.getName() + '\t' + glideElement);
      }
    }
    gs.print('');
     
    // Get a specific GlideElement: number
    gs.print('Getting the number field:');
    for (var i = 0; i < fields.size(); i++) {
      var glideElement = fields.get(i);
      if (glideElement.hasValue() && glideElement.getName() == 'number') {
        gs.print('  ' + glideElement.getName() + '\t' + glideElement);
      }
    }

    GlideRecord - getLabel()

    フィールドのラベルを取得します。

    表 : 100. パラメーター
    名前 タイプ 説明
    なし
    表 : 101. 返される内容
    タイプ 説明
    文字列 フィールドのラベル

    この例では、[要求アイテム] テーブルの質問フィールドのラベルを取得し、ラベルとその表示名を印刷する方法を示します。

    template.print("Summary of Requested items:\n");  
    var now_GR = new GlideRecord("sc_req_item");
    now_GR.addQuery("request", current.sysapproval);
    now_GR.query();
    while(now_GR.next()) {
    var nicePrice = now_GR.price.toString();
        if (nicePrice != '') {
            nicePrice = parseFloat(nicePrice);
            nicePrice = nicePrice.toFixed(2);
        }
        template.print(now_GR.number + ":  " + now_GR.quantity + " X " + now_GR.cat_item.getDisplayValue() 
                         + " at $" + nicePrice + " each \n");
        template.print("    Options:\n");
        for (key in now_GR.variables) {
        var now_V = now_GR.variables[key];
          if(now_V.getGlideObject().getQuestion().getLabel() != '') {
             template.space(4);
             template.print('     ' + now_V.getGlideObject().getQuestion().getLabel() + " = " 
                         + vnow_V.getDisplayValue() + "\n");  
          }
        }
    }

    スコープ対応

    スコープ対象のアプリケーションで getLabel() メソッドを使用するには、対応するスコープ対象のメソッド getLabel() を使用します。

    GlideRecord:getLocation()

    テーブル内の現在のレコードの行番号を取得します。

    表 : 104. パラメーター
    名前 タイプ 説明
    なし
    表 : 105. 返される内容
    タイプ 説明
    番号 テーブル内の現在のレコードの 0 から始まる行番号。

    この例では、レコード数をレコードの場所番号と比較して、インシデントテーブル内のレコードが正しく取得されていないかどうかを確認する方法を示します。

    var now_GR = new GlideRecord("incident");
    now_GR.addQuery("priority", "4");
    now_GR.query();
    for (x=0; x <4; x++) {
      now_GR.next();
      gs.print("Location value: " + now_GR.getLocation());
    }

    出力:

    Location value: 0
    Location value: 1
    Location value: 2
    Location value: 3

    GlideRecord:getPlural()

    GlideRecord テーブルの複数形ラベルを取得します。

    たとえば、テーブル名が「変更要求」の場合、このメソッドは「変更要求」を返します。

    表 : 106. パラメーター
    名前 タイプ 説明
    なし
    表 : 107. 返される内容
    タイプ 説明
    文字列 GlideRecord のテーブルの複数形ラベル。

    この例は、インシデントテーブルの getLabel()getPlural() の戻り値をチェックする方法を示しています。

    var now_GR = new GlideRecord('incident');
    gs.print(now_GR.getLabel());
    if (now_GR.getLabel() != 'Incident')
    throw "GlideRecord.getLabel() returned unexpected value for table 'incident': " + now_GR.getLabel();
    
    gs.print(now_GR.getPlural());
    if (now_GR.getPlural() != 'Incidents')
    throw "GlideRecord.getPlural() returned unexpected value for table 'incident': " + now_GR.getPlural();
    "success";

    スコープ対応

    スコープ対象のアプリケーションで getPlural() メソッドを使用するには、スコープ対象の GlideRecord.getED() メソッドを使用してフィールドの記述子を取得し、スコープ対象の GlideElementDescriptor.getPlural() メソッドを使用します。

    GlideRecord - getRecordClassName()

    現在のレコードのクラス (テーブル) 名を取得します。

    表 : 108. パラメーター
    名前 タイプ 説明
    なし
    表 : 109. 返される内容
    タイプ 説明
    文字列 クラスまたはテーブルの名前
    function TaskAssignmentFilter() {
      var classname = current.getRecordClassName();
      var filter = "type=null";
      if (classname == "incident" && current.category == "database") {
        filter = GetGroupFilter("database");
      }
      else {
        // append exclusion for 'catalog' to the filter
        var cat = new GlideRecord("sys_user_group_type");  
        cat.addQuery("name", "catalog");
        cat.query();
        if (cat.next()) {
          filter += "^ORtype!=" + cat.sys_id;
        }
      }
      gs.log("TaskAssignmentFilter: " + filter);
      return filter;
    }

    スコープ対応

    スコープ対象のアプリケーションで getRecordClassName() メソッドを使用するには、対応するスコープ対象のメソッド getRecordClassName() を使用します。

    GlideRecord:getRelatedLists()

    現在の GlideRecord に関連付けられている関連リストの名前と表示値のリストを取得します。

    表 : 110. パラメーター
    名前 タイプ 説明
    なし
    表 : 111. 返される内容
    タイプ 説明
    ハッシュマップ 関連リストの名前と表示値を含むハッシュマップ。

    この例では、現在の GlideRecord に関連付けられている関連リストの名前と表示値のリストを取得し、それらをアレイに格納してから、その値を出力する方法を示します。

    var now_GR = new GlideRecord('incident');
    var c = now_GR.getRelatedLists().values().toArray();
    var numElements = c.length;
    for( var i = 0; i < numElements; ++i){
      gs.print(i+": "+c[i]);
    }

    GlideRecord:getRelatedTables()

    現在のレコードによって参照されているテーブルの名前と表示値のリストを取得します。

    表 : 112. パラメーター
    名前 タイプ 説明
    なし
    表 : 113. 返される内容
    タイプ 説明
    ハッシュマップ 関連テーブルの名前と表示値を含むハッシュマップ。

    この例では、現在の GlideRecord に関連するテーブルの名前と表示値のリストを取得し、それらをアレイに格納してから、その値を出力する方法を示します。

    var now_GR = new GlideRecord('incident');
    var c = now_GR.getRelatedTables().values().toArray();
    var numElements = c.length;
    for( var i = 0; i < numElements; ++i){
      gs.print(i+": "+c[i]);
    }

    GlideRecord:getRowCount()

    現在の GlideRecord オブジェクトの行 (レコード) 数を取得します。

    注:
    GlideRecord は一致するレコードを返すため、レコード数のみが必要な場合は GlideAggregate ほど効率的ではない可能性があります。レコード数のみが必要で、一致するレコードを反復処理しない場合は、 GlideAggregate を使用します。
    GlideRecord または GlideAggregate のレコード数を取得しています
    GlideRecord getRowCount() API と GlideAggregate getAggregate() API は、同様の情報を提供します。次の基準を使用して、どのオプションが最適かを判断します。
    • GlideRecord getRowCount() メソッドは、レコード自体とともにクエリから返されたレコードの数を示します。レコードに対してアクションを実行するためにセットを反復処理する前後の結果セット内のレコード数が必要な場合は、このメソッドを使用します。
    • GlideAggregate getAggregate() メソッドは、実際のレコードを除いて、クエリに一致するレコード数のみを取得します。クエリを発行する前に、 GlideAggregate オブジェクトで集計を設定する必要があります。
    GlideRecord getRowCount() でレコードとカウントを取得する
    次の例は、 GlideRecord getRowCount() を使用してアクティブなインシデントの合計数を取得する方法を示しています。
    var incident = new GlideRecord("incident");
    incident.addQuery("active", true);
    incident.query();
     
    gs.info("*** Total number of active incidents: {0}", incident.getRowCount());
    GlideAggregate getAggregate() でレコード数のみを取得する
    次の例は、レコード数のみを返す方法を示しています。このメソッドでは一致するレコードを使用しないため、集計クエリを使用してカウントのみを返す方がはるかに効率的です。
    var incident = new GlideAggregate("incident");
    incident.addQuery("active", true);
    incident.addAggregate("COUNT");
    incident.query();
     
    if (incident.next())
        gs.info("*** Total number of active incidents: {0}", incident.getAggregate("COUNT"));
    ソリューションに最適なオプションの決定

    レコード数のみを取得する場合は、 GlideAggregate getAggregate() メソッドが最適なオプションです。個々のレコードを使用して結果の数を取得するには、 GlideRecord getRowCount() を使用します。これは単一のクエリで提供されるためです。

    注:
    grIncident.addQuery('sys_id', 'IN', listOf200SysIds) など、100 を超えるsys_id値で sys_id IN を使用する場合に getRowCount() メソッドを使用する場合は、次のいずれかを実行する必要があります。
    • GlideRecord で disableSysIdInOptimization() メソッドを呼び出します。
    • または、 glide.db.first_pass_sys_id_list_size.max システムプロパティをリスト内のsys_ids数よりも大きい値に調整します。
    さらに、getRowCount() メソッドを呼び出す前に、必ず .next() メソッドを呼び出してください。
    表 : 114. パラメーター
    名前 タイプ 説明
    なし
    表 : 115. 返される内容
    タイプ 説明
    番号 現在の GlideRecord の行数。

    次の例は、インシデント [incident] テーブルからインシデント数を取得する方法を示しています。

    var numberOfIncidents = new GlideRecord('incident');
    numberOfIncidents.query();
    gs.info("Records in incident table: " + numberOfIncidents.getRowCount());

    出力:

    Records in incident table: 6920

    次のコード例は、 disableSysIdInOptimiation() メソッドを使用して、200 個のエントリを含むインシデントsys_idリストを渡すときにsys_id制限の最適化を無効にする方法を示しています。

    var listOf200SysIds = [ ... ]; // 200 comma separated sys_ids
    var grIncident = new GlideRecord('incident');
    grIncident.addQuery('sys_id', 'IN', listOf200SysIds);
    grIncident.disableSysIdInOptimization(); // Rowcount could be incorrect without this method call
    grIncident.query();
    if (grIncident.next())
        gs.info("Rowcount: " + grIncident.getRowCount());

    出力:

    Rowcount: 200

    スコープ対応

    スコープ対象のアプリケーションで getRowCount() メソッドを使用するには、対応するスコープ対象のメソッド getRowCount() を使用します。

    GlideRecord:getRowNumber()

    saveLocation() または setLocation() で設定された行番号を取得します。

    現在の行番号を取得するには、 getLocation() を使用します。

    表 : 116. パラメーター
    名前 タイプ 説明
    なし
    表 : 117. 返される内容
    タイプ 説明
    番号 保存された行番号。

    この例では、ユーザーテーブルに行の場所を保存し、その行番号を取得する方法を示します。

    var now_GR = new GlideRecord('sys_user');
    now_GR.addQuery();
    now_GR.query();
    now_GR.saveLocation(5);
    var savedRow = now_GR.getRowNumber();
    gs.print("Saved row: " + savedRow);

    出力:

    Saved row: 5

    GlideRecord - getTableName()

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

    表 : 118. パラメーター
    名前 タイプ 説明
    なし
    表 : 119. 返される内容
    タイプ 説明
    文字列 テーブル名

    この例では、現在のテーブル名をシステムログに書き込む方法を示します。

    gs.log('Table: ' + current.getTableName()); 
    gs.log('Parent: ' + current.parent.sys_id); 
    var item = new GlideRecord('sc_req_item'); 
    item.addQuery('sys_id', current.parent.sys_id); 
    item.query(); 
    if(item.next()){ 
      for(var variable in item.variable_pool) {
        gs.log(variable); 
        var answer = eval ("item.variable_pool." + variable + ".getDisplayValue()");
        gs.log(answer);
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで getTableName() メソッドを使用するには、対応するスコープ対象のメソッド getTableName() を使用します。

    GlideRecord:getUniqueValue()

    レコードのプライマリキーを取得します。特に指定しない限り、通常はsys_idキーになります。

    表 : 120. パラメーター
    名前 タイプ 説明
    なし
    表 : 121. 返される内容
    タイプ 説明
    文字列 文字列としての一意のプライマリキー。キーが null の場合は null。
    var now_GR = new GlideRecord('kb_knowledge');
    now_GR.query();
    now_GR.next();
    var uniqueid = now_GR.getUniqueValue();
    gs.info(uniqueid);

    GlideRecord - getValue(文字列 fieldName)

    動的属性ストア内の指定されたフィールドの文字列値または属性の文字列値を取得します。

    注:
    フィールド暗号化エンタープライズ プラグインが有効になっていて、インスタンスがキーにアクセスできる場合、このメソッドは暗号化フィールドからクリアーテキスト値を返します。インスタンスがキーにアクセスできない場合、このメソッドは暗号化された値を返します。詳細については、「 プラットフォーム暗号化」を参照してください。

    Dynamic Schema」も参照してください。

    表 : 122. パラメーター
    名前 タイプ 説明
    fieldName 文字列 値を取得するフィールドの名前、または取得する動的属性ストア内の属性へのパス。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    表 : 123. 返される内容
    タイプ 説明
    文字列 指定された要素の値。フィールドが空の場合、またはフィールドが存在しない場合は null を返します。
    注:
    ブール値は、false と true ではなく 「0」「1」 の文字列値として返されます。

    この例では、 getValue() メソッドを使用して、比較されている 2 つの GlideRecord のフィールド値を取得します。

    function() {
      var jobExists = true;
      var jobGr;
      while(jobExists){
        jobGr = new GlideRecord("sys_trigger");
        jobExists = jobGr.get("name", "BaselineAPI: Create Baseline Job");
      }
      var baselineGr =  new GlideRecord('pm_project_baseline');
      baselineGr.get('baseline_name','Test Project Baseline');
      baselineGr.query();
     
      Assert.assertEquals(true, baselineGr.next());
      var projectGr =  new GlideRecord('pm_project');
      projectGr.get(this._project);
      Assert.assertEquals(projectGr.getValue('cost'), baselineGr.getValue('cost'));
      Assert.assertEquals((projectGr.getValue('capex_cost')), baselineGr.getValue('capex_cost'));
      Assert.assertEquals((projectGr.getValue('opex_cost')), baselineGr.getValue('opex_cost'));
      Assert.assertEquals((projectGr.getValue('budget_cost')), baselineGr.getValue('budget_cost'));
      Assert.assertEquals((projectGr.getValue('value')), baselineGr.getValue('value'));
      Assert.assertEquals((projectGr.getValue('npv_value')), baselineGr.getValue('npv_value'));  Assert.assertEquals((projectGr.getValue('score')), baselineGr.getValue('score'));
    }

    この例では、動的属性の値を取得する方法を示します。

    // Update the value of the attribute 'attribute_store->color' to 'Red' on incident INC0009009
    var gr1 = new GlideRecord('incident');
    gr1.get('number', 'INC0009009');
    gr1.setDynamicAttributeValue('attribute_store->color', 'Red');
    gr1.update();
    
    // Then retrieve the value of the attribute on the same record
    var gr2 = new GlideRecord('incident');
    gr2.get('number', 'INC0009009');
    gs.info(gr2.getValue('attribute_store->color'));

    出力:

    *** Script: Red

    スコープ対応

    スコープ対象のアプリケーションで getValue() メソッドを使用するには、対応するスコープ対象のメソッド getValue() を使用します。

    GlideRecord:hasAttachments()

    現在の GlideRecord に添付ファイルがあるかどうかを判定します。

    表 : 124. パラメーター
    名前 タイプ 説明
    なし
    表 : 125. 返される内容
    タイプ 説明
    ブーリアン 現在のレコードに添付ファイルがある場合は true、それ以外の場合は false。

    この例では、添付ファイルを確認し、添付ファイルがある場合はリンクを作成します。

    var attachment_link = '';
    var rec = new GlideRecord('sc_req_item');
    rec.addQuery('sys_id', current.request_item);
    rec.query();
    if(rec.next()){
      if(rec.hasAttachments()){
        attachment_link = gs.getProperty('glide.servlet.uri') + rec.getLink();
      }   
    }

    GlideRecord - hasNext()

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

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

    この例では、現在の GlideRecord に追加のレコードがあるかどうかに基づいてさまざまな関数を呼び出す方法を示します。

    if (now_GR.hasNext()) {
      dothis(); // found it, do it
    } else {
      dothat(); // didn't find it
    };

    スコープ対応

    スコープ対象のアプリケーションで hasNext() メソッドを使用するには、対応するスコープ対象のメソッド hasNext() を使用します。

    GlideRecord - initialize()

    現在の GlideRecord 内に、挿入前に入力するのに適した空のレコードを作成します。

    表 : 128. パラメーター
    名前 タイプ 説明
    なし
    表 : 129. 返される内容
    タイプ 説明
    なし

    この例では、to_doテーブルの新しいレコードを初期化し、レコードを作成してから、テーブルに挿入します。

    var now_GR = new GlideRecord('to_do');
    now_GR.initialize(); 
    now_GR.name = 'first to do item'; 
    now_GR.description = 'learn about GlideRecord'; 
    now_GR.insert();

    スコープ対応

    スコープ対象のアプリケーションで initialize() メソッドを使用するには、対応するスコープ対象のメソッドである initialize() を使用します。

    GlideRecord - insert()

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

    表 : 130. パラメーター
    名前 タイプ 説明
    なし
    表 : 131. 返される内容
    タイプ 説明
    文字列 挿入されたレコードのsys_id。挿入されない場合は null。

    この例では、to_doテーブルに新しいレコードを作成し、いくつかのレコードフィールドの値を設定してから、レコードをテーブルに挿入します。

    var now_GR = new GlideRecord('to_do');
    now_GR.initialize(); 
    now_GR.name = 'first to do item'; 
    now_GR.description = 'learn about GlideRecord'; 
    now_GR.insert();

    スコープ対応

    スコープ対象のアプリケーションで insert() メソッドを使用するには、対応するスコープ対象のメソッド insert() を使用します。

    GlideRecord - insertWithReferences()

    新しいレコードを挿入し、指定された情報を使用して関連レコードを挿入または更新します。

    表 : 132. パラメーター
    名前 タイプ 説明
    なし
    表 : 133. 返される内容
    タイプ 説明
    文字列 挿入されたレコードのsys_id。レコードが挿入されなかった場合は null。

    参照値が指定されていない場合 (以下を参照)、指定されたfirst_nameとlast_nameで新しいユーザーレコードが作成され、caller_id値はこの新しく作成されたsys_userレコードに設定されます。その結果、指定されたfirst_nameとlast_nameを含む新しいsys_userレコードが作成され、指定されたshort_descriptionとcaller_idを含む新しいインシデントレコードが作成されます。

    var inc = new GlideRecord('incident');
    inc.initialize();
    inc.short_description = 'New incident 1';
    inc.caller_id.first_name = 'John';
    inc.caller_id.last_name = 'Doe';
    inc.insertWithReferences();

    caller_id値が指定されている場合、そのcaller_idは指定されたfirst_nameとlast_nameで更新されます。結果は、short_description と caller_id に設定された値を持つ新しく作成されたインシデントレコードです。

    var inc = new GlideRecord('incident');
    inc.initialize();
    inc.short_description = 'New incident 1';
    inc.caller_id.setDisplayValue('David Loo');
    inc.caller_id.first_name = 'John';
    inc.caller_id.last_name = 'Doe';
    inc.insertWithReferences();

    GlideRecord - instanceOf(文字列 className)

    テーブルのタイプ\クラスについてテーブルをチェックします。

    表 : 134. パラメーター
    名前 タイプ 説明
    className 文字列 レコードのタイプまたはクラスの名前。
    表 : 135. 返される内容
    タイプ 説明
    ブーリアン テーブルが指定されたクラスのインスタンスである場合は True。

    この例では、渡されたグループ/ユーザーがsys_userテーブル/クラスタイプであるかどうかを確認します。

    function(groupOrUser, label, grantedBy) {
      var labelCheck;
      var labelRecord;
      if (typeof label === "string") {
        labelRecord = new GlideRecord('label');
        labelRecord.addQuery('name', label);
        labelRecord.query();
        labelRecord.next();
      } else {
        labelRecord = label;
      }
      if (groupOrUser.instanceOf('sys_user')) {
        labelCheck = new GlideRecord('label_user_m2m');
        labelCheck.addQuery('user', groupOrUser.sys_id);
      } else {
        labelCheck = new GlideRecord('label_group_m2m');
        labelCheck.addQuery('group', groupOrUser.sys_id);
      }
      labelCheck.addQuery('label', labelRecord.sys_id);
      if (grantedBy !== "undefined") {
        labelCheck.addQuery('granted_by', grantedBy.sys_id);
      }
      labelCheck.query();
      return labelCheck.hasNext();
    }

    GlideRecord:isNewRecord()

    現在のレコードがデータベースに挿入されたかどうかを判定します。

    このメソッドは、 newRecord() メソッドが呼び出された場合にのみ true を返します。このメソッドは、スクリプト化された ACL や UI アクションの条件では便利ですが、バックグラウンドスクリプトでは使用しないでください。

    注:
    このメソッドは、ビジネスルールの実行中に新しいレコードがある場合、またはデフォルト値と一意の ID (sys_id) でレコードを初期化するために newRecord() メソッドが使用されている場合に true を返します。それ以外の場合は、false を返します。
    表 : 136. パラメーター
    名前 タイプ 説明
    なし
    表 : 137. 返される内容
    タイプ 説明
    ブーリアン 現在のレコードが新規 (データベースに挿入されていない) かどうかを示すフラグ。
    可能な値:
    • true:レコードは新規です。
    • false:レコードは新規ではありません。

    この例では、新しいレコードがsys_userテーブルに挿入されたかどうかを確認します。

    var now_GR = new GlideRecord("sys_user");
    now_GR.newRecord();
    now_GR.setValue("user_name", "John Smith");
    gs.print("Is this a new record: " + now_GR.isNewRecord());
    
    var now_GR2 = new GlideRecord("sys_user");
    now_GR2.addQuery("user_name", "Abel Tutor");
    now_GR2.query();
    now_GR2.next();
    gs.print("Is this a new record: " + now_GR2.isNewRecord());

    GlideRecord:isValid()

    現在の GlideRecord テーブルが存在するかどうかを判定します。

    表 : 138. パラメーター
    名前 タイプ 説明
    なし
    表 : 139. 返される内容
    タイプ 説明
    ブーリアン テーブルが存在する場合 (有効) は true、それ以外の場合は false。

    この例では、インシデントテーブルが存在するかどうかを確認します。

    var testTable = new GlideRecord('incident');
    gs.print(testTable.isValid());

    スコープ対応

    スコープ対象のアプリケーションで isValid() メソッドを使用するには、対応するスコープ対象のメソッドである isValid() を使用します。

    GlideRecord:isValidField(文字列 columnName)

    指定されたフィールドが現在の GlideRecord テーブルで定義されているかどうかを決定します。

    表 : 140. パラメーター
    名前 タイプ 説明
    columnName 文字列 チェックする列の名前。
    表 : 141. 返される内容
    タイプ 説明
    ブーリアン フィールドがテーブルで定義されている場合は true、それ以外の場合は false。

    この例では、sys_class_nameフィールドがcmds_software_instanceテーブルに存在するかどうかを確認します。

    var gobj = new GlideRecord('sys_db_object');
    gobj.addQuery('name','cmdb_software_instance');
    gobj.query();
    if (!gobj.next()) {
      var si = new GlideRecord('cmdb_software_instance');
      si.query();
      var count = 0;
      while (si.next()) {
        if (!si.isValidField('sys_class_name')) {
          var ci = new GlideRecord('cmdb_ci');
          ci.name = si.name;
          ci.setNewGuidValue(si.sys_id);
          ci.sys_class_name = 'cmdb_software_instance';
          ci.insert();
          count++;
        }
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで isValidField() メソッドを使用するには、対応するスコープ対象のメソッド isValidField() を使用します。

    GlideRecord:isValidRecord()

    現在のレコードが有効かどうかを判断します。

    表 : 142. パラメーター
    名前 タイプ 説明
    なし
    表 : 143. 返される内容
    タイプ 説明
    ブーリアン 現在のレコードが有効かどうかを示すフラグ。
    有効な値:
    • true:レコードは有効です。
    • false:レコードセットの末尾を過ぎています。

    この例では、渡されたsys_idによるレコード識別子がアイデアテーブル内の有効なレコードかどうかを確認します。

    function(sysId) {
      this.log('Inside acceptIdea sysId = ' + sysId);
      var now_GR = new GlideRecord('idea');
      now_GR.get(sysId);
      this.log('now_GR.isValidRecord() = ' + now_GR.isValidRecord());
      if(now_GR.isValidRecord()) {
        now_GR.setValue('state', 2);
        this.log('Updating gliderecord');
        this.log('gliderecord table name' + now_GR.getTableName());
        now_GR.update();
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで isValidRecord() メソッドを使用するには、対応するスコープ対象のメソッド isValidRecord() を使用します。

    GlideRecord - newRecord()

    GlideRecord を作成し、フィールドのデフォルト値を設定して、レコードに一意の ID を割り当てます。

    表 : 144. パラメーター
    名前 タイプ 説明
    なし
    表 : 145. 返される内容
    タイプ 説明
    なし

    この例では、新しいレコードがsys_userテーブルに挿入されたかどうかを確認します。

    var now_GR = new GlideRecord("sys_user");
    now_GR.newRecord();
    now_GR.setValue("user_name", "John Smith");
    gs.print("Is this a new record: " + now_GR.isNewRecord());
    
    var now_GR2 = new GlideRecord("sys_user");
    now_GR2.addQuery("user_name", "Abel Tutor");
    now_GR2.query();
    now_GR2.next();
    gs.print("Is this a new record: " + now_GR2.isNewRecord());

    スコープ対応

    スコープ対象のアプリケーションで newRecord() メソッドを使用するには、対応するスコープ対象のメソッド newRecord() を使用します。

    GlideRecord - next()

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

    このメソッドを使用して、GlideRecord クエリによって返されたレコードを反復処理します。

    注:
    テーブルに「next」というフィールドがある場合、このメソッドは失敗します。その場合は、 _next() メソッドを使用します。
    注:
    if(myObj.next()) コンストラクトは、返された最初のレコードのみを処理します。
    表 : 146. パラメーター
    名前 タイプ 説明
    なし
    表 : 147. 返される内容
    タイプ 説明
    ブーリアン GlideRecord に「次の」レコードがあるかどうかを示すフラグ。
    有効な値:
    • true:次のレコードへの移動に成功しました。
    • false:結果セットにこれ以上レコードはありません。

    この例では、 next() メソッドを使用してインシデントテーブルを反復処理する方法を示します。

    var rec = new GlideRecord('incident');
    rec.query();
    while (rec.next()) { 
      gs.print(rec.number + ' exists');
    }

    スコープ対応

    スコープ対象のアプリケーションで next() メソッドを使用するには、対応するスコープ対象のメソッド next() を使用します。

    GlideRecord:_next()

    GlideRecord の次のレコードに移動します。next() と同じ機能を提供し、GlideRecord に next という名前の列がある場合に使用することを目的としています。

    表 : 148. パラメーター
    名前 タイプ 説明
    なし
    表 : 149. 返される内容
    タイプ 説明
    ブーリアン クエリセットにより多くのレコードがある場合は True。
    var rec = new GlideRecord('sys_template');
    rec.query();
    while (rec._next()) { 
      gs.print(rec.number + ' exists');
    }

    スコープ対応

    スコープ対象のアプリケーションで _next() メソッドを使用するには、対応するスコープ対象のメソッドである _next() を使用します。

    GlideRecord - operation()

    操作が挿入、更新、または削除のいずれであるかを決定します。

    操作を知ることで、 current.operation() を使用して、各操作を一意に処理できる汎用ビジネスルールを作成できます。

    グローバル変数 current の使用方法については、「 ビジネスルールのグローバル変数」を参照してください。

    表 : 150. パラメーター
    名前 タイプ 説明
    なし
    表 : 151. 返される内容
    タイプ 説明
    文字列 現在の操作。
    可能な値:
    • delete
    • insert
    • update

    次の例は、このメソッドをビジネスルールで使用する方法を示しています。operation() メソッドは、どの操作がイベントをトリガーしたかを検出し、更新操作と挿入操作に応じて異なるアクションを実行します。

    if(current.operation() == "update") {
      current.updates ++; } 
    if(current.operation() == "insert") {
      current.updates = 0; }

    この例では、 operation() メソッドを使用して操作値を startFlow() メソッドに渡す方法を示します。

    function createNewTransferOrder() {
      var toGr = new GlideRecord("alm_transfer_order");
      toGr.initialize();
      // From Stockroom - Southern California Warehouse
      toGr.setValue('from_stockroom', fromStockroomSysId);
      // To Stockroom - San Diego North - Pickup/Dropoff
      toGr.setValue('to_stockroom', toStockroomSysId);
      var transferOrder = toGr.insert();
    
      if(toGr.get(transferOrder)){
      // Start Transfer Order Workflow
      var wf = new Workflow();
      var context = wf.startFlow(toWorkflowSysId, toGr, toGr.operation(),{});
        createNewTransferOrderLine(transferOrder);
      } 
    }

    スコープ対応

    スコープ対象のアプリケーションで operation() メソッドを使用するには、対応するスコープ対象のメソッド operation() を使用します。

    GlideRecord - orderBy(文字列 fieldName)

    クエリセットの順序付けに使用するフィールド名、または動的属性ストア内の属性へのパスを指定します。複数のフィールドで並べ替えるには、異なるフィールド値でこのメソッドを複数回呼び出します。

    注:
    ユーザーに基づいてクエリーアクセスを適用するには、 addUserOrderBy() です。
    表 : 152. パラメーター
    名前 タイプ 説明
    fieldName 文字列 クエリセットを並べ替えるテーブルフィールド名、または動的属性ストア内の属性へのパス。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    表 : 153. 返される内容
    タイプ 説明
    なし

    この例では、クエリセットを「order」、次に「number」で並べ替える方法を示します。

    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();
      var len = child.getRowCount().toString().length;
      var seq = 0;
      while (child.next()) {
        count += UpdateProjectTaskWBS(child, 1, ++seq, len, '');
      }
      gs.addInfoMessage(count + ' Project Tasks updated');
    }

    この例では、動的属性ストア内の属性によって設定されたクエリを順序付けする方法を示します。

    var gr_Inc = new GlideRecord('incident');
    gr_Inc.orderBy('attribute_store->first_name');
    gr_Inc.query();
    
    while(gr_Inc.next()) {
      gs.info("first_name: " + gr_Inc.getValue('attribute_store->first_name'));
    }
    出力:
    *** Script: first_name: Alejandro
    *** Script: first_name: Bertie
    *** Script: first_name: Beth
    *** Script: first_name: Bow
    *** Script: first_name: Bud
    *** Script: first_name: Carol
    *** Script: first_name: Charlie
    *** Script: first_name: Christen
    *** Script: first_name: David

    スコープ対応

    スコープ対象のアプリケーションで orderBy() メソッドを使用するには、対応するスコープ対象のメソッド orderBy() を使用します。

    GlideRecord - orderByDesc(文字列 fieldName)

    クエリセットを降順に並べ替えるために使用するフィールドまたは動的属性ストアの属性を指定します。

    注:
    ユーザーに基づいてクエリーアクセスを適用するには、 addUserOrderByDesc()です。
    表 : 154. パラメーター
    名前 タイプ 説明
    fieldName 文字列 テーブルフィールド名、または動的属性ストア内の属性へのパス。クエリセットを降順で並べ替えます。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    表 : 155. 返される内容
    タイプ 説明
    なし

    この例では、クエリセットを昇順または降順で並べ替える方法を示します。

    function(fiscalType, orderByDesc) {
      var now_GR = new GlideRecord('fiscal_period');
      now_GR.addQuery('fiscal_type', fiscalType);
      if (orderByDesc) {
        now_GR.orderByDesc('fiscal_start_date_time');
      } else {
        now_GR.orderBy('fiscal_start_date_time');
      }
      now_GR.setLimit(1);
      now_GR.query();
      now_GR.next();
      return now_GR.sys_id;
    }

    この例では、動的属性ストア内の属性によって設定されたクエリを順序付けする方法を示します。

    var gr_Inc = new GlideRecord('incident');
    gr_Inc.orderByDesc('attribute_store->first_name');
    gr_Inc.query();
    
    while(gr_Inc.next()) {
      gs.info("first_name: " + gr_Inc.getValue('attribute_store->first_name'));
    }
    出力:
    
    *** Script: first_name: David
    *** Script: first_name: Christen
    *** Script: first_name: Charlie
    *** Script: first_name: Carol
    *** Script: first_name: Bud
    *** Script: first_name: Bow
    *** Script: first_name: Beth
    *** Script: first_name: Bertie
    *** Script: first_name: Alejandro

    スコープ対応

    スコープ対象のアプリケーションで orderByDesc() メソッドを使用するには、対応するスコープ対象のメソッド orderByDesc() を使用します。

    GlideRecord - query(文字列フィールド, 文字列値)

    addQuery()addEncodedQuery() などのクエリメソッドで指定されたフィルターに基づいて、テーブルに対してクエリを実行します。

    このメソッドは、GlideRecord テーブルとテーブルの参照を照会します。詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。

    注:
    テーブルに「query」というフィールドがある場合、このメソッドは失敗します。その場合は、 _query() メソッドを使用します。ドメインセパレーションされたインスタンスでクエリーを実行するには、 queryNoDomain() メソッドを使用します。

    クエリのビルドと実行の詳細については、 GlideRecord の記事を参照してください。

    表 : 156. パラメーター
    名前 タイプ 説明
    name 文字列 オプション - 値パラメーターも指定する必要があります。値パラメーターで指定された値を検索するフィールドの名前。
    注:
    通常、このメソッドは引数なしで実行されますが、名前と値のペアを指定して、指定した値を含むレコードをフィルタリングできます。パラメーターを指定すると、「名前=値」条件がクエリに追加されます。
    value 文字列 オプション - フィールドパラメーターも指定する必要があります。指定されたフィールドパラメーターで検索する値。
    表 : 157. 返される内容
    タイプ 説明
    なし

    次の例は、システム辞書 [sys_dictionary] でクエリフィールドのあるテーブルをスキャンする方法を示しています。

    var tableArr = [];
    
    var now_GR = new GlideRecord('sys_dictionary');
    now_GR.addQuery('element', 'query');
    now_GR.setLimit(6);
    
    now_GR.query();
    
    while(now_GR.next()){
       tableArr.push(now_GR.name.getValue());
    };
    
    gs.info('The following tables have a field column called "query":');
    
    for (i = 0; i < tableArr.length; i++) {
       gs.info(tableArr[i]);
    };

    出力:

    The following tables have a field column called "query":
    cmdb_convert_bulk_services
    cmdb_multisource_query_status
    cmdb_qb_result_base
    cmdb_qb_table_mapping
    discovery_probes_cim_query
    kb_feedback

    スコープ対応

    スコープ対象のアプリケーションで query() メソッドを使用するには、対応するスコープ対象のメソッド query() を使用します。

    GlideRecord - _query(文字列フィールド, 文字列値)

    addQuery()addEncodedQuery() などのクエリメソッドで指定されたフィルターに基づいて、テーブルに対してクエリを実行します。 このメソッドは、「query」という名前の列があるテーブルで使用することを目的としています。そのため、query() メソッドの実行中にエラーが発生する可能性があります。

    このメソッドは、GlideRecord テーブルとテーブルの参照を照会します。詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。

    クエリのビルドと実行の詳細については、 GlideRecord の記事を参照してください。

    表 : 158. パラメーター
    名前 タイプ 説明
    name 文字列 オプション - 値パラメーターも指定する必要があります。値パラメーターで指定された値を検索するフィールドの名前。
    注:
    通常、このメソッドは引数なしで実行されますが、名前と値のペアを指定して、指定した値を含むレコードをフィルタリングできます。パラメーターを指定すると、「名前=値」条件がクエリに追加されます。
    value 文字列 オプション - フィールドパラメーターも指定する必要があります。指定されたフィールドパラメーターで検索する値。
    表 : 159. 返される内容
    タイプ 説明
    なし

    次の例は、ナレッジフィードバック [kb_feedback] テーブルに対してクエリを実行し、Excel を含むコメントを含む KB 記事を一覧表示する方法を示しています。

    var rec = new GlideRecord('kb_feedback');
    rec.addQuery('comments', 'CONTAINS', 'Excel');
    rec._query();
    while (rec.next()) { 
     gs.info(rec.getDisplayValue('article') + " comment: " + rec.getValue('comments'));
    }

    出力:

    KB0000005 comment: 
    	     Can you please add the version of Excel this applies to? All?
    		
    KB0000005 comment: 
    	     Does this work for all Excel versions? OSX and Windows alike?

    スコープ対応

    スコープ対象のアプリケーションで _query() メソッドを使用するには、対応するスコープ対象のメソッドである _query()) を使用します。

    GlideRecord - queryNoDomain(文字列フィールド, 文字列値)

    ドメインセパレーションされたインスタンスで使用されます。query() と同様に、addQuery() および addEncodedQuery() で指定されたフィルターに基づいてテーブルに対してクエリを実行しますが、ドメインは無視します。

    このメソッドは、GlideRecord テーブルとテーブルの参照を照会します。詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。

    表 : 160. パラメーター
    名前 タイプ 説明
    name 文字列 オプション - 値パラメーターも指定する必要があります。値パラメーターで指定された値を検索するフィールドの名前。
    注:
    通常、このメソッドは引数なしで実行されますが、名前と値のペアを指定して、指定した値を含むレコードをフィルタリングできます。パラメーターを指定すると、「名前=値」条件がクエリに追加されます。
    value 文字列 オプション - フィールドパラメーターも指定する必要があります。指定されたフィールドパラメーターで検索する値。
    表 : 161. 返される内容
    タイプ 説明
    なし

    この例は、すべてのドメインのインシデントテーブルをクエリする方法を示しています。

    var rec = new GlideRecord('incident');
    rec.queryNoDomain();
    while (rec.next()) { 
     gs.print(rec.number + ' exists');
    }

    GlideRecord - restoreLocation()

    現在のレコードを saveLocation() で保存されたレコードに設定します。saveLocation() が呼び出されていない場合、現在のレコードは GlideRecord の最初のレコードに設定されます。

    表 : 162. パラメーター
    名前 タイプ 説明
    なし
    表 : 163. 返される内容
    タイプ 説明
    なし

    この例では、現在のレコードの場所を保存し、次のレコードに移動してから、保存した場所に戻る方法を示します。

    function() {
      var now_GR = new GlideRecord("incident");
      now_GR.query();
      now_GR.next();
      var firstID = now_GR.getValue("sys_id");
      now_GR.next();
      var restoreID = now_GR.getValue("sys_id");
      now_GR.saveLocation();
      now_GR.next();
      var lastID = now_GR.getValue("sys_id");
      now_GR.restoreLocation();
      now_GR.next();
      var thisID = now_GR.getValue("sys_id");
      var progress = "first id=" + firstID
        + "\n\t last id=" + lastID
        + "\n\t saved id=" + restoreID
        + "\n\t restored id=" + thisID;
      gs.print("Progress:\n\t" + progress);
    }

    GlideRecord - saveLocation()

    restoreLocation() メソッドを使用してこの場所に戻ることができるように、現在の行番号を保存します。

    表 : 164. パラメーター
    名前 タイプ 説明
    なし
    表 : 165. 返される内容
    タイプ 説明
    なし

    この例では、現在のレコードの場所を保存し、次のレコードに移動してから、保存した場所に戻る方法を示します。

    function() {
      var now_GR = new GlideRecord("incident");
      now_GR.query();
      now_GR.next();
      var firstID = now_GR.getValue("sys_id");
      now_GR.next();
      var restoreID = now_GR.getValue("sys_id");
      now_GR.saveLocation();
      now_GR.next();
      var lastID = now_GR.getValue("sys_id");
      now_GR.restoreLocation();
      now_GR.next();
      var thisID = now_GR.getValue("sys_id");
      var progress = "first id=" + firstID
        + "\n\t last id=" + lastID
        + "\n\t saved id=" + restoreID
        + "\n\t restored id=" + thisID;
      gs.print("Progress:\n\t" + progress);
    }

    GlideRecord:setAbortAction(ブール b)

    次のデータベースアクション (挿入、更新、削除) を中止するかどうかを示すフラグを設定します。

    onBefore ビジネスルールで使用して、データベースアクションが実行されないようにします。ビジネスルールは、 setAbortAction() が呼び出された後も実行を継続します。setAbortAction() を呼び出しても、後続のビジネスルールの実行は停止されません。このメソッドを呼び出すと、データベースアクションの実行のみが防止されます。

    表 : 166. パラメーター
    名前 タイプ 説明
    b ブーリアン True の場合は次のアクションを中止するか、false の場合は次のアクションを許可します。
    表 : 167. 返される内容
    タイプ 説明
    なし
    if ((!current.u_date1.nil()) && (!current.u_date2.nil())) {
      var start = current.u_date1.getGlideObject().getNumericValue();
      var end = current.u_date2.getGlideObject().getNumericValue();
      if (start > end) {
        gs.addInfoMessage('start must be before end');
        current.u_date1.setError('start must be before end');
        current.setAbortAction(true);
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで setAbortAction() メソッドを使用するには、対応するスコープ対象のメソッド setAbortAction() を使用します。

    GlideRecord - setDisplayValue(文字列名, オブジェクト値)

    指定されたフィールド、または動的属性ストアの属性を、指定された表示値に設定します。

    参照フィールドの場合、これはテーブルの表示値です。日付/時刻の場合、これは発信者の現在のタイムゾーンの時刻です。

    表 : 168. パラメーター
    名前 タイプ 説明
    name 文字列 値を設定するフィールドの名前。

    動的属性ストア内で属性を設定するには、属性パスを指定します。

    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    value オブジェクト 指定された属性に設定する値。
    注:
    動的属性の場合、次のデータタイプのみがサポートされています。
    • ブーリアン (True/False)
    • 10 進数
    • 浮動小数点数
    • GlideDate
    • GlideDateTime
    • 整数
    • 文字列
    表 : 169. 返される内容
    タイプ 説明
    なし

    次のコード例は、レコードに表示値を設定してから、レコードを更新する方法を示しています。

    var now_GR = new GlideRecord('incident');
    now_GR.get('46f09e75a9fe198100f4ffd8d366d17b');
    now_GR.setDisplayValue('opened_at','2011-02-13 4:30:00');
    now_GR.update();

    次のコード例は、動的属性ストアで表示値を設定する方法を示しています。

    var gr_AppTab = new GlideRecord('application_table'); 
    gr_AppTab.setValue('dyn_att_field->attr', 42); 
    gr_AppTab.setDisplayValue('dyn_att_field->attr2, true);
    gr_AppTab.update();
    gs.info('Attr value: ' + 
    gr_AppTab.getDisplayValue('dyn_att_field->attr);
    gs.info('Attr2 value: ' + 
    gr_AppTab.getDisplayValue('dyn_att_field->attr2);

    GlideRecord - setDynamicAttributeValue(String fullPath, Object value)

    指定されたパスに配置されている動的属性の値を設定します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 170. パラメーター
    名前 タイプ 説明
    fullPath 文字列 目的の動的属性を見つけるために使用するパス。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    value オブジェクト 指定された動的属性を設定する値。
    渡される値は、次のいずれかのデータタイプである必要があります。
    • ブーリアン (True/False)
    • 10 進数
    • 浮動小数点数
    • GlideDate
    • GlideDateTime
    • 整数
    • 文字列
    表 : 171. 返される内容
    タイプ 説明
    ブーリアン 動的属性が正常に更新されたかどうかを示すフラグ。
    可能な値:
    • true:動的属性が正常に更新されました。
    • false:エラーが発生しました。動的属性が更新されませんでした。fullPathパラメーターに目的の属性への有効なパスが含まれていることを確認します。

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

    var gr_Inc = new GlideRecord('incident');
    gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->color","black");
    gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->make","Honda");
    gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->model","CRV");
    gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->luxury",false);
    gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cost",20000);
    gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->avg_mpg",28.4);
    gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->date_purchased", new GlideDateTime());
    gr_Inc.setDynamicAttributeValue("u_attributes->total_miles", 120000.12345);
    gr_Inc.insert();

    GlideRecord - setDynamicAttributeValue(String dynamicAttributeField, String attrPath, Object value)

    現在の GlideRecord の指定されたフィールドにある動的属性の値と指定された属性パスを設定します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 172. パラメーター
    名前 タイプ 説明
    動的属性フィールド 文字列 動的属性を含むテーブル内のフィールドの名前。
    attributePath 文字列 関連する動的スキーマ属性を見つけるために使用する属性パス。

    形式:「 attr_name」

    attr_name:動的属性の名前。

    テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールドにあります。

    value オブジェクト 指定された動的属性を設定する値。
    渡される値は、次のいずれかのデータタイプである必要があります。
    • ブーリアン (True/False)
    • 10 進数
    • 浮動小数点数
    • GlideDate
    • GlideDateTime
    • 整数
    • 文字列
    表 : 173. 返される内容
    タイプ 説明
    ブーリアン 動的属性が正常に更新されたかどうかを示すフラグ。
    可能な値:
    • true:動的属性が正常に更新されました。
    • false:エラーが発生しました。動的属性が更新されませんでした。dynamicAttributeFieldパラメーターとattrPathパラメーターに有効なデータが含まれていることを確認します。

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

    // Update the value of the attribute 'attribute_store->time_of_purchase' incident INC0009009 to a timestamp (in UTC)
    var gr1 = new GlideRecord('incident');
    gr1.get('number', 'INC0009009');
    gr1.setDynamicAttributeValue('attribute_store', 'time_of_purchase', '2020-05-13 13:52:44');
    gr1.update();
    
    // Then retrieve the value of the attribute on the same record
    var gr2 = new GlideRecord('incident');
    gr2.get('number', 'INC0009009');
    gs.info("Time of Purchase Value        (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'time_of_purchase'));
    gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'time_of_purchase'));

    出力:

    *** Script: Time of Purchase Value        (UTC): 2020-05-13 13:52:44
    *** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44

    GlideRecord - setDynamicAttributeDisplayValue(String fullPath, Object value)

    指定されたパスにある動的属性の表示値を設定します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 174. パラメーター
    名前 タイプ 説明
    fullPath 文字列 表示値を更新する動的属性を見つけるために使用するパス。
    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    value オブジェクト 指定された動的属性を設定する値を表示します。
    渡される値は、次のいずれかのデータタイプである必要があります。
    • ブーリアン (True/False)
    • 10 進数
    • 浮動小数点数
    • GlideDate
    • GlideDateTime
    • 整数
    • 文字列
    表 : 175. 返される内容
    タイプ 説明
    ブーリアン 動的属性の表示値が正常に更新されたかどうかを示すフラグ。
    可能な値:
    • true:動的属性の表示値が正常に更新されました。
    • false:エラーが発生しました。動的属性の表示値が更新されませんでした。fullPathパラメーターに目的の属性への有効なパスが含まれていることを確認します。

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

    var grProdTab = new GlideRecord('products_table');
    grProdTab.query();
    grProdTab.next();
    var val = grProdTab.setDynamicAttributeDisplayValue('product_details->date_purchased', '2023-03-31 08:54:26');

    GlideRecord - setDynamicAttributeDisplayValue(String dynamicAttributeField, String attrPath, Object value)

    現在の GlideRecord の指定されたフィールドにある動的属性の表示値と指定された属性パスを設定します。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 176. パラメーター
    名前 タイプ 説明
    動的属性フィールド 文字列 動的属性を含むテーブル内のフィールドの名前。
    属性パス 文字列 関連する動的スキーマ属性を見つけるために使用する属性パス。

    形式:「 attr_name」

    attr_name:動的属性の名前。

    テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールドにあります。

    value オブジェクト 指定された動的属性を設定する値を表示します。
    渡される値は、次のいずれかのデータタイプである必要があります。
    • ブーリアン (True/False)
    • 10 進数
    • 浮動小数点数
    • GlideDate
    • GlideDateTime
    • 整数
    • 文字列
    表 : 177. 返される内容
    タイプ 説明
    ブーリアン 動的属性の表示値が正常に更新されたかどうかを示すフラグ。
    可能な値:
    • true:動的属性の表示値が正常に更新されました。
    • false:エラーが発生しました。動的属性の表示値が更新されませんでした。dynamicAttributeFieldパラメーターとattrPathパラメーターに有効なデータが含まれていることを確認します。

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

    var grProdTab = new GlideRecord('products_table');
    grProdTab.query();
    grProdTab.next();
    var val = grProdTab.setDynamicAttributeDisplayValue('product_details', 'date_purchased', '2023-03-31 08:54:26');

    GlideRecord - setDynamicAttributeValues(文字列 dynamicAttributeField, GlideDynamicAttributeStore 値)

    渡された GlideDynamicAttributeStore オブジェクトで指定された値を使用して、1 つ以上の動的属性値を設定します。

    このメソッドは、引数として渡された属性と値のみを更新します。指定されていない GlideRecord の属性と値は、この呼び出しの影響を受けません。無効な属性または値は無視されます。考えられるエラー情報については、ログメッセージを確認してください。

    動的属性には、定義済みのデータタイプとsys_idがあります。動的属性の詳細については、「 動的スキーマ」を参照してください。

    表 : 178. パラメーター
    名前 タイプ 説明
    動的属性フィールド 文字列 動的スキーマを含む現在のテーブル内のフィールドの名前。
    GlideDynamicAttributeStore 更新する動的属性を含む GlideDynamicAttributeStore オブジェクト。
    オブジェクトに入力する値は、次のデータタイプである必要があります。
    • ブーリアン (True/False)
    • 10 進数
    • 浮動小数点数
    • GlideDate
    • GlideDateTime
    • 整数
    • 文字列
    表 : 179. 返される内容
    タイプ 説明
    なし

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

    var das = new GlideDynamicAttributeStore();
    das.setDynamicAttributeValue('attribute1', 'Apple');
    das.setDynamicAttributeValue('attribute2', 1234);
    
    var gr_Inc = new GlideRecord('incident');
    gr_Inc.query();
    gr_Inc.next();
    gr_Inc.setDynamicAttributeValues(das);

    GlideRecord - setForceUpdate(ブール強制)

    フィールドが変更されていない場合でもレコードを更新します。

    表 : 180. パラメーター
    名前 タイプ 説明
    force ブーリアン フィールドが変更されていない場合でも更新する場合は true、それ以外の場合は false。
    表 : 181. 返される内容
    タイプ 説明
    なし

    この例では、変更しなくてもitfm_cost_modelテーブルのレコードを強制的に更新する方法を示します。

    function() {
      gs.log("Update Script: Upgrade_cost_model_data.js started");
      var now_GR = new GlideRecord("itfm_cost_model");
      now_GR.initialize();
      now_GR.addNullQuery("source_table");
      now_GR.query();
      while (now_GR.next()) {
        now_GR.setForceUpdate(true);
        var sourceTable = getSourceTable(now_GR.getValue('clone_from'));
        if(sourceTable){
          now_GR.setValue("source_table", sourceTable);
          now_GR.setWorkflow(false);
          now_GR.update();
        }
      }
    }

    GlideRecord - setLimit(数制限)

    クエリから GlideRecord で返すレコードの最大数を設定します。

    chooseWindow() で setLimit() を使用する
    setLimit() メソッドは暗黙的に chooseWindow() メソッドを呼び出すため、クエリで chooseWindow() と併用すると予期しない結果が生じる可能性があります。
    • chooseWindow() メソッドが最初に呼び出された場合、そのレコードウィンドウは setLimit() メソッドによって上書きされます。
      クエリで次の行を使用すると、行 1 から始まる 100 件のレコードが返されます。
      grIncident.chooseWindow(20,30);
      grIncident.setLimit(100);
    • setLimit() メソッドが最初に呼び出された場合、chooseWindow() によって設定されたウィンドウが使用され、制限が上書きされます。
      クエリで次の行を使用すると、行 21 から始まる 10 件のレコードが返されます。
      grIncident.setLimit(5);
      grIncident.chooseWindow(20,30);
      注:
      chooseWindow() メソッドで query() を実行すると、COUNT(*) クエリがトリガーされるため、多数のレコードを含むテーブルでパフォーマンスが低下する可能性があります。chooseWindow() の前に setLimit() を使用して COUNT(*) クエリの実行をスキップできますが、setNoCount() を使用すると同じパフォーマンス上の利点が得られます。
    関連項目:
    表 : 182. パラメーター
    名前 タイプ 説明
    limit 番号 フェッチするレコードの制限。
    表 : 183. 返される内容
    タイプ 説明
    なし

    この例では、クエリで返されるレコードの数を最大 10 に設定します。

    var now_GR = new GlideRecord('incident');
    now_GR.orderByDesc('sys_created_on');
    now_GR.setLimit(10);
    now_GR.query();

    スコープ対応

    スコープ対象のアプリケーションで setLimit() メソッドを使用するには、対応するスコープ対象のメソッド setLimit() を使用します。

    GlideRecord - setLocation(Number rowNumber)

    現在の行の場所を指定された値に設定します。

    表 : 184. パラメーター
    名前 タイプ 説明
    rowNumber 番号 現在の行として設定する行番号。
    表 : 185. 返される内容
    タイプ 説明
    なし

    この例では、インシデントテーブルのレコード位置を設定する方法を示しています

    verifySetLocation : function() {
      var now_GR = new GlideRecord("incident");
      now_GR.query();
      var recordIDs = new Array();
      while(now_GR.next()) {
      recordIDs.push(now_GR.getValue("sys_id"));
      }
      for (var ix = recordIDs.length - 1; ix >= 0; ix--) {
        now_GR.setLocation(ix);
        Assert.assertEquals(recordIDs[ix], now_GR.getValue("sys_id"),
          "The entry retrieved for the index " + ix + " is not valid");
      }
    }

    GlideRecord:setNewGuid()

    新しい GUID を生成し、それを現在のレコードの一意の ID (sys_id) として設定します。

    この機能は、新しいレコードにのみ適用されます。既存のレコードの GUID を変更することはできません。

    表 : 186. パラメーター
    名前 タイプ 説明
    なし
    表 : 187. 返される内容
    タイプ 説明
    文字列 現在のレコードのSys_id。

    この例では、新しいタスクレコードを作成し、ID をtask_rel_taskテーブルに格納します。

    var task = new GlideRecord ('task');
    var tsk_id = task.setNewGuid();
     
    task.description = "Request: " + current.request.number;
    task.description = task.description + "\n" + "Requested by: " + current.request.u_requested_by.name;
    task.description = task.description + "\n" + "Requested for: " + current.request.u_requested_for.name;
    task.description = task.description + "\n" + "Item: " + current.cat_item.name;
     
    var now_GR = new GlideRecord ('task_rel_task');
    //link the incident to the request
    now_GR.parent = current.request;
    now_GR.child = tsk_id;
    now_GR.insert();

    GlideRecord - setNewGuidValue (文字列 GUID)

    新しい GUID を生成し、新しいレコードを挿入するときに、それを現在のレコードの一意の ID として設定します。

    表 : 188. パラメーター
    名前 タイプ 説明
    guid 文字列 新しい GUID の値。
    表 : 189. 返される内容
    タイプ 説明
    なし

    この例では、新しい GUID を生成し、それを新しく作成されたcmdb_software_instanceレコードの一意の ID として設定します。

    var gobj = new GlideRecord('sys_db_object');
    gobj.addQuery('name','cmdb_software_instance');
    gobj.query();
    if (!gobj.next()) {
      var si = new GlideRecord('cmdb_software_instance');
      si.query();
      var count = 0;
      while (si.next()) {
      if (!si.isValidField('sys_class_name')) {
        var ci = new GlideRecord('cmdb_ci');
        ci.name = si.name;
        ci.setNewGuidValue(si.sys_id);
        ci.sys_class_name = 'cmdb_software_instance';
        ci.insert();
        count++;
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで setNewGuidValue() メソッドを使用するには、対応するスコープ対象のメソッド setNewGuidValue() を使用します。

    GlideRecord:setNoCount()

    GlideRecord クエリによる COUNT(*) クエリの実行を停止します。

    いくつかのメソッドで query() を実行すると、chooseWindow() メソッドや getRowCount() メソッドなどの COUNT(*) クエリがトリガーされます。COUNT(*) クエリは、100 万以上のレコードを含むテーブルでパフォーマンスを低下させる可能性があります。詳細については、Now Support ナレッジベースの記事「 パフォーマンスの向上 - ページネーション数の削除 [KB0817996] 」を参照してください。
    注:
    setLimit() メソッドは COUNT(*) も停止します。setLimit() メソッドがクエリに含まれている場合、setNoCount() を使用する必要はありません。
    関連項目:
    表 : 190. パラメーター
    名前 タイプ 説明
    なし
    表 : 191. 返される内容
    タイプ 説明
    なし

    次のコード例は、setNoCount() を使用して、chooseWindow() メソッドを使用してウィンドウクエリセットの COUNT(*) クエリをスキップする方法を示しています。

    var  grIncident = new GlideRecord('incident');
    
    grIncident.chooseWindow(6915, 6920, true);
    grIncident.setNoCount();
    grIncident.query();
    
    while (grIncident.next()) { // Iterate through the returned records
        gs.info('Incident Number: ' + grIncident.number + ', Short Description: ' + grIncident.short_description);
    };

    出力:

    Incident Number: INC0006811, Short Description: Request an account to be created for Fidelity 401(k) Plans
    Incident Number: INC0006918, Short Description: Please grant me additional roles in Oracle Fin Collections
    Incident Number: INC0006812, Short Description: Taxware Value-added Tax crashes when I try to launch it
    Incident Number: INC0006919, Short Description: Unable to Access SuccessFactors Learning
    Incident Number: INC0010004, Short Description: Incident for assessment not generating

    スコープ対応

    スコープ対象のアプリケーションで setNoCount() メソッドを使用するには、対応するスコープ対象のメソッド setNoCount() を使用します。

    GlideRecord - setQueryReferences(ブール値 queryReferences)

    参照フィールドをクエリするときに、参照フィールドの表示名の使用を有効または無効にします。

    表 : 192. パラメーター
    名前 タイプ 説明
    queryReference ブーリアン 生成するデータの時刻を示すフラグ。
    有効な値:
    • true:表示名の文字列を生成します。
    • false:sys_idsの文字列を生成します。
    表 : 193. 返される内容
    タイプ 説明
    なし
    var grByName = new GlideRecord(this.TEST_TABLE);
    grByName.addQuery("caller_id", userDisplayName);
    grByName.setQueryReferences(true);
    grByName.query();
    if (grByName.hasNext()) {
      while(grByName.next()) {
        gs.print("Incident caller_id=" + grByName.caller_id);
      }
    } else {
      gs.print("NO RESULTS");
    }

    GlideRecord - setUseEngines(Boolean e)

    エンジン (承認ルール/アサインルール) の実行を無効または有効にします。

    警告:
    エンジンの実行を無効にすると、 ServiceNow® インスタンスとその動作に大きな影響を与える可能性があります。本番環境に展開する前に、この変更を十分にテストしてください。
    表 : 194. パラメーター
    名前 タイプ 説明
    e ブーリアン エンジンの実行を有効にするか無効にするかを示すフラグ。
    有効な値:
    • true:エンジンを有効にします
    • false:エンジンを無効にします
    表 : 195. 返される内容
    タイプ 説明
    なし

    この例では、クエリを実行する前にエンジンとビジネスルールを無効にする方法を示します。

    function auditOAuthInboundRequestsUsage(){
      var now_GR = new GlideRecord("oauth_credential");
      var oauthClient = now_GR.addJoinQuery("oauth_entity", "peer", "sys_id");
      now_GR.addQuery("type", "access_token");
      now_GR.addQuery("expires", ">", nowDateTime());
      now_GR.addNullQuery("oauth_requestor_profile");
      oauthClient.addCondition("active", "true");
      oauthClient.addCondition("type", "client");
      now_GR.setUseEngines(false);
      now_GR.setWorkflow(false);
      now_GR.query();
      return now_GR.hasNext();
    }

    GlideRecord - setValue(文字列名, オブジェクト値)

    指定されたフィールド、または動的属性ストアの属性を指定された値に設定します。

    通常、スクリプトは直接割り当てを行います ( 例:now_GR.category = value)。ただし、スクリプト内で要素名が変数である場合は、 now_GR.setValue(elementName, value) を使用できます。値を設定するときは、フィールドのデータタイプが入力した値のデータタイプと一致することを確認してください。

    値パラメーターが null の場合、レコードは更新されず、エラーはスローされません。
    注:
    このメソッドはジャーナルフィールドでは使用できません。代わりに GlideElement.setJournalEntry() を使用してください。
    注:
    フィールド暗号化エンタープライズ プラグインが有効で、インスタンスがキーにアクセスできる場合、このメソッドでは暗号化されたデータを暗号化フィールドに挿入できます。インスタンスがキーにアクセスできない場合、このメソッドはエラーを返します。詳細については、「 プラットフォーム暗号化」を参照してください。
    password2 フィールドを使用した認証用ではありません
    setValue() メソッドは password2 データをクリアーテキストとして渡すため、暗号化データの期待に関するエラーが発生します。さらに、password2 フィールドに setValue() メソッドを使用すると、暗号化する必要があるデータが公開されます。

    password2 認証の場合は、代わりに setDisplayValue() メソッドを使用します。

    表 : 196. パラメーター
    名前 タイプ 説明
    name 文字列 設定するフィールドの名前。

    動的スキーマで属性値を設定するには、動的属性ストア内の属性へのパスを使用します。

    属性パスの形式: dyn_att_field->attr_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute]

    Dynamic Schema」も参照してください。
    value オブジェクト 指定されたフィールドで設定する値。
    注:
    動的属性の場合、次のデータタイプのみがサポートされています。
    • ブーリアン (True/False)
    • 10 進数
    • 浮動小数点数
    • GlideDate
    • GlideDateTime
    • 整数
    • 文字列

    動的スキーマで動的カテゴリフィールドを指定するには、sys_idの代わりに名前空間とカテゴリフィールド名を含む参照キーを使用します。名前パラメーターとしてカテゴリ列を指定します (例:grExample.setValue('cat_column_name', 'namespace_name/cat_name')。詳細については、「Create a dynamic namespace」を参照してください。

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

    この例では、planned_task テーブルのステータスフィールドの値を設定する方法を示します。

    function() {
      var topTask = new GlideRecord('planned_task');
      topTask.setValue('state', -5);
      var childTask = new GlideRecord('planned_task');
      childTask.setValue('state', -5);
      var s = new PlannedTaskStateManagement(childTask, topTask);
      var state = s.manageStateChange(false);
      Assert.assertEquals("-5", state);
    }

    この例では、このメソッドを動的スキーマで使用する方法を示します。最初の使用法では、参照キーを使用して値を設定する動的カテゴリの値を設定します。2 つ目は、属性パスを使用して、 total_miles と呼ばれる動的属性の値を設定します。

    var used_car = new GlideRecord('u_product');
    
    // Using setValue() to set the dynamic category column to Car
    // u_product/u_attributes is the namespace and u_car is the category
    used_car.setValue('u_attributes_category', 'u_product/u_attributes/u_car');
    
    // Using setDynamicAttributeValue() to set the dynamic attribute value
    used_car.setDynamicAttributeValue("u_attributes->color","green");
    used_car.setDynamicAttributeValue("u_attributes->make","Toyota");
    used_car.setDynamicAttributeValue("u_attributes->model","Rav4");
    used_car.setDynamicAttributeValue("u_attributes->luxury",false);
    used_car.setDynamicAttributeValue("u_attributes->cost",12500);
    used_car.setDynamicAttributeValue("u_attributes->avg_mpg",24.8);
    used_car.setDynamicAttributeValue("u_attributes->date_purchased", new GlideDateTime());
    
    // Using setValue() to set the dynamic attribute value
    used_car.setValue("u_attributes->total_miles", 120000.12345);
    
    used_car.insert();

    スコープ対応

    スコープ対象のアプリケーションで setValue() メソッドを使用するには、対応するスコープ対象のメソッド setValue() を使用します。

    GlideRecord - setWorkflow(ブール値有効)

    通常は後続のアクションによってトリガーされる可能性がある実行中のビジネスルールを有効または無効にします。

    注:
    setWorkflow() メソッドは、後で deleteProblem() メソッドまたは deleteMultiple() メソッドを使用してカスケード削除を行う場合、無視されます。
    警告:
    ビジネスルールの実行を無効にすると、 ServiceNow® インスタンスとその動作に大きな影響を与える可能性があります。本番環境に展開する前に、この変更を十分にテストしてください。
    表 : 198. パラメーター
    名前 タイプ 説明
    有効化 ブーリアン ビジネスルール、スクリプトエンジン、および監査の実行を有効または無効にするかどうかを示すフラグ。
    有効な値:
    • true:ビジネスルール、スクリプトエンジン、または監査の実行を有効にします。
    • false:ビジネスルール、スクリプトエンジン、または監査の実行を無効にします。

    デフォルト:true

    表 : 199. 返される内容
    タイプ 説明
    なし
    doit('name1','name2'); 
     
    function doit(username1,username2) { 
     
      var usr1 = new GlideRecord('sys_user');
      var usr2 = new GlideRecord('sys_user');
      var num = 0;
     
      if (usr1.get('user_name',username1) && usr2.get('user_name',username2)) {
        var ref;
        var dict = new GlideRecord('sys_dictionary');
        dict.addQuery('reference','sys_user');
        dict.addQuery('internal_type','reference');
        dict.query();
        while (dict.next()) {
          num = 0;
          ref = new GlideRecord(dict.name.toString());
          ref.addQuery(dict.element,usr1.sys_id);
          ref.query();
          while (ref.next()) {
            ref.setValue(dict.element.toString(),usr2.sys_id); 
            ref.setWorkflow(false);
            ref.update();
            num++;
          }
          if (num > 0) {
            gs.print(dict.element + ' changed from ' + usr1.user_name + 
              ' to ' + usr2.user_name + ' in ' + num + ' ' + dict.name + ' records');
          }
        }
      }
    }

    スコープ対応

    スコープ対象のアプリケーションで setWorkflow() メソッドを使用するには、対応するスコープ対象のメソッド setWorkflow() を使用します。

    GlideRecord - update(オブジェクト理由)

    行われた変更で GlideRecord を更新します。レコードが存在しない場合は挿入されます。

    表 : 200. パラメーター
    名前 タイプ 説明
    理由 オブジェクト オプション。更新の理由。その理由が監査レコードに表示されます。
    表 : 201. 返される内容
    タイプ 説明
    文字列 新規レコードまたは更新レコードのsys_id。更新が失敗した場合は null を返します。

    この例では、task_ciテーブルのレコードを更新します。

    var now_GR = new GlideRecord('task_ci');
    now_GR.addQuery();
    now_GR.query();
    var count = now_GR.getRowCount();
    if (count > 0) {
       var allocation = parseInt(10000 / count) / 100;
       while (now_GR.next()) {
          now_GR.u_allocation = allocation;
          now_GR.update();
       }
    }

    スコープ対応

    スコープ対象のアプリケーションで update() メソッドを使用するには、対応するスコープ対象のメソッド update() を使用します。

    GlideRecord - updateMultiple()

    指定されたクエリ内の各 GlideRecord を、指定された変更セットで更新します。

    ジャーナルエントリの追加については、 setJournalEntry() メソッドを参照してください。

    glide.db.forced.chunk.thresholdシステムプロパティは、チャンクレコードを強制的に削除および更新するしきい値を設定します。チャンクは、巨大なテーブルでプライマリキー以外の削除によってレプリケーションの問題が発生するのを防ぐのに役立ちます。詳細については、「Available system properties」を参照してください。

    注:
    期待どおりの結果が得られるようにするには、直接割り当ての代わりに setValue() メソッドを使用します。つまり、gr_Now.setValue('<field_name>', '4')); を使用します。gr_Now.<field_name> = 4 の代わりに。
    注:
    大きなテーブルで作業する場合は、このメソッドを chooseWindow() メソッドまたは setLimit() メソッドとともに使用しないでください。

    このメソッドは新しい値を設定しますが、既存の値はクリアしません。既存の値をクリアするには、 setValue() メソッドを使用してフィールドを「NULL」に設定します。詳細については、「GlideRecord 変数を「NULL」に設定する」を参照してください。

    表 : 202. パラメーター
    名前 タイプ 説明
    なし
    表 : 203. 返される内容
    タイプ 説明
    なし

    この例では、すべてのアクティブなインシデントのステータスを 4 -「ユーザー情報待ち」に更新する方法を説明します。

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('active', true);
    now_GR.setValue('state',  4);
    now_GR.updateMultiple();
    この例では、優先度 1 のインシデントの説明フィールドの既存の値をクリアする方法を示します。
    var test = new GlideRecord('incident');
    test.addEncodedQuery('priority=1');
    test.query();
     
    test.setValue('description','NULL');
    test.updateMultiple();

    スコープ対応

    スコープ対象のアプリケーションで updateMultiple() メソッドを使用するには、対応するスコープ対象のメソッド updateMultiple() を使用します。

    GlideRecord - updateWithReferences(オブジェクト理由)

    レコードを更新し、提供された情報を使用して関連レコードを挿入または更新します。

    表 : 204. パラメーター
    名前 タイプ 説明
    理由 オブジェクト 更新の理由。その理由が監査レコードに表示されます。
    表 : 205. 返される内容
    タイプ 説明
    文字列 更新されるレコードのsys_id。

    発信者 ID がsys_userレコード「John Doe」を参照するように設定されているインシデントを処理する場合、次のコードで John Doe のユーザーレコードが更新されます。発信者 ID が指定されていないインシデントを処理する場合、次のコードは、指定された情報 (first_name、last_name) を使用して新しいsys_userレコードを作成し、発信者 ID の値を新しく作成されたsys_userレコードに設定します。

    var inc = new GlideRecord('incident');
    inc.get(inc_sys_id);  // Looking up an existing incident record where 'inc_sys_id' represents the sys_id of a incident record
    inc.caller_id.first_name = 'John';
    inc.caller_id.last_name = 'Doe';
    inc.updateWithReferences();
    }