まずは、適当にカタログアイテムとMRVSを用意していきます。
MRVSについては前回作成したものを使用するため詳しくはこちらを参考にしてください。
今回はユーザーグループを参照する変数を用意して、ユーザーグループに設定されているユーザーの情報をMRVSに自動で入力されるようにしていきたいと思います。
変数の用意
ユーザーグループを参照する変数を下記の内容で用意します。
Type | Reference |
Catalog Item | Test Mrvs Client Script |
Order | 10 |
Question | User Group |
Name | user_group |
Reference | Group[sys_user_group] |
画面上に参照型の変数とMRVSの2つが見えていれば大丈夫です。
カタログクライアントスクリプトの作成
GlideAjax を使用して User Group を選択した後に自動で Users に値を入力するカタログクライアントスクリプトを下記の通りに作成します。
Name | Set Users Mrvs |
UI Type | All |
Type | onChange |
Variable Name | user_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に設定
}
}
スクリプトインクルードの作成
カタログクライアントスクリプトで作成したスクリプトの8行目に記載しているところで呼び出すスクリプトインクルードを作成します。
ここでは、カタログ画面で選択したグループからグループメンバーの情報を取得する処理を記載します。
Name | GetUserGroupMemeber |
Client callable | True |
Accessible from | All 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が初期化されるか確認します。