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.

Script Modification needed

Saib1
Tera Guru

Hi All,

 

I am passing 2 id - test@gmail.com,test1@gmail.com

It is calling the rest message and adding only test@gmail.com.

 

Yes for each userid , restmessage should get looped, As of now it is adding for one user id test@gmail.com

 

Workflow Editor
var user_id = current.variables.user_id.getDisplayValue();
var arrUser = user_id.split(',');
for (var i in arrUser) {
gs.info('arrUser' + arrUser[i]);
var body = {
var r = new sn_ws.RESTMessageV2('User Access Mangement', 'Dev Instance');

'user_id': arrUser[i]

'action_required': current.variables.action_required.getDisplayValue(),

};
}

 

Scripted rest API 

 

(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

 

var reqbody = request.body;
var reqdata = reqbody.data;
var objt = JSON.stringify(reqdata);
var objt1 = objt.toString();
var incomingData = JSON.parse(objt1);
var roles = incomingData.roles;
var action_required = incomingData.action_required;
var user_id = incomingData.user_id;
var group_s = incomingData.group_s;

var action_required = incomingData.action_required;

if (action_required == "Add a role to user") {
var role = new GlideRecord("sys_user_has_role");
// role.addEncodedQuery('user=' + userSysId + '^role=' + roleSysId);
role.addQuery("role", roleSysId);
role.addQuery("user", userSysId);
role.query();
if (role.next()) {
gs.log('Role Exsists', 'shohaib');
var respbody = {
"message": "Role already exists"
};
response.setContentType('application/json');
response.setStatus(400);
response.setBody(respbody);
} else {
role.initialize();
role.setDisplayValue('user', userSysId);
role.setDisplayValue('role', NameofRole);
role.state = "Active";
role.setWorkflow(false);
role.insert();
var respbody1 = {
"message": "Role added successfully"
};
response.setContentType('application/json');
response.setStatus(200);
response.setBody(respbody1);
}

 

}

 

1 ACCEPTED SOLUTION

Aniket Chavan
Tera Sage
Tera Sage

Hello @Saib1 

Please try the scripts below, where I've made a few changes. Unfortunately, I didn't have time to test them, so let me know how they perform for you.

Workflow Editor:

var user_id = current.variables.user_id.getDisplayValue();
var arrUser = user_id.split(',');

for (var i in arrUser) {
  gs.info('arrUser' + arrUser[i]);
  var body = {
    'user_id': arrUser[i],
    'action_required': current.variables.action_required.getDisplayValue(),
  };

  var r = new sn_ws.RESTMessageV2('User Access Management', 'Dev Instance');
  r.setStringParameter('user_id', body.user_id);
  r.setStringParameter('action_required', body.action_required);

  // Make the REST call
  var response = r.execute();
  var responseBody = response.getBody();
  gs.info('Response: ' + responseBody);
}

 

Scripted REST API:

(function process(/RESTAPIRequest/ request, /RESTAPIResponse/ response) {

  var reqbody = request.body;
  var reqdata = reqbody.data;
  var objt = JSON.stringify(reqdata);
  var objt1 = objt.toString();
  var incomingData = JSON.parse(objt1);
  var roles = incomingData.roles;
  var action_required = incomingData.action_required;
  var user_id = incomingData.user_id;
  var group_s = incomingData.group_s;

  if (action_required == "Add a role to user") {
    var role = new GlideRecord("sys_user_has_role");
    // Assuming roleSysId, userSysId, and NameofRole are properly defined
    role.addQuery("role", roleSysId);
    role.addQuery("user", userSysId);
    role.query();

    if (role.next()) {
      gs.log('Role Exists', 'shohaib');
      var respbody = {
        "message": "Role already exists"
      };
      response.setContentType('application/json');
      response.setStatus(400);
      response.setBody(respbody);
    } else {
      role.initialize();
      role.setDisplayValue('user', userSysId);
      role.setDisplayValue('role', NameofRole);
      role.state = "Active";
      role.setWorkflow(false);
      role.insert();

      var respbody1 = {
        "message": "Role added successfully"
      };
      response.setContentType('application/json');
      response.setStatus(200);
      response.setBody(respbody1);
    }
  }

})(request, response);

 

Let me know your views on this and Mark Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.

 

Regards,

Aniket

 

View solution in original post

5 REPLIES 5

Hi 

 

It did not get updated