ServiceNow の Service Portal を使っていると、

「申請画面を開いた時点で、申請者にログインユーザーを自動で入れたい」

という要件は非常によくあります。

本記事では、 ポータルの申請画面を開いた際に、ログインユーザーを自動的に『申請者欄』へセットする方法を、 初心者の方でも実装できるように分かりやすく解説します。


◼️実現したいこと

  • Service Portal の申請画面を開く
  • ログインしているユーザー情報を取得
  • 申請者欄(User参照)に自動入力されている

毎回ユーザーに選ばせる必要がなくなり、 入力ミス防止・UX向上につながります。


◼️実装の考え方

今回の実装ポイントは以下の3点です。

  • 申請者欄は User(sys_user)参照変数を使う
  • 画面表示時に処理を行うため Catalog Client Script(onLoad) を使用
  • ログインユーザーは g_user.userID で取得

◼️実装手順

●手順①:申請者用の変数を作成する

まずは、申請者を表示・保持するための変数を作成します。

設定例

項目設定値
TypeReference
Question申請者
Nameapplicant
Reference tableUser [sys_user]
Read only任意(自動入力のみならON推奨)

Name(内部名) は後続のスクリプトで使用するため、必ず控えておきましょう。


手順②:Catalog Client Script を作成する

次に、申請画面表示時に自動入力を行う Client Script を作成します。

基本設定

  • Type:onLoad
  • UI Type:Service Portal(または All)
  • Active:true

●手順③:スクリプトを実装する

以下が実装例です。

スクリプト解説

  • g_user.userID
    • 現在ログインしているユーザーの sys_id
  • g_form.setValue()
    • カタログ変数に値をセットするAPI
  • applicant
    • 作成した申請者変数の Name

◼️動作確認

Service Portal から対象の申請画面を開くと、 以下のように申請者欄へ自動的にログインユーザーが表示されます。

  • 表示名:ユーザー名
  • 実際に保持されている値:sys_id

◼️よくあるつまずきポイント

① 申請者が表示されない

  • 変数の Type が Reference になっているか
  • Reference table が sys_user になっているか
  • スクリプト内の変数名が一致しているか

② 値は入っているが編集させたくない

  • 変数設定で Read only = true を指定

◼️応用:requested_for と連動させたい場合

今回の方法は、 あくまで「画面上の申請者変数」への自動セットです。

RITM の requested_for とも連動させたい場合は、

  • Flow Designer
  • Business Rule

などでバックエンド側の同期処理を追加すると、 より実務向けの実装になります。


まとめ

  • Service Portal では Catalog Client Script(onLoad) が最適
  • ログインユーザーは g_user.userID で簡単に取得可能
  • Reference 変数に sys_id をセットするのがポイント

非常によく使う実装なので、 他のカタログアイテムにもそのまま流用できます。

ServiceNow の小ネタ・実装Tipsとして、ぜひ活用してみてください。

投稿者プロフィール

naruya

Tags:

Comments are closed

カテゴリー
PAGE TOP