※この記事はServiceNow初心者が学習用のために記載した記事です。内容について誤っている場合がございます。不足点などございましたらコメントいただけますと幸いです。
Reference Typeとは
「Reference Type」は、他のテーブルにあるデータを選べるようにするためのフィールド
使用例
- フォームで「担当者」を選んでもらいたい時、「ユーザー(sys_user)」テーブルから選べるようにする
- この「ユーザー選択」のフィールドが「Reference Type」である
- ユーザーを選択した際、選択したユーザーのレコード情報が返ってくる
- 例:「担当者」というフィールドにユーザーを選んでもらったとき、返ってくる情報は以下のようなもの
- sys_id(ユーザーの一意識別子)
- ユーザー名(nameフィールド)
- メールアドレス(emailフィールド)
- 部署(departmentフィールド)など、
- ※上記は、選択したユーザーのテーブルに格納されている他の情報
- 例:「担当者」というフィールドにユーザーを選んでもらったとき、返ってくる情報は以下のようなもの
便利な点
最新のデータを選べる: 例えば、部署やユーザーなど、最新の情報を選ぶことができ、手間が省ける
選択肢を管理できる: 誰が選べるか、何を選べるかをシステムで管理できるので、間違いが減る
具体例
Reference Typeの変数で、選択したユーザーのユーザー名(name
フィールド)を取得したい
- Referenceフィールドから選択されたユーザーの情報にアクセスするために、スクリプトを使用する
例:
フォームで「担当者」というフィールド(変数のQuestion(ラベル名))があり、そのフィールドを通じてユーザーを選んでもらったとする
スクリプト例:
var selectedUser = producer.department; // 'department'は、選択されたユーザーのsys_idが格納されているフィールド名
var userRecord = new GlideRecord('sys_user'); // sys_userテーブルに対するGlideRecordを作成
if (userRecord.get(selectedUser)) { // 選ばれたユーザーのsys_idを元にレコードを取得
var userName = userRecord.name; // 取得したレコードからユーザー名を取得
gs.info('選択されたユーザーの名前: ' + userName); // ログにユーザー名を表示
}
説明:
-
producer.department
は、「担当者」フィールドに選ばれたユーザーのsys_id
を取得する(この例ではdepartment
というフィールド名にしているが、実際のフィールド名に合わせる) -
new GlideRecord('sys_user')
で、選ばれたsys_id
をもとに、sys_user
テーブルのレコードを取得 -
userRecord.name
を使って、ユーザー名(name
フィールド)を取得する