ServiceNow カタログクライアントスクリプトを使わない自動入力

ServiceNow
スポンサーリンク

以前作成したカタログアイテムや変数セットを使用しているため詳細は下記リンクから

ServiceNow カタログクライアントスクリプトの基本的な使い方

Utahから追加されたAuto-populate

いつの間にか追加されていて気になったので調べてみました。
Utah Service Catalog リリースノート

参照型の変数で選択した参照先の情報を取ってきて自動入力させるにはUtahより前はカタログクライアントスクリプトを使用しなければ出来ませんでした。

追加されたAuto-populate機能を使用することでカタログクライアントスクリプトをわざわざ作成する必要が無くなりました。

Auto-populateの設定

よく使われそうな場面であるユーザーを選択するとユーザーIDや名前の項目が自動入力されるようにしていきます。

冒頭のリンクで作成した変数セットを使用していきます。
変数セットの内容は下記画像のものとなります。

自動入力の設定

まずは関連リストのVariablesにあるUser IDを選択します。
Variableの画面に移ったらAuto-populateタブを選択して、Dependent QuestionUserを選択します。
Dot Work Pathに自動入力したい項目を選びます。ここではUser IDを選択します。

他のFirst NameLast Nameも上記と同様に設定していきます。

テスト

すべて設定完了したら実際にどうなるのか試してみましょう。Try It を押してUserで適当に選択してみます。

getReferenceGlideAjaxを使用したときと同じように自動で先ほど設定した項目に値が入っています。また、参照型の変数で値を消去すると他の項目も自動的に初期化されます。

仮に同じ動きをカタログクライアントスクリプトで実装をした場合、下記のスクリプトを書く必要があります。

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
       return;
    }

    g_form.getReference("user", getUserProfile)
    
}

function getUserProfile(user) {
    g_form.setValue("user_name", user.getValue("user_name"));
    g_form.setValue("first_name", user.getValue("first_name"));
    g_form.setValue("last_name", user.getValue("last_name"));
}

自動入力したい項目がもっと増えていくとその分スクリプトを書く行数が増えていきます。変数作成時に設定をするだけで、上記のようなスクリプトを書く必要が無くなると実装をより効率的に簡単に行うことが出来るためかなり便利だなと思いました。

タイトルとURLをコピーしました