[ServiceNow]ハンズオンで習得! GlideRecord APIの使い方【解説】

ServiceNowのサーバーサイド・スクリプティングのGlideRecord APIの使い方を紹介します。Glide Recordの概要を説明したあと、GlideRecordのスクリプティングの方法を、サンプル画像を使いながら、ハンズオン形式で進めていきます。解説後、実習にトライすることで、GlideRecord APIの知識とスキルを同時により深めていける内容になっています。

概要

ServiceNowのGlideRecordについて、サーバーサイドのスクリプティングの手順を説明します。本ハンズオンを完了すると、以下のイメージ画像のようなServiceNowのテーブルから指定したデータを取得できるようになります。

■ハンズオンでできるようになること

  • GlideRecordのスクリプティングの手順を習得できるようになる。
  • テーブルから指定したデータを取得し表示できるようになる。

まず、GlideRecordは、サーバーサイドのスクリプティングになります。

主な用途は、ServiceNow内のデータベースとやり取りするための手段として、データベース操作に使用されます。GlideRecordを使うことで、データベースのレコードに対して、CRUD(Create、Read、Update、Delete)の操作を実行できるようになります。

サーバーサイドのGlideRecordとクライアントサイドのGlideRecord
今回、解説しているGlideRecord APIは、サーバーサイドのAPIになります。他に、グローバル対象のアプリケーションでは、クライアントサイドのGlideRecord APIが存在します。クライアントサイドのGlideRecord APIは、スコープ対象のアプリケーションでは使用できません。

仕様

開発インスタンスは、ServiceNow Developer Programで取得した無償の開発インスタンスを使っています。インスタンスのバージョンはUthaリリースを使っています。インスタンスは、初期化した状態になります。

手順

次に、GlideRecordのスクリプティングの手順になります。GlideRecordは、1 つのテーブルのレコードを含むオブジェクトです。最初にGlideRecordオブジェクトをインスタンス化したあと、クエリによる範囲指定、クエリの実行、最後にスクリプトを実行する順番になります。

●GlideRecordのスクリプティング手順

  1. 目的のテーブルに対してGlideRecordオブジェクトを作成。
  2. クエリ条件として範囲を指定。
  3. クエリを実行。
  4. GlideRecordオブジェクトで返されたレコードにスクリプトを実行。

ここでは、インシデントテーブル(Incident)から[Priorityが1-Critical](優先度が1)であるレコードを取得したあと、[Priorityが1-Critical]であるレコードすべての”番号”(Number)を取得して表示させてみます。

まずは、事前準備になります。インスタンスを起動した後、[All]メニューから[Scripts – BackGround]を実行します。

サーバー上でJavaScriptを実行できる”Run Script”の画面がひらきます。

次に、GlideRecordのスクリプティング手順をすすめていきます。

  1. 目的のテーブルに対してGlideRecordオブジェクトを作成。

オブジェクト名は任意で構いません。ここでは、ServiceNow Developer Programのコースで使われているオブジェクト名(myObj)と同じにしています。

●基本構文

// 1. Create an object to store rows from a table
var myObj = new GlideRecord(‘table_name’);

目的のテーブルとなる”Incident”テーブルに対して、GlideRecordオブジェクトを新しく作成します。

var myObj = new GlideRecord(‘incident‘);
  1. クエリ条件として範囲を指定。

クエリ条件として範囲指定を設定するには、addQuery()メソッドを使用します。AddQuery()メソッドは、検索クエリを構築し、条件に一致するレコードを返します。

addQueryのクエリ演算子には、以下のようなものがあります。文字列のクエリ演算子は、大文字である必要があります。クエリ演算子は必要な際に設定します。

  • 数値: =, !=, >, >=, <, <=
  • 文字列: =, !=, STARTSWITH, ENDSWITH, CONTAINS, DOES NOT CONTAIN, IN, NOT IN, INSTANCEOF

●基本構文

// 2. Build query
myObj.addQuery(‘field_name’,’operator’,’value’);

クエリの範囲指定として、Incidentテーブルの[Priorityが1]で設定します。今回は、クエリ演算子は設定なしにしています。

myObj.addQuery(‘priority’,’1′);
  1. クエリを実行。

範囲を指定したあと、クエリを実行します。

●基本構文

// 3. Execute query
myObj.query();
  1. GlideRecordオブジェクトで返されたレコードにスクリプトを実行。

クエリを実行したあと、GlideRecordオブジェクトで返されたレコードにスクリプトを実行します。next()メソッドは1件目のレコードが取得したあと、次のレコードがあれば、順に取得します。

●基本構文

// 4. Process returned records
while(myObj.next()){
//Logic you want to execute.
//Use myObj.field_name to reference record fields

[Priorityが1]であるレコードすべての”番号”を表示させるスクリプティングを実行します。gs.printはGlideSystemメソッドの1つで、取得したパラメーターを表示するメソッドになります。

while(myObj.next()){
gs.print(myObj.number);
}

サーバーサイドのGlideSystem API
サーバーサイドのJavaScript で変数名gsで参照されるGlideSystem API は、システムや現在ログインしているユーザー、日付/時刻などの情報を取得するためのメソッドになります。

GlideRecordのメソッドの詳細な説明や種類については、以下、ServiceNow Developer ProgramのReferenceページをご参照ください。

■ServiceNow Developer ProgramのReferenceページ
GlideRecord(Utahリリース)

さいごに、これまでのGlideRecordのスクリプティングを”Run Script”にて入力したあと、[Run Script]ボタンをクリックして、スクリプトを実行します。

おつかれさまでした。GlideRecord APIを使って、Incidentテーブルから[Priorityが1]であるレコードを取得したあと、[Priorityが1]であるレコードすべての”番号”を取得して表示できました。

Incidentテーブルから[Priorityが1]であるレコードが27件あり、その番号すべてが表示されました。参考までに、実際にIncidentテーブルのレコードを確認してみると、[Priorityが1]であるレコードが27件あることが確認できます。

さらにスキルを深める【実習トレーニング】

ServiceNowのGlideRecord APIの使い方について、一通りの概要は掴めましたでしょうか。あとは、実習トレーニングで、GlideRecordを2,3回スクリプティングしてみると、GlideRecordをさくさくと使いこなせるようになると思います。

つぎは、ハンズオンで手慣れるGlideRecordの使い方【トレーニング】になります。ServiceNow Developerを目指して、トレーニング問題にぜひ挑戦してみてください。

参考資料

GlideRecord APIの使い方について、以下のServiceNowの公式資料を参考にしています。

以上、”[ServiceNow]ハンズオンで習得! GlideRecord APIの使い方【解説】”となります。

目次