ServiceNow MRVSにカタログクライアントスクリプトで値を入力する方法

ServiceNow
スポンサーリンク

まずは、適当にカタログアイテムとMRVSを用意していきます。
MRVSについては前回作成したものを使用するため詳しくはこちらを参考にしてください。

今回はユーザーグループを参照する変数を用意して、ユーザーグループに設定されているユーザーの情報をMRVSに自動で入力されるようにしていきたいと思います。

変数の用意

ユーザーグループを参照する変数を下記の内容で用意します。

TypeReference
Catalog ItemTest Mrvs Client Script
Order10
QuestionUser Group
Nameuser_group
ReferenceGroup[sys_user_group]

画面上に参照型の変数とMRVSの2つが見えていれば大丈夫です。

カタログクライアントスクリプトの作成

GlideAjax を使用して User Group を選択した後に自動で Users に値を入力するカタログクライアントスクリプトを下記の通りに作成します。

NameSet Users Mrvs
UI TypeAll
TypeonChange
Variable Nameuser_group

Scirpt の部分には下記を記入します。

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        g_form.setValue("users", "");// グループの値を初期化したときにUsersも初期化
        return;
    }

    var group = g_form.getValue("user_group");//User Groupのsys_idを取得
    
    var ga = new GlideAjax("GetUserGroupMemeber");// スクリプトインクルードの呼び出し
    ga.addParam("sysparm_name", "getMember");// スクリプトインクルード内の使用するメソッドを指定
    ga.addParam("sysparm_user_group", group);// スクリプトインクルードに渡すパラメーター
    ga.getXMLAnswer(setUsers);

    function setUsers(response) {
        g_form.setValue("users", response);// 返り値をMRVSに設定
    }
}

GlideAjax API

スクリプトインクルードの作成

カタログクライアントスクリプトで作成したスクリプトの8行目に記載しているところで呼び出すスクリプトインクルードを作成します。

ここでは、カタログ画面で選択したグループからグループメンバーの情報を取得する処理を記載します。

NameGetUserGroupMemeber
Client callableTrue
Accessible fromAll application scopes

Scirpt の部分には下記を記入します。

var GetUserGroupMemeber = Class.create();
GetUserGroupMemeber.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	getMember: function() {
        var result = [];
		var group = this.getParameter("sysparm_user_group");// カタログクライアントスクリプトからパラーメーターの受取
		var grMember = new GlideRecord("sys_user_grmember");// Group Member
        grMember.addQuery("group", group);// カタログで指定したグループのGroup Memberを検索 
        grMember.query();
        while(grMember.next()) {
            var memberInfo = {};
            memberInfo.user_name = grMember.user.user_name.toString();// User ID
            memberInfo.first_name = grMember.user.first_name.toString();// First Name
            memberInfo.last_name = grMember.user.last_name.toString();// Last Name
            memberInfo.email = grMember.user.email.toString();// Email
            result.push(memberInfo);
        }

        return JSON.stringify(result);
	},
    type: 'GetUserGroupMemeber'
});

MRVSはJSON文字列で値が設定されているため、返り値として渡す際に文字列として返す必要があります。

テスト

サービスポータルの画面で実際にグループを選択してみてMRVSに自動入力されるか確認します。

次にグループを削除したときにMRVSが初期化されるか確認します。

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