We're reclaiming inactive PDIs to keep them available for active builders. Learn what's changing, who's affected, and how to protect your work. Read More

Javascript to pull list of all active users

timnardoni
Tera Contributor

Hello, all. This script is meant to produce a list of active users but skipped ~1,500. What am I doing wrong?

Thank you in advance!

-Tim

 

var users = new GlideRecord('sys_user');
users.addQuery('active', true); //Active users only
users.query();
    
while (users.next()) {
        users.next();
	gs.info(users.user_name);
    }

 

1 ACCEPTED SOLUTION

Robert H
Mega Sage

Hello @timnardoni ,

 

You're using the "next()" method twice per loop. That's why every second user is skipped.

Please remove the second one, so that it looks like this:

 

var users = new GlideRecord('sys_user');
users.addQuery('active', true); //Active users only
users.query();
    
while (users.next()) {
    gs.info(users.user_name);
}

 

Regards,

Robert 

View solution in original post

5 REPLIES 5

Nishant8
Tera Sage

Hello @timnardoni , can you please try following:

var users = new GlideRecord('sys_user');
users.addQuery('active', true); //Active users only
users.query();
   
while (users.hasNext()) {
    users.next();
    gs.info(users.user_name);
    }
 
Regards,
Nishant

Ankur Bawiskar
Tera Patron

@timnardoni 

did you print the row count?

Try this and skip the query business rule and see what count it gives

var users = new GlideRecord('sys_user');
users.addActiveQuery(); //Active users only
users.setWorkflow(false); // skip query business rule
users.query();
gs.info('row count' + users.getRowCount());
while (users.next()) {
	gs.info(users.user_name);
    }

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

Robert H
Mega Sage

Hello @timnardoni ,

 

You're using the "next()" method twice per loop. That's why every second user is skipped.

Please remove the second one, so that it looks like this:

 

var users = new GlideRecord('sys_user');
users.addQuery('active', true); //Active users only
users.query();
    
while (users.next()) {
    gs.info(users.user_name);
}

 

Regards,

Robert 

Perfect, thank you, @Robert H and @Nishant8

 

@Ankur Bawiskar, that row count trick is a good; I will use it again! 😁