GlideRecord - スコープ対象
スコープ対象の GlideRecord API は、データベース操作に使用されます。
GlideRecord API は、サーバー側のコードでデータベースとやり取りするための主要な手段です。GlideRecord は、1 つのテーブルのレコードを含むオブジェクトです。API を使用して GlideRecord オブジェクトをインスタンス化し、クエリパラメーター、フィルター、制限、および順序を追加します。
クエリのビルドと実行の詳細については、 GlideRecord の記事を参照してください。
GlideRecord と同じ機能を実行し、ACL を適用するクラスの詳細については、「GlideRecordSecure の使用」を参照してください。
クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で 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();スコープ付き GlideRecord - addActiveQuery()
アクティブなレコードを返すフィルターを追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | アクティブなレコードを返すためのフィルター。 |
var inc = new GlideRecord('incident');
inc.addActiveQuery();
inc.query();
スコープ付き 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| query | 文字列 | エンコードされたクエリ文字列。 |
| 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.getValue('number'));
}
スコープ付き GlideRecord - addFunction(オブジェクト関数)
事前定義された GlideDBFunctionBuilder オブジェクトをレコードに適用します。
GlideDBFunctionBuilder スコープ対象クラスを使用して関数を定義します。関数を定義したら、 addFunction(Object function) メソッドを使用して関数をレコードに適用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 関数 | オブジェクト | SQL 操作を定義する GlideDBFunctionBuilder オブジェクト。 |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
// Query incidents in which order + priority is less than 5 and display that added value
var now_GR = new GlideRecord('incident');
now_GR.addFunction(myAddingFunction);
now_GR.addQuery(myAddingFunction, '<', 5);
now_GR.query();
while(now_GR.next())
gs.info(now_GR.getValue(myAddingFunction));
出力:
1
4
3
1
1
2
1
スコープ付き GlideRecord – addJoinQuery(String joinTable, String primaryField, String joinTableField)
現在の GlideRecord に関連するテーブル内の関係に基づいてレコードを返すフィルターを追加します。
この方法を使用して、グループメンバー [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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| joinTable | 文字列 | 結合で使用するテーブルの名前 ( 'incident'など)。 |
| プライマリフィールド | 文字列 | オプション。joinTableField パラメーターで指定されたフィールドの結合に使用する GlideRecord 内のフィールドの名前。 デフォルト値:sys_id |
| joinTableField | 文字列 | オプション。テーブルの結合に使用する joinTable で指定されたテーブル内のフィールドの名前。 デフォルト: joinTable で指定されたテーブルの最初のフィールド。これは、現在の GlideRecord テーブルへの参照フィールドです。 |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | 関係性が一致するレコードを一覧表示するフィルター。 |
インシデントが関連付けられている問題を検索します。この例では、インシデントが関連付けられている問題を返します。ただし、クエリの一部として返されるインシデントからは値を取得しません。
var prob = new GlideRecord('problem');
prob.addJoinQuery('incident');
prob.query();
関連するインシデントの非アクティブな問題を検出します。
// Look for Problem records that have associated Incident records
var now_GR = new GlideRecord('problem');
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 output results
while (now_GR.next()) {
gs.info(now_GR.getValue('number'));
}
インシデント caller_id フィールドの値が問題 opened_by フィールドの値と一致する、インシデントが関連付けられている問題を検索します。
var now_GR = new GlideRecord('problem');
now_GR.addJoinQuery('incident', 'opened_by', 'caller_id');
now_GR.query();
スコープ付き GlideRecord - addNotNullQuery(文字列 fieldName)
パラメーターに渡されたフィールドの値が null でないレコードを指定するフィルター。
クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()、update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。
glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | チェックするフィールドの名前。 |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | パラメーターに渡されたフィールドの値が null でないレコードを指定するフィルター。 |
var target = new GlideRecord('incident');
target.addNotNullQuery('short_description');
target.query(); // Issue the query to the database to get all records where short_description is not null
while (target.next()) {
// add code here to process the incident record
}
スコープ指定 GlideRecord - addNullQuery(文字列 fieldName)
指定したフィールドの値が null であるレコードを返すフィルターを追加します。
クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で insert()、update()、deleteRecord()、または deleteMultiple() メソッドを使用すると、データが失われる可能性があります。
glide.invalid_query.returns_no_rows システムプロパティを true に設定すると、無効なエンコードクエリを含むクエリがレコードを返さないようにすることができます。場合によっては、 glide.invalid_query.returns_no_rows が true に設定されていても、クエリは API 結果のレコードを返すことがあります。これは、無効なクエリ用語が WHERE 演算子で使用されているクエリで発生します。このようなクエリでは、WHERE 演算子は無効な用語を無視しますが、クエリ ステートメントの残りの部分を解釈して返します。このシステムプロパティとその機能の詳細については、「 Available system properties」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | チェックするフィールドの名前。 |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | GlideRecord に追加されたクエリ条件。 |
var target = new GlideRecord('incident');
target.addNullQuery('short_description');
target.query(); // Issue the query to the database to get all records where short_description is null
while (target.next()) {
// add code here to process the incident record
}
スコープ対象 GlideRecord - addQuery(文字列名, オブジェクト値)
検索クエリを作成し、要求に一致する行を返します。
SQL に精通している場合、このメソッドは「where」句に似ています。1 つ以上の addQuery() 呼び出しを 1 つのクエリで行うことができます。この場合、クエリは AND です。クエリステートメントのいずれかを OR で処理する必要がある場合は、 GlideQueryCondition メソッド addOrCondition() を使用します。
addQuery () が myObj.addQuery('category','Hardware'); のように、テーブル名と比較値の 2 つのパラメーターのみで呼び出された場合、演算子は "equal to" と見なされます。
クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で 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 | オブジェクト | クエリ対象の値 (大文字と小文字は区別されません)。 |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | クエリ条件が GlideRecord に追加されました。 |
このコード例は、インシデントテーブル内のアクティブなレコードをクエリし、それらをすべて非アクティブに設定する方法を示しています。
var rec = new GlideRecord('incident');
rec.addQuery('active', true);
rec.query();
while (rec.next()) {
rec.setValue('active', false);
rec.update();
}
このコード例では、ポータルテキストインデックスグループの設定を使用して計算された検索結果の関連性値を使用して、kb_knowledgeテーブルの「email server」に一致するレコードのクエリを追加します。
var now_GR = new GlideRecord("kb_knowledge);
now_GR.addQuery("123TEXTQUERY321", "email server");
now_GR.addQuery("123TEXTINDEXGROUP321", "portal");
now_GR.query();
スコープ対象 GlideRecord - addQuery(文字列名, 文字列演算子, オブジェクト値)
要求をビルドする機能を提供します。この要求は、実行されると、指定されたテーブルから要求に一致する行を返します。
SQL に精通している場合、このメソッドは「where」句に似ています。1 つ以上の addQuery() 呼び出しを 1 つのクエリで行うことができます。この場合、クエリは AND です。クエリステートメントのいずれかを OR で処理する必要がある場合は、 GlideQueryCondition メソッド addOrCondition() を使用します。
クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で 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 | 文字列 | テーブルフィールド名。 |
| オペレーター | 文字列 | クエリ演算子。使用可能な値は、 値 パラメーターのデータタイプによって異なります。 番号:
文字列 (大文字である必要があります):
注: LIKE 演算子の代わりに CONTAINS を使用します。 |
| value | オブジェクト | クエリ対象の値 (大文字と小文字は区別されません)。 |
| タイプ | 説明 |
|---|---|
| GlideQueryCondition | GlideRecord に追加されたクエリ条件。 |
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.setValue('active', false);
gs.info('Active incident ' + rec.getValue('number') + ' closed');
rec.update();
}
IN 演算子の使用。
var now_GR = new GlideRecord('incident');
now_GR.addQuery('number','IN','INC00001,INC00002');
now_GR.query();
while(now_GR.next()) {
//do something....
}
スコープ付き GlideRecord:addSystemEncodedQuery(文字列クエリ)
エンコードされたクエリ文字列を使用してクエリを追加します。 このメソッドを使用して、クエリーアクセスをバイパスします。
システムレベルのアクセスが必要な場合は、このメソッドを使用して、クエリー ACL の適用がユーザーに対して明示的にバイパスされるようにします。クエリアクセスを強制するには、addUserEncodedQuery() クエリアクセスを強制するには、
このメソッドを 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| query | 文字列 | エンコードされたクエリ文字列。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、優先度の値が 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() クエリアクセスを強制するには、
複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は昇順で並べ替えられます。レコードを降順に並べるには、「 addSystemOrderByDesc()」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | この GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、インシデントレコードを簡単な説明の昇順で並べ替える方法を示しています。
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() クエリアクセスを強制するには、
複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は降順で並べられます。レコードを昇順で並べ替えるには、「 addSystemOrderBy()」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、インシデントレコードを簡単な説明の降順に並べ替える方法を示しています。
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() クエリアクセスを強制するには、
クエリを本番インスタンスに展開する前に、必ず準本番インスタンスでテストしてください。無効なフィールド名を含めるなど、エンコードされたクエリが正しく構築されていないと、無効なクエリが生成されます。無効なクエリが実行されると、クエリ条件の無効な部分が削除され、結果はクエリの有効な部分に基づいており、テーブルのすべてのレコードが返される場合があります。無効なクエリ結果で 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 | 文字列 | テーブルフィールド名。 |
| オペレーター | オブジェクト | クエリ演算子。使用可能な値は、 値 パラメーターのデータタイプによって異なります。 番号:
文字列 (大文字である必要があります):
注: LIKE 演算子の代わりに CONTAINS を使用します。 動的スキーマ演算子:
|
| value | オブジェクト | クエリ対象の値 (大文字と小文字は区別されません)。 |
| タイプ | 説明 |
|---|---|
| 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 に基づいて) クエリアクセス権を持つレコードのみを返します。
- addEncodedQuery() は、ACL を強制しなくても同じ機能を提供します。
- addSystemEncodedQuery() クエリアクセスチェックをバイパスします。
このメソッドを 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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| query | 文字列 | エンコードされたクエリ文字列。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、優先度の値が 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()」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | この GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、インシデントレコードを簡単な説明の昇順で並べ替える方法を示しています。
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 に基づいて) クエリアクセス権を持つレコードのみを返します。
- orderByDesc() は、ACL を強制しなくても同じ機能を提供します。
- addSystemOrderByDesc() クエリアクセスチェックをバイパスします。
複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は降順で並べられます。レコードを昇順で並べ替えるには、「 addUserOrderBy()」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、インシデントレコードを簡単な説明の降順に並べ替える方法を示しています。
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」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | テーブルフィールド名。 |
| オペレーター | オブジェクト | クエリ演算子。使用可能な値は、 値 パラメーターのデータタイプによって異なります。 番号:
文字列 (大文字である必要があります):
注: LIKE 演算子の代わりに CONTAINS を使用します。 動的スキーマ演算子:
|
| value | オブジェクト | クエリ対象の値 (大文字と小文字は区別されません)。 |
| タイプ | 説明 |
|---|---|
| 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 - canCreate()
ユーザーのロールを含むアクセス制御ルールが、このテーブルへの新しいレコードの挿入を許可するかどうかを決定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | ユーザーのロールがこのテーブルのレコードの作成を許可するかどうかを示すフラグ。 有効な値:
|
このコード例では、現在のユーザーがシステムログのインシデントテーブルにレコードを作成できるかどうかを書き込みます。
var now_GR = new GlideRecord('incident');
gs.info(now_GR.canCreate());
スコープ付き GlideRecord - canDelete()
ユーザーのロールを含むアクセス制御ルールで、このテーブルのレコードの削除が許可されているかどうかを決定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | ユーザーのロールがこのテーブルのレコードの削除を許可するかどうかを示すフラグ。 有効な値:
|
このコード例では、現在のユーザーがシステムログのインシデントテーブルのレコードを削除できるかどうかを書き込みます。
var att = new GlideRecord('sys_attachment');
gs.info(att.canDelete());
スコープ付き GlideRecord - canRead()
アクセス制御ルール (ACL) がこのテーブルのレコードの読み取りを許可するかどうかを決定します。このメソッドは、ユーザーロール、スクリプト化された ACL、スクリプト化された条件を持つ ACL など、すべての ACL タイプを評価します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | ユーザーのロールがこのテーブルのレコードの読み込みを許可するかどうかを示すフラグ。 有効な値:
|
このコード例では、現在のユーザーがインシデントテーブルのレコードをシステムログで読み取ることができるかどうかを書き込みます。
var now_GR = new GlideRecord('incident');
gs.info(now_GR.canRead());
スコープ付き GlideRecord - canWrite()
ユーザーのロールを含むアクセス制御ルールが、このテーブルのレコードの編集を許可するかどうかを決定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | ユーザーのロールがこのテーブルのレコードの書き込みを許可しているかどうかを示すフラグ。 有効な値:
|
このコード例では、現在のユーザーがシステムログのインシデントテーブルにレコードを書き込むことができるかどうかを書き込みます。
var now_GR = new GlideRecord('incident');
gs.info(now_GR.canWrite());
スコープ指定 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() を使用すると同じパフォーマンス上の利点が得られます。
- chooseWindow() メソッドが最初に呼び出された場合、そのレコードウィンドウは setLimit() メソッドによって上書きされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| 最初の行 | 番号 | 範囲 (両端を含む) の開始行の 0 ベースのインデックス。(値 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() は使用しないでください。常に各レコードを個別に削除してください。また、大きなテーブルを操作する場合は、このメソッドを 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();
スコープ対象 GlideRecord - deleteRecord()
現在のレコードを削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | レコードが正常に削除されたかどうかを示すフラグ。 有効な値:
|
この例では、指定されたレコードをインシデントテーブルから削除する方法を示します。
var now_GR = new GlideRecord('incident');
//to delete one record
if (now_GR.get('99ebb4156fa831005be8883e6b3ee4b9'))
now_GR.deleteRecord();
この例では、レコードが挿入された直後にインシデントテーブルから削除する方法を示します。インシデント 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
スコープ付き 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 - get(オブジェクト名, オブジェクト値)
現在の GlideRecord オブジェクトの指定されたレコードを返します。
このメソッドは、1 つまたは 2 つのパラメーターを受け取ります。単一のパラメーターのみが渡された場合、メソッドはそれが目的のレコードのsys_idであると見なします。見つからない場合は、値と表示値の照合を試みます。2 つのパラメーターが渡された場合、最初のパラメーターは検索する GlideRecord 内の列の名前です。2 つ目は検索する値です。複数のレコードが見つかった場合は、 next() を使用して追加のレコードにアクセスします。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | オブジェクト | オプション。指定された value パラメーターを検索するためにインスタンス化された GlideRecord 列の名前。単一のパラメーターのみが渡された場合、メソッドはこのパラメーターが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.short_description); // logs Incident Short description
この例では、検索するフィールド (caller_id.name) とそのフィールド内で照合する値を渡して、インシデントレコードを取得する方法を示します。
var grIncident = new GlideRecord('incident');
var returnValue = grIncident.get('caller_id.name','Sylivia Wayland');
gs.info(returnValue); // logs true or false
gs.info(grIncident.getValue('number')); // logs Incident Number
スコープ対象 GlideRecord:getAttribute(文字列 fieldName)
指定されたフィールドの辞書属性を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | 辞書属性を返すフィールド名 |
| タイプ | 説明 |
|---|---|
| 文字列 | ディクショナリー属性 |
doit();
function doit() {
var now_GR = new GlideRecord('sys_user');
now_GR.query("user_name","admin");
if (now_GR.next()) {
gs.info("we got one");
gs.info(now_GR.location.getAttribute("tree_picker"));
}
}
スコープ付き 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.
スコープ指定 GlideRecord - getDisplayValue()
現在のレコードの表示値を取得します。
表示値は、データベースの実際の値とユーザーまたはシステムの設定と設定に基づいて操作されます。
- 選択肢フィールド:データベース値は数値でもかまいませんが、表示値はよりわかりやすいものになります。
- 日付フィールド:データベース値は UTC 形式で、表示値はユーザーのタイムゾーンに基づいています。
- 暗号化テキスト:データベース値は暗号化されますが、表示される値はユーザーの暗号化コンテキストに基づいて暗号化されません。
- 参照フィールド:データベース値はsys_idですが、表示値は参照レコードの表示フィールドです。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 現在のレコードの表示値。 |
この例では、指定されたインシデントレコードの表示値をログに書き込みます。
var now_GR = new GlideRecord('incident');
now_GR.get('sys_id','<sys_id>');
gs.info(now_GR.getDisplayValue());
出力:
INC0000050
スコープ付き GlideRecord - getED()
要素の記述子を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| GlideElementDescriptor | 要素の記述子。 |
この例では、インシデント GlideRecord の名前フィールドを取得する方法を示しています。
var grInc = new GlideRecord('incident');
grInc.get('sys_id','ef43c6d40a0a0b5700c77f9bf387afe3');
var field = grInc.getElement('priority');
var ed = field.getED();
var isEdge = ed.getLabel();
gs.info("Label is - " + isEdge);
Label is - Priorityスコープ対象 GlideRecord:getElement(文字列 fieldName)
指定されたフィールドの GlideElement オブジェクトを取得します。
このメソッドによって返される値は、完全な GlideElement オブジェクトです。結果は、フィールド値をドット連結するのと同じです。たとえば、 now_GR.getElement('short_description') は nowGR.short_description と同じ結果を提供します。
ほとんどの場合、ドット連結を使用してレコードから値を取得しないでください。ドット連結では、フィールド値ではなくオブジェクト全体が取得されます。オブジェクトを取得すると、より多くのストレージが使用され、アレイまたは サービスポータルで使用すると、望ましくない結果が生じる可能性があります。
オブジェクト全体を取得する代わりに、次のいずれかの方法を使用してフィールド値をコピーできます。
var mgr = current.caller_id.manager.toString();| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | GlideElement オブジェクトを返す列名。 |
| タイプ | 説明 |
|---|---|
| GlideElement | 現在のレコードの指定された列の GlideElement。各オブジェクトは、現在の GlideRecord のフィールドを記述します。 |
次の例は、[ 簡単な説明 ] フィールドに詳細を含む新しいインシデントレコードを追加する方法を示しています。
var elementName = 'short_description';
var now_GR = new GlideRecord('incident');
now_GR.newRecord();
now_GR.setValue(elementName, "My DB is not working");
now_GR.insert();
var sdesc = now_GR.getElement('short_description');
gs.info(sdesc.getValue());
出力:
My DB is not working
スコープ付き GlideRecord - getElements()
GlideElement オブジェクトのアレイを返します。各オブジェクトは、現在の GlideRecord のフィールドを記述します。
var mgr = current.caller_id.manager.toString();| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| アレイ | GlideElement オブジェクトのアレイ。各オブジェクトは、現在の GlideRecord のフィールドを記述します。 |
次の例では、質問 [question] テーブルで最近作成された 5 件のレコードの [名前] フィールドの値を表示します。
var now_GR = new GlideRecord('question');
var elementArr = now_GR.getElements();
now_GR.orderByDesc('sys_created_on');
now_GR.setLimit(5);
now_GR.query();
while (now_GR.next()){
var qNames = now_GR.name.toString();
elementArr.push(qNames);
gs.info(qNames);
}
出力:
delivery_time_var
delivery_time
sequence
priority
assigned_group
スコープ付き GlideRecord - getEncodedQuery()
現在の結果セットのクエリ条件をエンコードされたクエリ文字列として取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | エンコードされたクエリ文字列。 |
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active', true);
now_GR.addQuery('priority', 1);
now_GR.query();
var encodedQuery = now_GR.getEncodedQuery();
gs.info(encodedQuery);
出力:
active=true^priority=1
スコープ付き 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() + " = "
+ now_V.getDisplayValue() + "\n");
}
}
}
スコープ付き GlideRecord - getLastErrorMessage()
前回のエラーメッセージを取得します。最後のエラーメッセージがない場合は、null が返されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 文字列としての最後のエラーメッセージ。 |
// Setup a data policy where short_description field in incident is mandatory
var now_GR = new GlideRecord('incident');
now_GR.insert(); // insert without data in mandatory field
var errormessage = now_GR.getLastErrorMessage();
gs.info(errormessage);
出力:
Data Policy Exception: Short description is mandatory
スコープ対象 GlideRecord:getLink(ブール、noStack)
現在のレコードへのリンクを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| スタックなし | ブーリアン | 返されたリンクにsysparm_stackパラメーターを追加するかどうかを示すフラグ。このパラメーターは、現在のリンクを閉じた後にアクセスするページを指定します。 有効な値: true の場合、sysparm_stack パラメーターはリンクに追加されません。
|
| タイプ | 説明 |
|---|---|
| 文字列 | 現在のレコードへのリンク。 |
この例では、優先度が「1」のすべてのインシデントレコードを照会し、サーブレット URI と現在のレコードのリンクをシステムログに書き込みます。
var now_GR = new GlideRecord('incident');
now_GR.addActiveQuery();
now_GR.addQuery("priority", 1);
now_GR.query();
now_GR.next();
gs.info(gs.getProperty('glide.servlet.uri') + now_GR.getLink(false));
出力:
https://instance.service-now.com/incident.do?sys_id=46e2fee9a9fe19810049b49dee0daf58&sysparm_stack=incident_list.do?sysparm_query=active=true
スコープ付き GlideRecord - getRecordClassName()
現在のレコードのクラス名を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | クラス名。 |
var now_GR = new GlideRecord('incident');
var recordClassName = now_GR.getRecordClassName();
gs.info(recordClassName);
出力:
incident
スコープ指定 GlideRecord - getRowCount()
現在の GlideRecord オブジェクトの行 (レコード) 数を取得します。
- GlideRecord または GlideAggregate のレコード数を取得しています
- GlideRecord getRowCount() API と 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
スコープ付き GlideRecord - getTableName()
GlideRecord に関連付けられているテーブルの名前を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | テーブル名 |
var now_GR = new GlideRecord('incident');
gs.info(now_GR.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(文字列名)
フィールド内の基礎となる要素の文字列値を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 値を取得するフィールドの名前。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 基になる要素の文字列値。フィールドが空の場合、またはフィールドが存在しない場合は null を返します。ブール値は、false と true ではなく 「0」 と 「1」 の文字列値として返されます。 |
var now_GR = new GlideRecord('incident');
now_GR.orderBy('number');
now_GR.query('active','true');
now_GR.next();
gs.info(now_GR.getValue('number'));
出力:
INC0000002
スコープ対象 GlideRecord:GlideRecord(文字列 tableName)
指定されたテーブルの GlideRecord クラスのインスタンスを作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| tableName | 文字列 | 使用するテーブル。 |
var now_GR = new GlideRecord('incident');
スコープ対象 GlideRecord - hasNext()
GlideRecord オブジェクトにさらにレコードがあるかどうかを判定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | クエリ結果セットにより多くのレコードがある場合は True。 |
var rec = new GlideRecord('incident');
rec.query();
if (rec.hasNext()) {
gs.info("Table is not empty");
}
スコープ付き GlideRecord - insert()
現在のレコードに設定されているフィールド値を使用して、新しいレコードを挿入します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 挿入されたレコードのSys_id。挿入されていない場合は null。 |
var now_GR = new GlideRecord('incident');
now_GR.initialize();
now_GR.setValue('name', 'New Incident');
now_GR.setValue('description', 'Incident description');
now_GR.insert();
出力:
138fb4111b4d4d907cf30d03cd4bcb57
スコープ付き GlideRecord - initialize()
挿入前の入力に適した空のレコードを作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var grIncident = new GlideRecord('incident');
grIncident.initialize();
grIncident.setValue('short_description', 'New Incident');
grIncident.setValue('description', 'Incident description');
grIncident.insert();
スコープ対象 GlideRecord:isActionAborted()
現在のデータベースアクションを中止するかどうかを確認します。
isActionAborted() は、新しいスレッド用に next() メソッドによって初期化されます (false に設定)。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | 現在のデータベースアクションを中止するかどうかを示すフラグ。 有効な値:
|
var now_GR = new GlideRecord('incident');
gs.info(now_GR.isActionAborted());
出力:
false
スコープ付き GlideRecord:isEncodedQueryValid(文字列クエリ)
指定されたエンコードされたクエリが有効かどうかを確認します。
指定されたエンコードされたクエリが有効な場合、 addEncodedQuery() を呼び出した場合と同様に、クエリが適用されます。指定されたエンコードクエリが無効な場合は、エンコードクエリとして sys_idNotValidnull が追加されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| query | 文字列 | 検証するエンコードされたクエリ。「 エンコードされたクエリ文字列」を参照してください。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 指定されたエンコードクエリが有効かどうかを示すフラグ。
|
このコード例は、エンコードされたクエリを検証し、クエリが有効な場合にロジックを実行する方法を示しています。
var now_GR = new GlideRecord('incident_sla');
var isValidQuery = now_GR.isEncodedQueryValid('inc_impact=1^taskslatable_active=true');
if (isValidQuery) {
now_GR.query();
.
.
.
}
スコープ対象 GlideRecord:isNewRecord()
現在のレコードが、まだデータベースに挿入されていない新しいレコードであるかどうかを確認します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | レコードが新規で、データベースに挿入されていない場合は True。 |
var now_GR = new GlideRecord("x_app_table");
now_GR.newRecord(); // create a new record and populate it with default values
gs.info(now_GR.isNewRecord());
スコープ付き GlideRecord - isValid()
現在のテーブルが有効かどうか、またはレコードが正常に取得されたかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | テーブルが有効かどうか、またはレコードが正常に取得されたかどうかを示すフラグ。 可能な値:
|
var comment_GR = new GlideRecord('cf_comment');
var commentId = '99ebb4156fa831005be8883e6b3ee4b9';
comment_GR.get(commentId);
gs.info(comment_GR.isValid());
スコープ付き GlideRecord:isValidEncodedQuery(文字列クエリ)
エンコードされたクエリの構文が正しいかどうかを確認します。
"") を渡す場合:- 空の文字列 (
"") はクエリが存在しないことを表し、false を返します。 GlideRecord.addEncodedQuery("")を呼び出した後にGlideRecord.query()を呼び出すと、すべての行が返されます。クエリメソッドは、SQL SELECT ステートメントに似ています。SQL では、「SELECT * FROM foo WHERE X」を使用すると、値 X はクエリを表します。クエリー値が指定されていない場合は、すべてのレコードが返されます (例:SELECT * FROM foo)。
| 名前 | タイプ | 説明 |
|---|---|---|
| query | 文字列 | 検証するエンコードされたクエリ。「 エンコードされたクエリ文字列」を参照してください。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 指定されたエンコードクエリが有効かどうかを示すフラグ。
|
このコード例は、エンコードされたクエリが有効かどうかを確認する方法を示しています。
var queryString = "priority=1^ORpriority=2";
var now_GR = new GlideRecord('incident');
var isValidQuery = now_GR.isValidEncodedQuery(queryString);
if (isValidQuery) {
now_GR.addEncodedQuery(queryString);
now_GR.query();
.
.
.
}
スコープ対象 GlideRecord:isValidField(String columnName)
指定されたフィールドが現在のテーブルで定義されているかどうかを決定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| columnName | 文字列 | フィールドの名前。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | フィールドが現在のテーブルに定義されている場合は True。 |
var now_GR = new GlideRecord('incident');
now_GR.initialize();
gs.info(now_GR.isValidField("short_description"));
スコープ対象 GlideRecord - isValidRecord()
レコードがクエリー/レコード取得操作によって実際に返されたかどうかを判定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | レコードがクエリー/取得操作によって実際に返されたかどうかを示すフラグ。 有効な値:
|
var rec = new GlideRecord('incident');
rec.query();
while (rec.next()) {
gs.info(rec.number + ' exists');
}
gs.info(rec.isValidRecord());
スコープ対象 GlideRecord - isView()
レコードがビューまたはテーブルのどちらで作成されたかを確認します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | レコードがビューであるテーブルで作成されたかどうかを示すフラグ。
|
このコード例は、GlideRecord がビューまたはテーブルで作成されたかどうかを判断する方法を示しています。
var mySLA = new GlideRecord('incident_sla');
if (mySLA.isView() == true){
gs.info('This record was created in a view.');
} else {
gs.info('This record was created in a table.');
}
出力:
This record was created in a view.
スコープ対象 GlideRecord - newRecord()
新しい GlideRecord レコードを作成し、フィールドのデフォルト値を設定して、レコードに一意の ID を割り当てます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var now_GR = new GlideRecord("x_app_table");
now_GR.newRecord();
gs.info(now_GR.isNewRecord());
出力:
true
スコープ対象 GlideRecord - next()
GlideRecord オブジェクトの次のレコードに移動します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | GlideRecord に「次の」レコードがあるかどうかを示すフラグ。 有効な値:
|
var rec = new GlideRecord('incident');
rec.query();
while (rec.next()) {
gs.info(rec.getValue('number') + ' exists');
}
INC0010112 exists
INC0010114 exists
INC0010119 exists
INC0010127 existsスコープ付き GlideRecord - _next()
GlideRecord の次のレコードに移動します。next() と同じ機能を提供します。GlideRecord に next という名前の列がある場合は、このメソッドを使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | クエリセットにさらにレコードがあるかどうかを示すフラグ。 可能な値:
|
次の例は、インシデント [incident] テーブルの各レコードを一覧表示する方法を示しています。
var rec = new GlideRecord('incident');
rec.query();
while (rec._next()) {
gs.info(rec.getValue('number') + ' exists');
}
出力:
INC0000060 exists
INC0009002 exists
INC0000009 exists
INC0000010 exists
INC0000011 exists
INC0000012 exists
...
スコープ付き GlideRecord - operation()
操作が挿入、更新、または削除のいずれであるかを決定します。
操作を知ることで、 current.operation() を使用して、各操作を一意に処理できる汎用ビジネスルールを作成できます。
グローバル変数 current の使用方法については、「 ビジネスルールのグローバル変数」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 現在の操作。 可能な値:
|
次の例は、このメソッドをビジネスルールで使用する方法を示しています。operation() メソッドは、どの操作がイベントをトリガーしたかを検出し、更新操作と挿入操作に応じて異なるアクションを実行します。
if(current.operation() == "update") {
current.updates ++; }
if(current.operation() == "insert") {
current.updates = 0; }
スコープ対象 GlideRecord - orderBy(文字列名)
orderBy 列を指定します。
複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は昇順で並べ替えられます。レコードを降順に並べ替えるには、「 スコープ対象 GlideRecord - orderByDesc(文字列名)」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | この GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、インシデントレコードを簡単な説明の昇順で並べ替える方法を示しています。
var queryString = "priority=2";
var now_GR = new GlideRecord('incident');
now_GR.orderBy('short_description'); // Ascending Order
now_GR.addEncodedQuery(queryString);
now_GR.query();
while (now_GR.next()) {
gs.info(now_GR.getValue('short_description'));
}
出力:
Can't launch 64-bit Windows 7 virtual machine
Can't log into SAP from my laptop today
Network storage unavailable
Please remove the latest hotfix from my PC
スコープ対象 GlideRecord - orderByDesc(文字列名)
降順の orderBy 列を指定します。
複数の列で並べ替えるには、このメソッドを複数回呼び出します。結果は降順で並べられます。レコードを昇順で並べ替えるには、「 スコープ対象 GlideRecord - orderBy(文字列名)」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | GlideRecord オブジェクトのレコードを並べ替えるために使用する列名。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、インシデントレコードを簡単な説明の降順に並べ替える方法を示しています。
var queryString = "priority=2";
var now_GR = new GlideRecord('incident');
now_GR.orderByDesc('short_description'); //Descending Order
now_GR.addEncodedQuery(queryString);
now_GR.query();
while (now_GR.next()) {
gs.info(now_GR.getValue('short_description'));
}
出力:
Please remove the latest hotfix from my PC
Network storage unavailable
Can't log into SAP from my laptop today
Can't launch 64-bit Windows 7 virtual machine
スコープ対象 GlideRecord:query(文字列フィールド, 文字列値)
addQuery() や addEncodedQuery() などのクエリメソッドで指定されたフィルターに基づいて、テーブルに対してクエリを実行します。
このメソッドは、GlideRecord テーブルとテーブルの参照を照会します。詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。
クエリのビルドと実行の詳細については、 GlideRecord の記事を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | オプション - 値パラメーターも指定する必要があります。値パラメーターで指定された値を検索するフィールドの名前。 注:
通常、このメソッドは引数なしで実行されますが、名前と値のペアを指定して、指定した値を含むレコードをフィルタリングできます。パラメーターを指定すると、「名前=値」条件がクエリに追加されます。 |
| value | 文字列 | オプション - フィールドパラメーターも指定する必要があります。指定されたフィールドパラメーターで検索する値。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、システム辞書 [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
スコープ対象 GlideRecord - _query(文字列フィールド, 文字列値)
addQuery() や addEncodedQuery() などのクエリメソッドで指定されたフィルターに基づいて、テーブルに対してクエリを実行します。 このメソッドは、「query」という名前の列があるテーブルで使用することを目的としています。そのため、query() メソッドの実行中にエラーが発生する可能性があります。
このメソッドは、GlideRecord テーブルとテーブルの参照を照会します。詳細については、「 スクリプトでのテーブルのクエリ」を参照してください。
クエリのビルドと実行の詳細については、 GlideRecord の記事を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | オプション - 値パラメーターも指定する必要があります。値パラメーターで指定された値を検索するフィールドの名前。 注:
通常、このメソッドは引数なしで実行されますが、名前と値のペアを指定して、指定した値を含むレコードをフィルタリングできます。パラメーターを指定すると、「名前=値」条件がクエリに追加されます。 |
| value | 文字列 | オプション - フィールドパラメーターも指定する必要があります。指定されたフィールドパラメーターで検索する値。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、ナレッジフィードバック [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?
スコープ対象 GlideRecord:setAbortAction(Boolean b)
次のデータベースアクション (挿入、更新、削除) を中止するかどうかを示すフラグを設定します。これはビジネスルールでよく使用されます。
onBefore ビジネスルールで使用して、データベースアクションが実行されないようにします。ビジネスルールは、 setAbortAction() が呼び出された後も実行を継続します。setAbortAction() を呼び出しても、後続のビジネスルールの実行は停止されません。このメソッドを呼び出すと、データベースアクションの実行のみが防止されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| b | ブーリアン | True に設定すると、次のアクションが中止されます。アクションが許可される場合は False。 |
| タイプ | 説明 |
|---|---|
| なし |
// Often used in business rule to check whether the current operation should be aborted.
if (current.size > 16) {
current.setAbortAction(true);
}
スコープ対象 GlideRecord:setLimit(Number maxNumRecords)
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() を使用すると同じパフォーマンス上の利点が得られます。
- chooseWindow() メソッドが最初に呼び出された場合、そのレコードウィンドウは setLimit() メソッドによって上書きされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| maxNumRecords | 番号 | フェッチするレコードの最大数。 |
| タイプ | 説明 |
|---|---|
| なし |
var now_GR = new GlideRecord('incident');
now_GR.orderByDesc('sys_created_on');
now_GR.setLimit(10);
now_GR.query(); // this retrieves latest 10 incident records created
スコープ対象 GlideRecord:setNewGuidValue(文字列 guid)
現在のレコードのsys_id値を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| guid | 文字列 | 現在のレコードにアサインする GUID。 |
| タイプ | 説明 |
|---|---|
| なし |
var now_GR = new GlideRecord('incident');
now_GR.setValue('short_description', 'The third floor printer is broken');
now_GR.setNewGuidValue('eb4636ca6f6d31005be8883e6b3ee333');
now_GR.insert();
gs.info(now_GR.getValue('sys_id'));
スコープ対象 GlideRecord - setNoCount()
GlideRecord クエリによる COUNT(*) クエリの実行を停止します。
COUNT(*) クエリがトリガーされます。COUNT(*) クエリは、100 万以上のレコードを含むテーブルでパフォーマンスを低下させる可能性があります。詳細については、Now Support ナレッジベースの記事「 パフォーマンスの向上 - ページネーション数の削除 [KB0817996] 」を参照してください。COUNT(*) も停止します。setLimit() メソッドがクエリに含まれている場合、setNoCount() を使用する必要はありません。| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、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
スコープ対象 GlideRecord:setValue(文字列名, オブジェクト値)
指定された名前のフィールドの値を指定された値に設定します。
通常、スクリプトは now_GR.category = value を実行します。ただし、要素名自体が変数である場合は、 now_GR.setValue(elementName, value) を使用できます。値を設定するときは、フィールドのデータタイプが入力した値のデータタイプと一致することを確認してください。
- password2 フィールドを使用した認証用ではありません
- setValue() メソッドは password2 データをクリアーテキストとして渡すため、暗号化データの期待に関するエラーが発生します。さらに、password2 フィールドに setValue() メソッドを使用すると、暗号化する必要があるデータが公開されます。
password2 認証の場合は、代わりに setDisplayValue() メソッドを使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | フィールドの名前 |
| value | オブジェクト | フィールドにアサインする値。 |
| タイプ | 説明 |
|---|---|
| なし |
var elementName = 'short_description';
var now_GR = new GlideRecord('incident');
now_GR.initialize();
now_GR.setValue(elementName, "My DB is not working");
now_GR.insert();
スコープ対象 GlideRecord:setWorkflow(ブール値有効化)
ビジネスルール、スクリプトエンジン、または監査の実行を有効または無効にします。
| 名前 | タイプ | 説明 |
|---|---|---|
| 有効化 | ブーリアン | ビジネスルール、スクリプトエンジン、および監査の実行を有効または無効にするかどうかを示すフラグ。 有効な値:
デフォルト:true |
| タイプ | 説明 |
|---|---|
| なし |
//Enable business rules, scripts engines for x_app_table
var now_GR = new GlideRecord("x_app_table");
now_GR.setWorkflow(true);
スコープ対象 GlideRecord - update(文字列の理由)
行われた変更で GlideRecord を更新します。レコードがまだ存在しない場合は挿入されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| 理由 | 文字列 | オプション。更新の理由。その理由が監査レコードに表示されます。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 新規または更新されたレコードのSys_id。更新が失敗した場合は null を返します。 |
次の例は、インシデントの [簡単な説明] フィールドを更新する方法を示しています。
var now_GR = new GlideRecord('incident');
now_GR.get('99ebb4156fa831005be8883e6b3ee4b9');
now_GR.setValue('short_description', 'Update the short description');
now_GR.update();
gs.info(now_GR.getElement('short_description'));
出力:
Update the short description.
スコープ付き GlideRecord - updateMultiple()
指定されたクエリ内の各 GlideRecord を、指定された変更セットで更新します。
このメソッドでは、複数のジャーナルエントリの追加はサポートされていません。
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();スコープ指定 GlideRecord - updateWithReferences(オブジェクト理由)
レコードを更新し、提供された情報を使用して関連レコードを挿入または更新します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 理由 | オブジェクト | 更新の理由。その理由が監査レコードに表示されます。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 更新されるレコードの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();
}