Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

API response

Ajvada
Tera Contributor

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

VarunS
Kilo Sage

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);