ServiceNowのサーバーサイド・スクリプティングのGlideRecord APIの使い方をハンズオン形式で習得していきます。サンプル画像を使いながら、説明していきます。トレーニングを完了後、GlideRecord APIの知識の深堀とスキルアップできる内容になっています。
概要
ServiceNowのGlideRecordについて、サーバーサイドのスクリプティングの手順をハンズオンを通じて確認します。ハンズオンを完了すると、以下のイメージ画像のようなServiceNowのテーブルから指定したデータを取得できるようになります。
■ハンズオンでできるようになること
- GlideRecordのスクリプティングの手順を習得できるようになる。
- 複雑で複数のクエリ条件で、範囲を指定できるようになる。
- テーブルから指定したデータを取得し表示できるようになる。
仕様
開発インスタンスは、ServiceNow Developer Programで取得した無償の開発インスタンスを使っています。インスタンスのバージョンはUthaリリースを使っています。インスタンスは、初期化した状態になります。
要件
以下、要件にあわせた内容で、GlideRecord APIを使います。
ハンズオン完了時に取得されるデータ一覧は、概要にあるイメージ画像を参考にしてください。
- 作成するオブジェクトの名前は、任意。
- インシデントのテーブルから、以下のクエリ条件に該当するレコードを取得。
①Priorityが”1 – Critical”である。かつ、
②Stateが”Closed”でない。かつ、
③Categoryが”Software”である。または、
④Categoryが”Hardware”である。
※クエリ条件は、以下の画像を参照してください。 - クエリ条件に該当するレコードの番号(Number)すべてを画面に表示。
手順
まずは、事前準備になります。インスタンスを起動した後、[All]メニューから[Scripts – BackGround]を実行します。
サーバー上でJavaScriptを実行できる”Run Script”の画面がひらきます。
次に、GlideRecordのスクリプティング手順をすすめていきます。
- 目的のテーブルに対してGlideRecordオブジェクトを作成。
オブジェクト名は任意で構いません。ここでは、ServiceNow Developer Programのコースで使われているオブジェクト名(myObj)と同じにしています。
目的のテーブルとなる”Incident”テーブルに対して、GlideRecordオブジェクトを新しく作成します。
myObj = new GlideRecord(‘incident‘); | var
- クエリ条件として範囲を指定。
インシデントのテーブルから、クエリ条件として範囲を指定して該当するレコードを取得します。今回は、複雑で複数のクエリ条件で、範囲を指定できるエンコードのクエリ、addEncodedQuery()メソッドを使います。
●基本構文
// 2. Build query myObj.addEncodedQuery(‘<your_encoded_query>’); |
まずは、インシデントテーブルにて、フィルタ条件を設定します。漏斗ボタンをクリックしたあと、フィルタ条件を要件にあわせて設定します。設定後、[Run]ボタンをクリックし、フィルタ条件を実行します。
次に、ブレッドクラムのフィルタ条件の項目で、もっとも右側にある条件項目の部分を右クリックします。そのクリックした項目の条件とその左側にあるすべての条件が含まれたクエリ全体をコピーできます。
今回、最も右側にある条件を右クリックしてコピーできたクエリは、”priority=1^state!=7^category=software^ORcategory=hardware”となります。
先ほど、コピーしたクエリをaddEncodedQueryメソッドに追加します。
.addEncodedQuery( myObj‘priority=1^state!=7^category=software^ORcategory=hardware’); |
- クエリを実行。
addEncodedQueryメソッドで範囲を指定したあと、クエリを実行します。
myObj.query(); |
- 基本構文クエリ条件に該当するレコードの番号(Number)すべてを画面に表示
クエリ条件で該当するレコードすべての”番号”を表示させるスクリプティングを実行します。
myObj.next()){ gs.print(myObj.number); } | while(
さいごに、これまでのGlideRecordのスクリプティングを”Run Script”にて入力したあと、[Run Script]ボタンをクリックして、スクリプトを実行します。
おつかれさまでした。GlideRecord APIを使って、Incidentテーブルから今回のクエリ条件にみあうレコードを取得したあと、その抽出したレコードすべての”番号”を取得して表示できました。
表示されたレコードが9件あり、その番号すべてが表示されました。参考までに、実際にIncidentテーブルのレコードを確認してみると、Incidentテーブルから今回のクエリ条件にみあうレコードが9件あることが確認できます。
参考資料
GlideRecord APIの使い方について、以下のServiceNowの公式資料を参考にしています。
- GlideRecord – スコープ対象(ServiceNow製品ドキュメント)
- スクリプトでのテーブルのクエリ(製品ドキュメント)
- Server-side Scripting – GlideRecord (ServiceNow Developer Program)
以上、”[ServiceNow]ハンズオンで習得! GlideRecord APIの使い方②【トレーニング】”となります。