GlideRecord - グローバル
GlideRecord API はデータベース操作に使用されます。
GlideRecord API は、サーバー側のコードでデータベースとやり取りする主要な手段です。GlideRecord は、1 つのテーブルのレコードを含むオブジェクトです。API を使用して GlideRecord オブジェクトをインスタンス化し、クエリパラメーター、フィルター、制限、および順序付けを追加します。
この API を使用して動的属性を作成するには、dynamic_schema_writer ロールが必要です。この API を使用して動的データを読み取るには、dynamic_schema_reader ロールが必要です。
動的属性の詳細については、「 Dynamic Schema」を参照してください。
クエリの構築と実行の詳細については、GlideRecord についての記事を参照してください。
GlideRecord から継承されたクラスで、GlideRecord と同じ機能を実行し、ACL も適用する GlideRecordSecure の詳細については、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」を参照してください。
レコードから値を取得する
ほとんどの場合、ドット連結を使用してレコードから値を取得しないでください。ドット連結では、フィールド値ではなくオブジェクト全体が取得されます。オブジェクトの取得にはより多くのストレージが使用されるため、アレイや サービスポータルで使用すると望ましくない結果が生じる可能性があります。
オブジェクト全体を取得する代わりに、次のいずれかのメソッドを使用してフィールド値をコピーできます。
var mgr = current.caller_id.manager.toString();動的属性
この API には、 GlideDynamicAttributeStore - グローバル API の動的スキーマメソッドと同じ機能を持つメソッドがあります。この API の動的属性メソッドを使用して、指定された GlideRecord でアクションを実行します。複数のレコードに同じ動的属性のグループを設定する場合は、 GlideDynamicAttributeStore API のメソッドを使用します。この API を使用すると、目的の属性を持つ GlideDynamicAttributeStore オブジェクトをステージングし、さまざまな setDynamicAttributeValues() メソッドを使用してそのオブジェクトを複数の GlideRecord にコピーできます。
GlideRecord - GlideRecord(文字列 tableName)
指定されたテーブルの GlideRecord クラスのインスタンスを作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| tableName | 文字列 | 使用するテーブル。 |
var now_GR = new GlideRecord('incident');
GlideRecord - addActiveQuery()
アクティブなレコードを返すフィルターを追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 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) プラグインが必要です。
| 名前 | タイプ | 説明 |
|---|---|---|
| glideRecord | オブジェクト | ドメインを取得する GlideRecord |
| タイプ | 説明 |
|---|---|
| なし |
//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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| クエリ | 文字列 | エンコードされたクエリ文字列。 |
| enforceFieldACL | ブール | オプション。フィールド ACL (アクセス制御リスト) ルールを適用するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| タイプ | 説明 |
|---|---|
| なし |
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(String dotWalkedField)
単一の要求でフォームまたはスクリプトから 1 つ以上のドット連結フィールドを照会します。
addExtraField() メソッドを使用すると、フォームまたはスクリプト内のドット連結要素ごとに複数のクエリを実行するのではなく (データベースへの複数回のラウンドトリップが必要です)、単一のデータベース要求でドット連結フィールドをクエリできます。
| 名前 | タイプ | 説明 |
|---|---|---|
| ドット連結フィールド | 文字列 | ドット連結フィールド名。フィールド名のレベルはドット (ピリオド) で区切られます。たとえば、 インシデント [incident] テーブルの条件。dotWalkedFieldの形式は、ドット連結されたフォームまたはスクリプトのフィールドの左から右の順序に従います。 |
| タイプ | 説明 |
|---|---|
| なし | 注: addExtraField() メソッドは出力結果に影響を与えません。スクリプトでこの方法を使用するかどうかに関係なく、出力は常に同じです。 |
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(オブジェクト function) メソッドを使用して関数をレコードに適用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| function | オブジェクト | SQL 操作を定義する GlideDBFunctionBuilder または GlideDBCaseStatementBuilder オブジェクト。 |
| タイプ | 説明 |
|---|---|
| なし |
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 - 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | テーブルフィールド名。 |
| オペレーター | オブジェクト | クエリ演算子。使用可能な値は、value パラメーターのデータタイプによって異なります。 数値:
文字列 (大文字である必要があります):
注: LIKE 演算子の代わりに CONTAINS を使用します。 動的スキーマ演算子:
|
| 値 | オブジェクト | クエリ対象の値 (大文字と小文字は区別されません)。 |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | GlideRecord に追加されたクエリ条件。 |
var rec = new GlideRecord('sys_user');
rec.addUserQuery("first_name", "=", "Fred");
rec.query();
while (rec.next()) {
gs.info('Active user ' + rec.getValue('last_name'));
}
スコープ対応
スコープ対象のアプリケーションで addUserQuery() メソッドを使用するには、対応するスコープ対象のメソッド addUserQuery() を使用します。
GlideRecord - addInactiveQuery()
非アクティブなレコードを返すフィルターを追加します。非アクティブなレコードのアクティブフラグは false に設定されています。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | アクティブフラグが false のレコード。 |
var inc = new GlideRecord('incident');
inc.addInactiveQuery();
inc.query();
スコープ対応
スコープ対象のアプリケーションでは、スコープ対象のメソッド addQuery("active","false") を使用します。
GlideRecord - addJoinQuery(文字列 table)
関連テーブル内の関係に基づいてレコードを返すフィルターを追加します。
たとえば、データベースグループ内のすべてのユーザー (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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| table | 文字列 | テーブル名 |
| タイプ | 説明 |
|---|---|
| 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(文字列 table, 文字列 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| table | 文字列 | テーブル名 |
| primaryField | 文字列 | sys_id 以外の場合はプライマリフィールドです。 |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | 関係が一致するレコード。 |
sys_id の代わりに結合キーで open_by フィールドを使用して、インシデントを含む問題を検索します。
var now_GR = new GlideRecord('problem');
now_GR.addJoinQuery('incident', 'opened_by');
now_GR.query();
スコープ対応
スコープ対象のアプリケーションで addJoinQuery() メソッドを使用するには、対応するスコープ対象のメソッド addJoinQuery() を使用します。
GlideRecord - addJoinQuery(文字列 table, 文字列 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| table | 文字列 | テーブル名 |
| primaryField | 文字列 | sys_id 以外の場合はプライマリフィールドです。 |
| joinTableField | 文字列 | sys_id 以外の場合、テーブルを結合するフィールド |
| タイプ | 説明 |
|---|---|
| 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 でないレコードを返すフィルターを追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | フィールド名 |
| タイプ | 説明 |
|---|---|
| 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 であるレコードを返すフィルターを追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | フィールド名 |
| タイプ | 説明 |
|---|---|
| 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(文字列 name, オブジェクト operator, オブジェクト value)
要求を作成する機能を提供します。要求は実行されると、要求に一致する指定されたテーブルから行を返します。
SQL に精通している場合、このメソッドは "where" 句に似ています。単一のクエリで 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 動的属性ストア要素内の属性のテーブルフィールド名またはパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
動的属性の詳細については、「 Dynamic Schema」を参照してください。 |
| オペレーター | オブジェクト | クエリ演算子。使用可能な値は、value パラメーターのデータタイプによって異なります。 数値:
文字列 (大文字である必要があります):
注: LIKE 演算子の代わりに CONTAINS を使用します。 動的スキーマ演算子:
|
| 値 | オブジェクト | クエリ対象の値 (大文字と小文字は区別されません)。 |
| タイプ | 説明 |
|---|---|
| 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->cars->avg_mpg', 'GT_FIELD', 'inc_dynamic_schema2->cars->avg_mpg');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info(gr_Inc.number + " Gas Mileage 1: " + gr_Inc.getDynamicAttributeValue('inc_dynamic_schema->cars->avg_mpg') + " GT_FIELD Gas Mileage 2 :" + gr_Inc.getDynamicAttributeValue('inc_dynamic_schema2->cars->avg_mpg'));
}
スコープ対応
スコープ対象のアプリケーションで addQuery() メソッドを使用するには、対応するスコープ対象のメソッド addQuery() を使用します。
GlideRecord - addValue(文字列 field, 数値 value)
現在の GlideRecord オブジェクトのデータベースレベルで、指定された数値フィールドに対するアトミックな加算および減算操作を指定します。
通常、GlideRecord オブジェクトはデータベース内の 1 つのレコードとして書き込まれます。個々のフィールド値は定義されたとおりに格納されます。GlideRecord フィールドに値を追加するコードの場合、フィールドをアトミックにインクリメントするのではなく、単に新しい値でフィールドをデータベースに保存します。
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 つの操作でそれぞれ u_count に 1 が加算されるのではなく、正味の効果として u_count に 2 しか含まれず、1 つの操作の更新が実際に失われます。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 パラメーターで初期化されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| フィールド | 文字列 | この GlideRecord で変更するフィールドの名前。 関連するフィールドが数値タイプでない場合、操作は無視されます。 |
| value | 数値 | レコードが保存されたときに値に加算される数。減算操作を実行するには、単に負の値を渡します。 |
| タイプ | 説明 |
|---|---|
| なし |
加算される値を表示します。
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 に適用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| queryString | 文字列 | 現在の GlideRecord に適用するエンコードクエリ。 |
| タイプ | 説明 |
|---|---|
| なし |
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(文字列 template)
テンプレートテーブル [sys_template] から現在のレコードにテンプレートレコードを適用します。指定されたテンプレートが見つからない場合、アクションは実行されません。
| 名前 | タイプ | 説明 |
|---|---|---|
| template | 文字列 | テンプレート [sys_template] テーブルのテンプレートの名前。 |
| タイプ | 説明 |
|---|---|
| なし |
var rec1 = new GlideRecord("incident");
rec1.initialize();
rec1.applyTemplate("my_incident_template");
rec1.insert();
GlideRecord - autoSysFields(ブーリアン e)
sys_updated_by、sys_updated_on、sys_mod_count、sys_created_by、および sys_created_on のフィールドへの更新を有効または無効にします。これは、履歴情報を変更せずにレコードのフィールド値を手動で更新するためによく使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| e | ブーリアン | false の場合、sys_updated_by、sys_updated_on、sys_mod_count、sys_created_by、および sys_created_on への更新を無効にします。 |
| タイプ | 説明 |
|---|---|
| なし |
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()
アクセス制御ルール (ユーザーのロールを含む) がこのテーブルへの新しいレコードの挿入を許可するかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | ユーザーのロールでこのテーブルのレコードの作成が可能かどうかを示すフラグ。 可能な値:
|
この例は、benefit_plan テーブルでレコードを作成できるかどうかを示しています。
canCreateBenefitPlan : function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canCreate();
}
スコープ対応
スコープ対象のアプリケーションで canCreate() メソッドを使用するには、対応するスコープ対象のメソッド canCreate() を使用します。
GlideRecord - canDelete()
アクセス制御ルール (ユーザーのロールを含む) がこのテーブルでレコードの削除を許可するかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | ユーザーのロールでこのテーブルのレコードの削除が可能かどうかを示すフラグ。 有効な値:
|
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 を評価します。
ACL の詳細については、「 アクセス制御の評価順序」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブール | ユーザーのロールが現在のレコードの読み取りを許可するかどうかを示すフラグ。 有効な値:
|
この例では、インシデント [incident] テーブルを反復処理し、ユーザーが各レコードの読み取り権限を持っているかどうかを確認する方法を示します。
var grTable = new GlideRecord('incident');
grTable.query();
while (grTable.next()) {
if (grTable.canRead())
…
}
スコープ対応
スコープ対象のアプリケーションで canRead() メソッドを使用するには、対応するスコープ対象のメソッド canRead() を使用します。
GlideRecord - canWrite()
アクセス制御ルール (ユーザーのロールを含む) がこのテーブルでレコードへの更新を許可するかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | ユーザーのロールでこのテーブルのレコードの書き込みが可能かどうかを示すフラグ。 有効な値:
|
この例は、benefit_plan テーブルにレコードを書き込めるかどうかを示しています。
canWriteBenefitPlan : function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canWrite();
}
スコープ対応
スコープ対象のアプリケーションで canWrite() メソッドを使用するには、対応するスコープ対象のメソッド canWrite() を使用します。
GlideRecord - changes()
レコード内のいずれかのフィールドが変更されたかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | 指定されたレコードに変更があるかどうかを示すフラグ。 可能な値:
|
この例は、インシデントレコードに変更があるかどうかを確認する方法を示しています。
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(数値 firstRow, 数値 lastRow, ブール値 forceCount)
後続のクエリによって返される行の範囲を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| firstRow | 番号 | 範囲の開始行のゼロベースのインデックス (両端を含む)。(値 0 は最初の行を返します)。 |
| lastRow | 番号 | 範囲の終了行のゼロベースのインデックス (排他的)。 たとえば、 firstRow = 1 および lastRow = 5 の場合、4 つのレコードが返されます (2-5)。 |
| forceCount | ブーリアン | オプション。行数クエリを強制するかどうかを示すフラグ。この呼び出しのほとんどの実装では、行数がカウントされます。テキスト検索など、行数がカウントされない例外のケースもあります。このフラグを設定すると、行数がカウントされます。 有効な値:
デフォルト値:false |
| タイプ | 説明 |
|---|---|
| なし |
この例では、インシデント [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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
この例では、インシデントテーブルからすべての非アクティブなレコードを削除する方法を示します。
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active','false');
now_GR.query();
now_GR.deleteMultiple();
スコープ対応
スコープ対象のアプリケーションで deleteMultiple() メソッドを使用するには、対応するスコープ対象のメソッド deleteMultiple() を使用します。
GlideRecord - deleteRecord()
1 つのレコードを削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | レコードが正常に削除されたかどうかを示すフラグ。 可能な値:
|
この例では、インシデントテーブルからすべての非アクティブなレコードを削除する方法を示します。
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() からの戻り値が正しくない可能性があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、 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(文字列 columnName, 文字列 value)
いずれかのレコードに一致する値が指定された列にある場合は true を返します。見つかった場合は、一致する最初のレコードにも移動し、基本的にはレコードが返されるまで 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");| 名前 | タイプ | 説明 |
|---|---|---|
| columnName | 文字列 | 検索するフィールド名。 |
| value | 文字列 | 指定されたフィールドで確認する値。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 現在のテーブル内のいずれかのレコードに一致する値が指定されたフィールドにあるかどうかを示すフラグ。 可能な値:
|
この例は、[簡単な説明] フィールドに「重大」を含むレコードをインシデントテーブルで検索する方法を示しています。
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(オブジェクト name, オブジェクト value)
現在の GlideRecord オブジェクトに指定されたレコードを返します。
このメソッドは、1 つまたは 2 つのパラメーターを受け入れます。パラメーターが 1 つだけ渡される場合、メソッドは目的のレコードの sys_id であると見なします。見つからない場合は、値を表示値と照合しようとします。2 つのパラメーターが渡される場合、最初のパラメーターは検索する GlideRecord 内の列の名前です。2 つ目は検索する値です。複数のレコードが見つかった場合は、next() を使用して追加のレコードにアクセスします。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | オブジェクト | オプション。指定された value パラメーターを検索するためにインスタンス化された GlideRecord 列の名前。パラメーターが 1 つだけ渡される場合、メソッドはこのパラメーターが sys_id であると見なします。 |
| value | オブジェクト | 照合する値。計算フィールドの場合、レコード内のフィールドのスクリプト化されたデフォルト値に対して計算を実行するのではなく、値をそのまま照合します。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 要求されたレコードが見つかったかどうかを示します。 可能な値:
|
この例では、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)
指定されたフィールドのディクショナリ属性を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | ディクショナリ属性を返すフィールド名 |
| タイプ | 説明 |
|---|---|
| 文字列 | ディクショナリ属性 |
この例は「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()
テーブルのラベルを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | テーブルを識別するラベル。 |
この例では渡されたテーブルのラベルを出力します。
// 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | オプション。動的属性の表示値を要求する場合にのみ必要です。 取得する動的スキーマ内の属性へのパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
|
| タイプ | 説明 |
|---|---|
| 文字列 | 現在のレコードまたは指定した要素の表示値。 |
この例では、指定されたインシデントレコードの表示値をログに書き込みます。
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->group->attr', 42);
gr_AppTab.setDisplayValue('dyn_att_field->group->attr2, true);
gr_AppTab.update();
gs.info('Attr value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr);
gs.info('Attr2 value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr2);
出力:
Attr value: System error
Attr2 value: true
スコープ対応
スコープ対象のアプリケーションで getDisplayValue() メソッドを使用するには、対応するスコープ対象のメソッド getDisplayValue() を使用します。
GlideRecord - getDynamicAttribute(String fullPath)
指定された動的属性ストアパスの GlideElementDynamicAttribute オブジェクトを返します。
動的属性の詳細については、「 Dynamic Schema」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| fullPath | 文字列 | 目的の動的属性を見つけるために使用するパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
|
| タイプ | 説明 |
|---|---|
| オブジェクト | 指定された動的属性を含む GlideElementDynamicAttribute オブジェクト。 fullPathパラメーターが無効な場合は、null を返します。 |
次のコード例は、このメソッドを呼び出す方法を示しています。
var gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gr_Inc.getDynamicAttribute('attr_store->car->color').setValue('Blue');
gr_Inc.update();
gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gs.info(gr_Inc.getDynamicAttribute('attr_store', 'car->color'));
*** Script: BlueGlideRecord - getDynamicAttribute(String dynamicAttributeField, String groupAttrPath)
指定されたテーブルフィールドと属性パスにある動的属性を含む GlideElementDynamicAttribute オブジェクトを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 動的属性フィールド | 文字列 | 動的属性を含むテーブル内のフィールドの名前。 |
| グループ属性パス | 文字列 | 関連する動的スキーマ属性を特定するために使用する属性パス。 形式: 「group_name->attr_name」
例: |
| タイプ | 説明 |
|---|---|
| オブジェクト | 指定された動的属性を含む GlideElementDynamicAttribute オブジェクト。 dynamicAttributeField パラメーターまたは groupAttrPath パラメーターのいずれかが無効な場合は、null を返します。 |
次のコード例は、このメソッドを呼び出す方法を示しています。
var gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gr_Inc.getDynamicAttribute('attr_store->car->color').setValue('Blue');
gr_Inc.update();
gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gs.info(gr_Inc.getDynamicAttribute('attr_store', 'car->color'));
*** Script: BlueGlideRecord - getDynamicAttributeValue(String fullPath)
指定されたパスにある動的属性の値を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fullPath | 文字列 | 目的の動的属性を見つけるために使用するパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
|
| タイプ | 説明 |
|---|---|
| オブジェクト | 指定されたパスにある動的属性の値。 fullPathパラメーターに無効なデータが含まれている場合、または指定された属性値がサポートされているデータ型のいずれでもない場合は、null を返します。 |
次のコード例は、このメソッドを呼び出す方法を示しています。
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->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->car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store->car->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 groupAttrPath)
現在のテーブルの指定されたフィールドにある動的属性の値と、指定された属性パスを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 動的属性フィールド | 文字列 | 動的属性を含むテーブル内のフィールドの名前。 |
| グループ属性パス | 文字列 | 関連する動的スキーマ属性を特定するために使用する属性パス。 形式: 「group_name->attr_name」
例: |
| タイプ | 説明 |
|---|---|
| オブジェクト | 指定されたパスにある動的属性の値。 dynamicAttributeField パラメーターまたは groupAttrPath パラメーターのいずれかが無効な場合は、null を返します。 |
次のコード例は、このメソッドを呼び出す方法を示しています。
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->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', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->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(String fullPath)
指定されたパスにある動的属性の表示値を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fullPath | 文字列 | 目的の動的属性を見つけるために使用するパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
|
| タイプ | 説明 |
|---|---|
| 文字列 | 指定されたパスにある動的属性の表示値。 fullPathパラメーターが無効な場合は、null を返します。 |
次のコード例は、このメソッドを呼び出す方法を示しています。
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->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 Purcahse Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store->car->time_of_purchase'));
gs.info("Time of Purcahse DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store->car->time_of_purchase'));
出力:
*** Script: Time of Purcahse Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purcahse DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord - getDynamicAttributeDisplayValue(String dynamicAttributeField, String groupAttrPath)
指定されたテーブルフィールドと属性パスにある動的属性の表示値を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 動的属性フィールド | 文字列 | 動的属性を含むテーブル内のフィールドの名前。 |
| グループ属性パス | 文字列 | 関連する動的スキーマ属性を特定するために使用する属性パス。 形式: 「group_name->attr_name」
例: |
| タイプ | 説明 |
|---|---|
| 文字列 | 指定されたパスにある動的属性の表示値。 dynamicAttributeField パラメーターまたは groupAttrPath パラメーターのいずれかが無効な場合は、null を返します。 |
次のコード例は、このメソッドを呼び出す方法を示しています。
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->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', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->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()
要素の記述子を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 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と同じ結果を返します。
ほとんどの場合、ドット連結を使用してレコードから値を取得しないでください。ドット連結では、フィールド値ではなくオブジェクト全体が取得されます。オブジェクトの取得にはより多くのストレージが使用されるため、アレイや サービスポータルで使用すると望ましくない結果が生じる可能性があります。
オブジェクト全体を取得する代わりに、次のいずれかのメソッドを使用してフィールド値をコピーできます。
var mgr = current.caller_id.manager.toString();関連項目:GlideElement - toString()。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | GlideElement オブジェクトを返す対象の列名。 |
| タイプ | 説明 |
|---|---|
| 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()
現在の結果セットのクエリ条件をエンコードされたクエリ文字列として取得します。
詳しくは、 エンコードされたクエリ文字列 を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 |
この例は、後で読み取り 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 スクリプトで使用するエスケープ文字を追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 現在のテーブルの表示フィールドのエスケープ値。 |
この例では、ユーザー [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 を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| Java ArrayList | 現在のレコード内のフィールド |
// 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()
フィールドのラベルを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | フィールドのラベル |
この例は、要求アイテムテーブルの質問フィールドのラベルを取得し、ラベルとその表示名を出力する方法を示しています。
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 - getLink(ブーリアン noStack)
現在のレコードのリンクを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| noStack | ブーリアン | 生成されたリンクを URL の末尾に追加するかどうかを示すフラグ。例:&sysparm_stack=[テーブル名]_list.do? sysparm_query=active=true有効な値:
デフォルト値:false |
| タイプ | 説明 |
|---|---|
| 文字列 | 現在のレコードの URL。 |
この例では添付ファイルを確認し、見つかった場合はリンクを追加します。
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();
}
}
スコープ対応
スコープ対象のアプリケーションで getLink() メソッドを使用するには、対応するスコープ対象のメソッド getLink() を使用します。
GlideRecord - getLocation()
テーブル内の現在のレコードの行番号を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 数値 | テーブル内の現在のレコードに対するゼロベースの行番号を取得します。 |
この例は、レコード数をレコードの場所番号と比較することによって、インシデントテーブル内のレコードが適切に取得されていないかどうかを確認する方法を示しています。
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 テーブルの複数形ラベルを取得します。
たとえば、テーブル名が「変更要求」の場合、このメソッドは「変更要求」を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 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()
現在のレコードのクラス (テーブル) 名を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | クラスまたはテーブル名 |
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 に関連付けられている関連リストの名前と表示値のリストを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| HashMap | 関連リストの名前と表示値を含むハッシュマップ。 |
この例は、現在の 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()
現在のレコードによって参照されるテーブルの名前と表示値のリストを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| HashMap | 関連テーブルの名前と表示値を含むハッシュマップ。 |
この例は、現在の 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 での番号レコードの取得
- GlideRecord getRowCount() および GlideAggregate getAggregate() API も同様の情報を提供します。次の基準を使用して、どのオプションが最適かを判断してください。
- GlideRecord getRowCount() メソッドは、クエリから返されたレコードの数とレコード自体を示します。レコードに対してアクションを実行するために、セットを反復処理する前または後に結果セット内のレコード数が必要な場合は、この方法を使用します。
- GlideAggregate getAggregate() メソッドは、実際のレコードを除いて、クエリに一致するレコードの数のみを取得します。クエリを発行する前に、 GlideAggregate オブジェクトで集計を設定する必要があります。
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数よりも高い値に調整します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 数値 | 現在の 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() を使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 数値 | 保存された行番号。 |
この例は、ユーザーテーブルの行の場所を保存し、その行番号を取得する方法を示しています。
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 に関連付けられたテーブル名を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | テーブル名 |
この例は、現在のテーブル名をシステム ログに書き込む方法を示しています。
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 です。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 文字列としての一意のプライマリキー (キーが 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | 値を取得するフィールドの名前、または取得する動的属性ストア内の属性へのパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
|
| タイプ | 説明 |
|---|---|
| 文字列 | 指定された要素の値。フィールドが空であるか、フィールドが存在しない場合は 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->car->color' to 'Red' on incident `INC0009009`
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->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->car->color'));
出力:
*** Script: Red
スコープ対応
スコープ対象のアプリケーションで getValue() メソッドを使用するには、対応するスコープ対象のメソッド getValue() を使用します。
GlideRecord - hasAttachments()
現在の GlideRecord に添付ファイルがあるかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | 現在のレコードに添付ファイルがある場合は 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 にまだレコードがあるかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | クエリセットにさらにレコードがある場合は true、ない場合は false。 |
この例では、現在の GlideRecord に追加のレコードがあるかどうかに基づいてさまざまな関数を呼び出す方法を示します。
if (now_GR.hasNext()) {
dothis(); // found it, do it
} else {
dothat(); // didn't find it
};
スコープ対応
スコープ対象のアプリケーションで hasNext() メソッドを使用するには、対応するスコープ対象のメソッド hasNext() を使用します。
GlideRecord - initialize()
挿入前に入力するのに適した空のレコードを現在の GlideRecord 内に作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
この例では 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()
現在のレコードに設定されているフィールド値を使用して、新しいレコードを挿入します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 挿入されたレコードの 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()
新しいレコードを挿入し、指定された情報で関連レコードを挿入または更新します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 挿入されたレコードの 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)
テーブルのタイプ/クラスを確認します。
| 名前 | タイプ | 説明 |
|---|---|---|
| className | 文字列 | レコードのタイプまたはクラスの名前。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | テーブルが指定されたクラスのインスタンスである場合は 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 アクションの条件に便利ですが、バックグラウンドスクリプトでは使用しないでください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | 現在のレコードが新しい (データベースに挿入されていない) かどうかを示すフラグ。 可能な値:
|
この例では、新しいレコードが 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 テーブルが存在するかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | テーブルが存在する (有効な) 場合は true、それ以外の場合は false。 |
この例ではインシデントテーブルが存在するかどうかを確認します。
var testTable = new GlideRecord('incident');
gs.print(testTable.isValid());
スコープ対応
スコープ対象のアプリケーションで isValid() メソッドを使用するには、対応するスコープ対象の isValid() メソッドを使用します。
GlideRecord - isValidField(String columnName)
指定されたフィールドが現在の GlideRecord テーブルで定義されているかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| columnName | 文字列 | チェックする列の名前。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | フィールドがテーブルで定義されている場合は 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()
現在のレコードが有効かどうかを判定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | 現在のレコードが有効かどうかを示すフラグ。 有効な値:
|
この例では、渡された 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 を割り当てます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
この例では、新しいレコードが 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 クエリによって返されたレコードを反復処理します。
if(myObj.next()) 構成は、返された最初のレコードのみを処理します。| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | GlideRecord に「next」レコードがあるかどうかを示すフラグ。 有効な値:
|
この例は、next() メソッドを使用してインシデントテーブルを反復処理する方法を示しています。
var rec = new GlideRecord('incident');
rec.query();
while (rec.next()) {
gs.print(rec.number + ' exists');
}
スコープ対応
スコープ対象のアプリケーションで next() メソッドを使用するには、対応するスコープ対象のメソッド next() を使用します。
GlideRecord - _next()
GlideRecord の次のレコードに移動します。GlideRecord に next という名前の列がある場合に使用する目的で、next() と同じ機能を提供します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | クエリセットにさらにレコードがある場合は true。 |
var rec = new GlideRecord('sys_template');
rec.query();
while (rec._next()) {
gs.print(rec.number + ' exists');
}
スコープ対応
スコープ対象のアプリケーションで _next() メソッドを使用するには、対応するスコープ対象のメソッド _next() を使用します。
GlideRecord - operation()
操作が挿入、更新、または削除のいずれであるかを決定します。
操作が分かれば、current.operation() を使用して、各操作を一意に処理できる汎用ビジネスルールを作成できます。
グローバル変数 currentの使用については、 ビジネスルールのグローバル変数を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 現在の操作。 可能な値:
|
次の例は、ビジネスルールでこのメソッドを使用する方法を示しています。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)
クエリセットの順序付けに使用するフィールド名、または動的属性ストア内の属性へのパスを指定します。複数のフィールドで並べ替えるには、このメソッドを異なるフィールド値で複数回呼び出します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | クエリセットを順序付けるテーブルフィールド名、または動的属性ストア内の属性へのパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
動的属性の詳細については、「 Dynamic Schema」を参照してください。 |
| タイプ | 説明 |
|---|---|
| なし |
この例は、「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->caller_id->first_name');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info("first_name: " + gr_Inc.getValue('attribute_store->caller_id->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)
クエリセットを降順で並べ替えるために使用するフィールドまたは動的属性ストア内の属性を指定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | クエリセットを降順で並べ替えるテーブルフィールド名、または動的属性ストア内の属性へのパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
動的属性の詳細については、「 Dynamic Schema」を参照してください。 |
| タイプ | 説明 |
|---|---|
| なし |
この例ではクエリセットを昇順または降順で並べ替える方法を示します。
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->caller_id->first_name');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info("first_name: " + gr_Inc.getValue('attribute_store->caller_id->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(文字列 field, 文字列 value)
addQuery() や addEncodedQuery() などのクエリメソッドで指定されたフィルターに基づいて、テーブルに対してクエリを実行します。
このメソッドは、GlideRecord テーブルおよびそのテーブルの参照に対してクエリを実行します。詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。
クエリの構築と実行の詳細については、GlideRecord についての記事を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | オプション - 値パラメーターも指定する必要があります。value パラメーターで指定された値を検索するフィールドの名前。 注:
通常、このメソッドは引数なしで実行されますが、名前と値のペアを指定して、指定した値を含むレコードをフィルタリングできます。パラメーターが指定されている場合、「name=value」条件がクエリに追加されます。 |
| value | 文字列 | オプション - フィールドパラメーターも指定する必要があります。指定された field パラメーターで検索する値。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、クエリフィールドを含むテーブルのシステムディクショナリ [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(文字列 field, 文字列 value)
addQuery() や addEncodedQuery() などのクエリメソッドで指定されたフィルターに基づいて、テーブルに対してクエリを実行します。 このメソッドは、query() メソッドの実行中にエラーが発生する可能性がある「query」という名前の列があるテーブルで使用することを目的としています。
このメソッドは、GlideRecord テーブルおよびそのテーブルの参照に対してクエリを実行します。詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。
クエリの構築と実行の詳細については、GlideRecord についての記事を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | オプション - 値パラメーターも指定する必要があります。value パラメーターで指定された値を検索するフィールドの名前。 注:
通常、このメソッドは引数なしで実行されますが、名前と値のペアを指定して、指定した値を含むレコードをフィルタリングできます。パラメーターが指定されている場合、「name=value」条件がクエリに追加されます。 |
| value | 文字列 | オプション - フィールドパラメーターも指定する必要があります。指定された field パラメーターで検索する値。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、ナレッジフィードバック [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(文字列 field, 文字列 value)
ドメインセパレーションインスタンスで使用されます。query() と同様に、addQuery() および addEncodedQuery() で指定されたフィルターに基づいてテーブルに対してクエリを実行しますが、ドメインは無視します。
このメソッドは、GlideRecord テーブルおよびそのテーブルの参照に対してクエリを実行します。詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | オプション - 値パラメーターも指定する必要があります。value パラメーターで指定された値を検索するフィールドの名前。 注:
通常、このメソッドは引数なしで実行されますが、名前と値のペアを指定して、指定した値を含むレコードをフィルタリングできます。パラメーターが指定されている場合、「name=value」条件がクエリに追加されます。 |
| value | 文字列 | オプション - フィールドパラメーターも指定する必要があります。指定された field パラメーターで検索する値。 |
| タイプ | 説明 |
|---|---|
| なし |
この例は、すべてのドメインのインシデントテーブルをクエリする方法を示しています。
var rec = new GlideRecord('incident');
rec.queryNoDomain();
while (rec.next()) {
gs.print(rec.number + ' exists');
}
GlideRecord - restoreLocation()
現在のレコードを saveLocation() で保存されたレコードに設定します。saveLocation() が呼び出されていない場合、現在のレコードは GlideRecord の最初のレコードに設定されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
この例は、現在のレコードの場所を保存し、次のレコードに移動してから、保存された場所に戻る方法を示しています。
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() メソッドを使用してこの場所に戻ることができるようにします。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
この例は、現在のレコードの場所を保存し、次のレコードに移動してから、保存された場所に戻る方法を示しています。
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() を呼び出しても、後続のビジネスルールの実行は停止されません。このメソッドを呼び出すと、データベースアクションの実行のみが防止されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| b | ブーリアン | 次のアクションを中止する場合は true、次のアクションを許可する場合は false。 |
| タイプ | 説明 |
|---|---|
| なし |
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(文字列 name, オブジェクト value)
指定されたフィールド、または動的属性ストア内の属性を、指定された表示値に設定します。
参照フィールドの場合、これはテーブルの表示値です。日付/時刻の場合、これは発信者の現在のタイムゾーンの時間です。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 値を設定するフィールドの名前、または動的属性ストア内の属性へのパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
|
| 値 | オブジェクト | 指定された属性に設定する値。 注: 動的属性では、次のデータタイプのみがサポートされています。
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、レコードに表示値を設定してからレコードを更新する方法を示しています。
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->group->attr', 42);
gr_AppTab.setDisplayValue('dyn_att_field->group->attr2, true);
gr_AppTab.update();
gs.info('Attr value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr);
gs.info('Attr2 value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr2);
GlideRecord - setDynamicAttributeValue(String fullPath, Object value)
指定したパスにある動的属性の値を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fullPath | 文字列 | 目的の動的属性を見つけるために使用するパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
|
| 値 | オブジェクト | 指定された動的属性を設定する値。 渡される値は、次のいずれかのデータタイプである必要があります。
|
| タイプ | 説明 |
|---|---|
| ブール | 動的属性が正常に更新されたかどうかを示すフラグ。 可能な値:
|
次のコード例は、このメソッドを呼び出す方法を示しています。
var gr_Inc = new GlideRecord('incident');
gr_Inc.setValue('inc_dynamic_groups', '78db044fc4b44210f8770961513dd7fe'); //Sysid of cars dimensions group
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->color","black");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->make","Honda");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->model","CRV");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->luxury",false);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->cost",20000);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->avg_mpg",28.4);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->date_purchased", new GlideDateTime());
gr_Inc.setValue("inc_dynamic_schema->cars->total_miles", 10000.12345);
gr_Inc.insert();
GlideRecord - setDynamicAttributeValue(String dynamicAttributeField, String groupAttrPath, Object value)
現在の GlideRecord の指定されたフィールドにある動的属性の値と、指定された属性パスを設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 動的属性フィールド | 文字列 | 動的属性を含むテーブル内のフィールドの名前。 |
| attributePath | 文字列 | 関連する動的スキーマ属性を特定するために使用する属性パス。 形式: 「group_name->attr_name」
例: |
| 値 | オブジェクト | 指定された動的属性を設定する値。 渡される値は、次のいずれかのデータタイプである必要があります。
|
| タイプ | 説明 |
|---|---|
| ブール | 動的属性が正常に更新されたかどうかを示すフラグ。 可能な値:
|
次のコード例は、このメソッドを呼び出す方法を示しています。
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->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', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->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)
指定したパスにある動的属性の表示値を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fullPath | 文字列 | 表示値を更新する動的属性を見つけるために使用するパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
|
| 値 | オブジェクト | 指定された動的属性を設定する表示値。 渡される値は、次のいずれかのデータタイプである必要があります。
|
| タイプ | 説明 |
|---|---|
| ブール | 動的属性の表示値が正常に更新されたかどうかを示すフラグ。 可能な値:
|
次のコード例は、このメソッドを呼び出す方法を示しています。
var grProdTab = new GlideRecord('products_table');
grProdTab.query();
grProdTab.next();
var val = grProdTab.setDynamicAttributeDisplayValue('product_details->cars->date_purchased', '2023-03-31 08:54:26');
GlideRecord - setDynamicAttributeDisplayValue(String dynamicAttributeField, String groupAttrPath, Object value)
現在の GlideRecord の指定されたフィールドと指定された属性パスにある動的属性の表示値を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 動的属性フィールド | 文字列 | 動的属性を含むテーブル内のフィールドの名前。 |
| グループ属性パス | 文字列 | 関連する動的スキーマ属性を特定するために使用する属性パス。 形式: 「group_name->attr_name」
例: |
| 値 | オブジェクト | 指定された動的属性を設定する表示値。 渡される値は、次のいずれかのデータタイプである必要があります。
|
| タイプ | 説明 |
|---|---|
| ブール | 動的属性の表示値が正常に更新されたかどうかを示すフラグ。 可能な値:
|
次のコード例は、このメソッドを呼び出す方法を示しています。
var grProdTab = new GlideRecord('products_table');
grProdTab.query();
grProdTab.next();
var val = grProdTab.setDynamicAttributeDisplayValue('product_details', 'cars->date_purchased', '2023-03-31 08:54:26');
GlideRecord - setDynamicAttributeValues(String dynamicAttributeField, GlideDynamicAttributeStore values)
渡された GlideDynamicAttributeStore オブジェクトで指定された値を使用して、1 つ以上の動的属性値を設定します。
このメソッドは、引数として渡された属性と値のみを更新します。指定されていない GlideRecord の属性と値は、この呼び出しの影響を受けません。無効なグループ、属性、または値は無視されます。考えられるエラー情報について、ログメッセージを確認します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 動的属性フィールド | 文字列 | 動的スキーマを含む現在のテーブルのフィールドの名前。 |
| 値 | GlideDynamicAttributeStore | 更新する動的属性を含む GlideDynamicAttributeStore オブジェクト。 オブジェクトに入力される値は、次のデータ型である必要があります。
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
var das = new GlideDynamicAttributeStore();
das.setDynamicAttributeValue('group->attribute1', 'Apple');
das.setDynamicAttributeValue('group->attribute2', 1234);
var gr_Inc = new GlideRecord('incident');
gr_Inc.query();
gr_Inc.next();
gr_Inc.setDynamicAttributeValues(das);
GlideRecord - setForceUpdate(ブーリアン force)
フィールドが変更されていない場合でもレコードを更新します。
| 名前 | タイプ | 説明 |
|---|---|---|
| force | ブーリアン | フィールドが変更されていない場合でも更新する場合は true、更新しない場合は false。 |
| タイプ | 説明 |
|---|---|
| なし |
この例は、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(数値 limit)
クエリから GlideRecord で返すレコードの最大数を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| limit | 数値 | フェッチするレコードの制限。 |
| タイプ | 説明 |
|---|---|
| なし |
この例では、クエリで返されるレコードの数を最大 10 に設定します。
var now_GR = new GlideRecord('incident');
now_GR.orderByDesc('sys_created_on');
now_GR.setLimit(10);
now_GR.query();
スコープ対応
スコープ対象のアプリケーションで setLimit() メソッドを使用するには、対応するスコープ対象のメソッド setLimit() を使用します。
GlideRecord - setLocation(数値 rowNumber)
現在の行の場所を指定された値に設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| rowNumber | 数値 | 現在の行として設定する行番号。 |
| タイプ | 説明 |
|---|---|
| なし |
この例は、インシデントテーブルにレコードの位置を設定する方法を示しています。
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 は変更できません。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 現在のレコードの 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 として設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| guid | 文字列 | 新しい GUID の値。 |
| タイプ | 説明 |
|---|---|
| なし |
この例では、新しい 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 - setQueryReferences(ブーリアン queryReferences)
参照フィールドをクエリするときに、参照フィールドの表示名の使用を有効または無効にします。
| 名前 | タイプ | 説明 |
|---|---|---|
| queryReferences | ブーリアン | 生成するデータの時刻を示すフラグ。 有効な値:
|
| タイプ | 説明 |
|---|---|
| なし |
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(ブーリアン e)
任意のエンジン (承認ルール/アサインルール) の実行を無効または有効にします。
| 名前 | タイプ | 説明 |
|---|---|---|
| e | ブーリアン | エンジンの実行を有効または無効にするかどうかを示すフラグ。 有効な値:
|
| タイプ | 説明 |
|---|---|
| なし |
この例では、クエリを実行する前にエンジンとビジネスルールを無効にする方法を示します。
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(文字列 name, オブジェクト value)
指定されたフィールド、または動的属性ストア内の属性を指定された値に設定します。
通常、スクリプトは直接代入を行います (例: now_GR.category = value)。ただし、スクリプトで要素名が変数の場合は、now_GR.setValue(elementName, value) を使用できます。値を設定するときは、フィールドのデータタイプが入力した値のデータタイプと一致していることを確認してください。
- password2 フィールドを使用した認証用ではありません
- setValue() メソッドは password2 データをクリアテキストとして渡すため、暗号化されたデータを予期する際にエラーが発生します。さらに、password2 フィールドに setValue() メソッドを使用すると、暗号化する必要があるデータが公開されます。
password2 認証の場合は、代わりに setDisplayValue() メソッドを使用してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 値を設定するフィールドの名前、または動的属性ストア内の属性へのパス。 動的パスの形式: dyn_att_field->group_name->attribute_name
動的属性の詳細については、「 Dynamic Schema」を参照してください。 |
| 値 | オブジェクト | 指定されたフィールドで設定する値。 注: 動的属性の場合、次のデータタイプのみがサポートされています。
|
| タイプ | 説明 |
|---|---|
| なし |
この例は、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);
}
この例では、動的属性の値を設定する方法を示します。
var gr_Inc = new GlideRecord('incident');
gr_Inc.setValue('inc_dynamic_groups', '78db044fc4b44210f8770961513dd7fe'); //Sysid of cars dimensions group
gr_Inc.setValue("inc_dynamic_schema->cars->color", "black");
gr_Inc.setValue("inc_dynamic_schema->cars->make", "Honda");
gr_Inc.setValue("inc_dynamic_schema->cars->model", "CRV");
gr_Inc.setValue("inc_dynamic_schema->cars->luxury", false);
gr_Inc.setValue("inc_dynamic_schema->cars->cost", 25000);
gr_Inc.setValue("inc_dynamic_schema->cars->avg_mpg", 28.4);
gr_Inc.setValue("inc_dynamic_schema->cars->date_purchased", new GlideDateTime());
gr_Inc.setValue("inc_dynamic_schema->cars->total_miles", 10000.12345);
gr_Inc.insert();
スコープ対応
スコープ対象のアプリケーションで setValue() メソッドを使用するには、対応するスコープ対象のメソッド setValue() を使用します。
GlideRecord - setWorkflow(ブーリアン e)
後続のアクションによって通常トリガーされるビジネスルールの実行を有効または無効にします。e パラメーターが false に設定されている場合、挿入/更新は監査されません。監査は GlideRecord 操作でパラメーターが true に設定されている場合にのみ行われます。
| 名前 | タイプ | 説明 |
|---|---|---|
| e | ブーリアン | ビジネスルールの実行を有効または無効にするかどうかを示すフラグ。 有効な値:
|
| タイプ | 説明 |
|---|---|
| なし |
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(オブジェクト reason)
行われた変更で GlideRecord を更新します。レコードが存在しない場合は挿入されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| 理由 | オブジェクト | オプション。更新の理由。理由は監査レコードに表示されます。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 新規または更新レコードの 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」を参照してください。
gr_Now.setValue('<field_name>', '4'));gr_Now.<field_name> = 4 の代わりに。このメソッドは新しい値を設定しますが、既存の値はクリアしません。既存の値をクリアするには、 setValue() メソッドを使用してフィールドを「NULL」に設定します。詳細については、「GlideRecord 変数を「NULL」に設定」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
この例では、すべてのアクティブなインシデントのステータスを 4 -「ユーザー情報待ち」に更新する方法を説明します。
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active', true);
now_GR.setValue('state', 4);
now_GR.updateMultiple();
var test = new GlideRecord('incident');
test.addEncodedQuery('priority=1');
test.query();
test.setValue('description','NULL');
test.updateMultiple();スコープ対応
スコープ対象のアプリケーションで updateMultiple() メソッドを使用するには、対応するスコープ対象のメソッド updateMultiple() を使用します。
GlideRecord - updateWithReferences(オブジェクト reason)
レコードを更新し、提供された情報で関連レコードの挿入または更新も行います。
| 名前 | タイプ | 説明 |
|---|---|---|
| 理由 | オブジェクト | 更新の理由。理由は監査レコードに表示されます。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 更新されるレコードの 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();
}