Select to view content in your preferred language

Export List of Portal Users

1619
2
01-18-2023 05:51 AM
GaryBarden
Regular Contributor

Hi,  I'm using the code below, but I can't figure out how I can limit my output to just one role (Role = Viewer). 

 

Thanks 

 

import csv
from arcgis.gis import GIS

gis = GIS("<Portal URL>", "<UserName>", "<Password>", verify_cert=False)

outputFile = r"<Output File Location>"

users = gis.users.search('*', max_users=15000)

with open(outputFile, 'w', newline='') as ResultFile:
wr = csv.writer(ResultFile)
header = 'Username', 'Role', 'Email'
wr.writerow(header)
for user in users:
UserRow = user.username, user.role, user.email
wr.writerow(UserRow)

0 Kudos
2 Replies
ChristopherPawlyszyn
Esri Contributor

This may work:

import csv
from arcgis.gis import GIS

gis = GIS(portalUrl,username,password)

outputFile = r"<output_file_path>"

users = gis.users.search('*', max_users=1500)

with open(outputFile,'w',newline='') as ResultFile:
    wr=csv.writer(ResultFile)
    header = 'Username,LicenseType,Email'
    wr.writerow(header)
    for user in users:
        if not 'esri_' in user.username and user.userLicenseTypeId == 'viewerUT': #Filter esri_ built-in users and only includes viewer license types
            wr.writerow(user.username,user.userLicenseTypeId,user.email)

 

The user object's role doesn't include the license level of the user, rather the capabilities within the organization. Reference


-- Chris Pawlyszyn
berniejconnors
Frequent Contributor

Yes the "userLicenseTypeId" is the property you need to filter only the "viewer type"

for user in users:
    print(user.username,",",user.access,",",user.role,",",user.userLicenseTypeId)

Sample output:

ryan , org , org_user , viewerUT
0 Kudos