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

Amit Verma
Kilo Patron
Kilo Patron

Hi @Saib1 

 

Can you try below logic :

 

 

var user_id = current.variables.user_id.getDisplayValue();
var arrUser = user_id.split(',');
for (var i=0; i < arrUser.length; 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(),
};
}

 

 

Thanks & Regards

Amit Verma


Please mark this response as correct and helpful if it assisted you with your question.

@Amit Verma 

 

Did not worked out , still it is adding for one user.

 

Do we need to add any change sin Scripted rest api?

 

var user_id = current.variables.user_id.getDisplayValue();
var arrUser = user_id.split(',');
 
for (var i=0; i < arrUser.length; i++) {
gs.info('forloop' + i);
gs.info('forlooplenght' + arrUser.length);
    var r = new sn_ws.RESTMessageV2('User Access Mangement', 'Kano Dev Instance');
    gs.info('arrUser' + arrUser[i]);
    var body = {
 
        'roles': current.variables.roles.getDisplayValue(),
        'user_id': arrUser[i],
        'group_s': current.variables.group_s.getDisplayValue().toString(),
        'action_required': current.variables.action_required.getDisplayValue()
      
    };
}
 
 
 
var obj = JSON.stringify(body);
r.setRequestBody(obj);
var response = r.execute();
gs.info('response :' + response, 'shohaib');
gs.info('Status :' + response.getStatusCode());
gs.info('Error Message :' + response.getErrorMessage());
 
if (response.getStatusCode() == 200 || response.getStatusCode() == 201) {
 
    current.comment = "Request has been automatically added to btkanodev instance";
    current.work_notes = "Request has been automatically added to btkanodev instance";
 
} else if (response.getStatusCode() !== 200) {
 
    if (current.variables.action_required == "Add_Role_User") {
        current.comment = "Requested User Role already Exsist : " + current.variables.roles.getDisplayValue();
        current.work_notes = "Requested User Role already Exsist : " + current.variables.roles.getDisplayValue();
    }
}

 

 

 

Hi @Saib1 

 

Can you please let me know the type of the variable user_id which you are trying to access in var user_id = current.variables.user_id.getDisplayValue(); ?

 

Also, can you try removing .getDisplayValue() method once and declare the variable as var user_id = current.variables.user_id ?

 

Thanks & Regards

Amit Verma


Please mark this response as correct and helpful if it assisted you with your question.

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