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