API response
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-21-2024 09:55 AM
hello SN community , i was looking for some help with a sn script. I created a onbefore script for a transform map that updates a table via api(postman). I am trying to edit the response body that a user will receive when they submit a incident via api. i want there to be a error message in the response body if a user submits a invalid assignment group.
below is the script i have currently.
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
// Get the assignedTo and assignmentGroup sys_ids
var assignedTo = getUserSysId(source.u_assigned_to);
var assignmentGr = getGroupSysId(source.u_assignment_group);
var choresTeam = gs.getProperty('chores.team'); //Sys_Id of chores team
// Check if the assignmentGroup is not Chores Team
if (assignmentGr !== choresTeam) {
log.warn("Assignment Group must be Chores Team");
ignore = true;
return;
}
// Check if assignedTo is empty or user is not in Chores Team
if (assignedTo == "" || !isUserInChoresTeam(assignedTo)) {
log.warn(" Assigned to field is empty or User is not on Chores Team , record not created");
ignore = true;
return;
}
// Function to check if a user is a member of the Chores Team
function isUserInChoresTeam(userId) {
var isMember = false;
var userGrMember = new GlideRecord('sys_user_grmember');
userGrMember.addQuery('user', userId);
// Query the user group memberships
userGrMember.query();
while (userGrMember.next()) {
var group = userGrMember.group;
if (group && group.name == 'Chores Team') {
isMember = true;
break;
}
}
return isMember;
}
// Function to get the sys_id of a user group
function getGroupSysId(userId) {
var validGroup = new GlideRecord('sys_user_group');
validGroup.addQuery('name=' + userId);
validGroup.query();
if (validGroup.next()) {
return validGroup.sys_id.toString();
}
}
// Function to get the sys_id of a user
function getUserSysId(userId) {
var validUsers = new GlideRecord('sys_user');
validUsers.addEncodedQuery('user_name=' + userId + '^ORfirst_name=' + userId + '^ORlast_name=' + userId + '^ORuser=' + userId);
validUsers.query();
if (validUsers.next()) {
return validUsers.sys_id.toString();
}
}
})(source, map, log, target);
1 REPLY 1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-21-2024 11:29 AM
Try the below script
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
// Get the assignedTo and assignmentGroup sys_ids
var assignedTo = getUserSysId(source.u_assigned_to);
var assignmentGr = getGroupSysId(source.u_assignment_group);
var choresTeam = gs.getProperty('chores.team'); // Sys_Id of chores team
// Initialize an error message
var errorMessage = "";
// Check if the assignmentGroup is not Chores Team
if (assignmentGr !== choresTeam) {
errorMessage = "Assignment Group must be Chores Team";
log.warn(errorMessage);
ignore = true;
gs.addErrorMessage(errorMessage);
return;
}
// Check if assignedTo is empty or user is not in Chores Team
if (assignedTo == "" || !isUserInChoresTeam(assignedTo)) {
errorMessage = "Assigned to field is empty or User is not on Chores Team, record not created";
log.warn(errorMessage);
ignore = true;
gs.addErrorMessage(errorMessage);
return;
}
// Function to check if a user is a member of the Chores Team
function isUserInChoresTeam(userId) {
var isMember = false;
var userGrMember = new GlideRecord('sys_user_grmember');
userGrMember.addQuery('user', userId);
// Query the user group memberships
userGrMember.query();
while (userGrMember.next()) {
var group = userGrMember.group;
if (group && group.name == 'Chores Team') {
isMember = true;
break;
}
}
return isMember;
}
// Function to get the sys_id of a user group
function getGroupSysId(groupId) {
var validGroup = new GlideRecord('sys_user_group');
validGroup.addQuery('name', groupId);
validGroup.query();
if (validGroup.next()) {
return validGroup.sys_id.toString();
}
return "";
}
// Function to get the sys_id of a user
function getUserSysId(userId) {
var validUsers = new GlideRecord('sys_user');
validUsers.addEncodedQuery('user_name=' + userId + '^ORfirst_name=' + userId + '^ORlast_name=' + userId + '^ORuser=' + userId);
validUsers.query();
if (validUsers.next()) {
return validUsers.sys_id.toString();
}
return "";
}
})(source, map, log, target);