LoginSignup
1
0

More than 1 year has passed since last update.

【ServiceNow】特定の列の要素一覧を取得したい~応用編~

Last updated at Posted at 2022-06-07

はじめに

  • バージョン
    • ServiceNow: Rome

 前回の記事【ServiceNow】特定の列の要素一覧を取得したい~基礎編~では、
欲しいデータが1つのテーブルで完結している場合で使えます。今回は欲しいデータが1つのテーブルで
完結していない場合
、列の要素一覧をどのように取得するかを紹介します。
 例としては、以下テーブルRequested Items[sc_req_item]の列Additional commentsの要素を
取得する場合です。Requested Item(RITM0010057)の列Additional commentsを見ると、
Requested Itemに紐づくAdditional commentsが全て(3つ)記載されています。また、Requested Item内の
Activitiesを見ると、Additional commentsの内容が確認可能です。
 前回の記事との違いは何でしょうか?

  • テーブルRequested Items[sc_req_item]

table.png

  • Activities

comments.JPG

1. テーブル連携の確認

 前回の記事の通りに、テーブルRequested Items[sc_req_item]の列Additional commentsの要素一覧を
取得しようとしても失敗してしまいます。なぜならば、列Additional commentsの内容は他のテーブルを
参照しているからです。ServiceNowは複数のテーブルが複雑に連携しているので、同じテーブルや
画面上で見えるからといって、1つのテーブルで全ての情報が得られるとは限らない
ということを
念頭に置く必要があります。
 今回では、以下のようにテーブルRequested Items[sc_req_item]の列Additional commentsが、
他のテーブルJournal Entries[sys_journal_field]と連携しています。

journal_2.JPG

2. コード紹介

 連携しているテーブルさえわかってしまえば、GlideRecordでテーブルの内容が取得できます。
今回はテーブルJournal Entries[sys_journal_field]から以下の条件で列Valueの内容を取得します。

  • Name: sc_req_item
  • Element: comments
  • Element ID: Requested Item(RITM0010057)のSys ID
var column_array = [];
var table_data = new GlideRecord('sys_journal_field');
table_data.orderBy('sys_created_on');
table_data.addQuery('name', '=', 'sc_req_item');
table_data.addQuery('element', '=', 'comments');
table_data.addQuery('element_id', '=', 'Requested Item(RITM0010057)のSys ID');
table_data.query();
while(table_data.next()) {
    column_array.push(table_data.getValue('value'));
}
gs.info(column_array);

3. ログの確認

 想定通り、Additional commentsの内容を取得できていることが確認されました。

log.JPG

参考記事

GlideRecord - ServiceNow Developers
GlideRecord(API Reference) - ServiceNow Developers

関連記事

【ServiceNow】特定の列の要素一覧を取得したい~基礎編~

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0