#概要
ServiceNowはログインしているユーザ情報を取得するためのオブジェクトを2つ用意しています。一つはクライアントスクリプトで利用できるg_userオブジェクトです。もう一つはサーバスクリプトで利用できるオブジェクトです。
注意が必要なのはフォームフィールドのデフォルト値はサーバス側で実行されるのでデフォルト値にはサーバスクリプトを記述することです。
#ServiceNowメソッド及びプロパティ
##クライアントスクリプト用オブジェクト(g_user)
g_userプロパティ及ぶメソッド | 戻り値 | 利用例 |
---|---|---|
g_user.userName | ログインユーザ名 | |
g_user.firstName | 苗字 | |
g_user.lastName | 姓 | |
g_user.userID | ログインユーザのsys_id | |
g_user.hasRole(<ロール名>) | ログインユーザに指定されたロールが付与されている場合はtrue(継承されたロールも含む)。それ以外はfalse。ユーザがadminロールをもつ場合は何時もtrueが返される | g_user.userID('client_script_admin'); |
g_user.hasRoleExactly(<ロール名>) | ログインユーザに指定したロールが不要されている場合はtrue(継承したロールは含めない)。その以外の場合はfalse。ユーザがadminロールをもつ場合は何時もtrueが返される | g_user.userID('client_script_admin'); |
g_user.hasRoles(<コンマ区切りのロール名>) | ログインユーザが指定されたロールの一つが付与されている場合はtrue。それ以外の場合はfalse | g_user.hasRoles('itil','admin') |
##サーバスクリプト用オブジェクト
関数名 | 戻り値 | 利用例 |
---|---|---|
gs.getUser() | ログインユーザのオブジェクトへのポインタを返す | var userObject = gs.getUser(); |
gs.getUserByID(<ユーザID>) | 指定されたユーザオブジェクトのポインタを返す | var userObject = gs.getUser().getUserByID('employee'); |
gs.getUserDisplayName() | ログインユーザの表示名を返す。例:'ozawa hitoshi' | var userDisplay = gs.getUserDisplayName(); |
gs.getUserID() | ログインユーザのsys_idを返す | var userID = gs.getUserID(); |
gs.getUserName() | ログインユーザの名前を返す。例:'ozawa' | var user_name = gs.getUserName(); |
gs.hasRole(<ロール名>) | グインユーザに指定されたロールが付与されている場合はtrue(継承されたロールも含む)。それ以外はfalse。ユーザがadminロールをもつ場合は何時もtrueが返される | if (gs.hasRole('itil')) { //処理... } |
gs.hasRole(<コンマ区切りのロール名>) | ログインユーザが指定されたロールの一つが付与されている場合はtrue。それ以外の場合はfalse | if (gs.hasRole('itil,admin')){ //ユーザがロール'itil'又は'admin'をもつ... } |
getCompanyID() | ログインユーザの会社のsys_idを返す | var companyID = gs.getUser().getCompanyID(); |
getCompanyRecord() | ログインユーザの会社のGlideRecordを返す | var company = |
getDepartmentID() | ログインユーザが所属している部のsys_idを返す | var deptID = gs.getUser().getDepartmentID(); |
getDomainID() | ログインユーザがいるドメインのsys_idを返す(ドメインが有効の場合のみ) | var domainID = gs.getUser().getDomainID(); |
getDomainDisplayValue() | ログインユーザがいるドメインの名前を返す(ドメインが有効の場合のみ) | var domainName = gs.getUser().getDomainDisplayValue(); |
getEmail() | ログインユーザのメールアドレスを返す | var email = gs.getUser().getEmail(); |
getFirstName() | ログインユーザの苗字をkぁエス | var firstName = gs.getUser().getFirstName(); |
getLanguage() | ログインユーザが選択されている言語を返す | var language = gs.getUser().getLanguage(); |
getLastName() | ログインユーザの姓を返す | var lastName = gs.getUser().getLastName(); |
getLocation() | ログインユーザの現在位置を返す | var location = gs.getUser().getLocation(); |
getManagerID() | ログインユーザのマネージャのsys_idを返す | var managerID = gs.getUser().getManagerID(); |
getMyGroups() | ログインユーザが所属しているすべてのグループを返す | var groups = gs.getUser().getMyGroups(); |
hasRoles() | ユーザに1つでもロールが付与されている場合はtrue。それ以外はfalse(ESSユーザの場合) | if (!gs.getUser().hasRoles()) { //ESSユーザの処理... } |
isMemberOf(<グループのsys_id又は名前>) | ユーザがグループに所属している場合はtrueを返す。それ以外はfalse。 | if(gs.getUser().isMemberOf(current.assignment_group)){ //処理... } var isMember = gs.getUser().isMemberOf('Hardware'); //ログインユーザ以外... var user = 'admin'; var group = "Hardware"; if (gs.getUser().getUserByID(user).isMemberOf(group)){ gs.log( gr.user_name + " is a member of " + group); } else{ gs.log( gr.user_name + " is NOT a member of " + group); } |
#例
##ユーザの日付形式を取得する
gs.getSession().getUser().getDateFormat()
例:
gs.info(gs.getSession().getUser().getDateFormat());
結果:
yyyy-MM-dd
##デフォルト値での設定
デフォルトでフィールドにユーザ名を設定する
javascript: gs.getUserDisplayName();
##スクリプトインクルード
「ユーザ名 + [社員番号]」を返す
var GetUserInfo = Class.create();
GetUserInfo.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserNameAndEmpNo: function() {
var user_id = gs.getUserID();
var grUser = new GlideRecord('sys_user'); //SystemNowのユーザテーブル(sys_id)を参照する
if (grUser.get(user_id)) { //指定したユーザが存在するか確認
return gs.getUserDisplayName() + ' [' + grUser.employee_number + ']'; //存在する場合はメールアドレスを返す
}
return ''; //存在しない場合は空文字を返す
},
type: 'GetUserInfo'
});
###クライアントスクリプト
ログインユーザのロールにより表示するフィールドを制御する。
function onLoad() {
if (g_user.hasRole('admin')) {
g_form.setDisplay('user_info', false);
g_form.setMandatory('user_info', true);
} else {
g_form.setMandatory('user_info', false);
g_form.setDisplay('user_info', false);
g_form.setMandatory('user', false);
}
}