我有一个excel文件,其中包含以下信息:
用户1 ------- | ---组1 ------ | ------ 1
用户2 ------- | ---组2 -------- | ------ 2
用户3 ------- | ---组3 -------- | ------ 3
所有列出的"用户"和"组"用户表和组表中存在,ex(User1,user2,user3在sys_user表中,group1,group2,group3在sys_user_group中) 我只想将用户添加到excel中相应的组提及。
任何人都可以通过任何方式建议如何在服务中自动执行此操作,因为excel文件包含更多的数据并且无法手动执行。
答案 0 :(得分:1)
您可以使用导入集并将记录添加到sys_user_grmember
表。
要在插入
上设置两个字段更新 @Joey提到了整个导入集中的转换集,请查看您的版本的详细信息。例如,伊斯坦布尔https://docs.servicenow.com/bundle/istanbul-servicenow-platform/page/script/server-scripting/task/t_CreateATransformMap.html
导入集基本上将其用于将电子表格映射到ServiceNow中的字段。
在您的情况下,由于您需要为用户和组获取sys_id
,因此它会涉及更多,而听起来您拥有用户名和组名。使用变换贴图的Script
部分应该适用于您的情况。
以下代码中的某些内容将是一个大致的想法。但是,我没有对此进行过任何测试,您需要在开发环境中进行彻底测试才能使其正常工作。
此处source.u_user_name
和source.u_group_name
是导入集中已加载数据的字段
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
// get the user
var usr = new GlideRecord('sys_user');
usr.get('user_name',source.u_user_name.toString());
// get the group
var grp = new GlideRecord('sys_group');
grp.get('name',source.u_group_name.toString());
// insert group membership
var grMember = new GlideRecord('sys_user_grmember');
grMember.initialize();
grMember.user = usr.sys_id;
grMember.group = grp.sys_id;
grMember.insert();
})(source, map, log, target);