HOW TO
Items such as files, web items, and applications can be added to Portal for ArcGIS for sharing through the My Content tab. For more information, refer to the following web help document, Portal for ArcGIS: Add items.
This article provides a sample script to list all available portal items for Portal for ArcGIS or ArcGIS Online for specified users in the organization. The script uses the PortalPy module and portal sharing API search. The script creates a .csv file that includes the information of items, for example, owner, title, id, type, and URL. The following instructions provided describe how to list all portal items of specified users in Portal for ArcGIS using the PortalPy module.
#!/usr/bin/python import portalpy, json, urllib, urllib2, sys, os, getpass, pprint log_dict = [] # Update this segment dir = r"C:\Users\xueh7833\Documents\ArcGIS\PythonStuff\PortalAdmin\portalpy" portalUrl = "https://jing7.maps.arcgis.com" portalAdminUser = "******" portalAdminPassword = "******" # Create csv file and write the header in csv log_path = os.path.join(dir, 'log.csv') logger = open(log_path,"w") logger.write("owener,id,title,type,url" + "\n") # For manual input #portalAdminUser = raw_input("Enter user name: ") #portalAdminPassword = getpass.getpass("Enter password: ") #portalAdminUser = arcpy.GetParameterAsText(0) #portalAdminPassword = arcpy.GetParameterAsText(1) # Connect to Portal portal = portalpy.Portal(portalUrl, portalAdminUser, portalAdminPassword) pprint.pprint(portal) token = portal.generate_token(portalAdminUser, portalAdminPassword) print token users = portal.search_users('') # Loop users for user in users : # Get user name and role userResp = portal.get_user(user['username']) #print userResp['role'] #print user['username'] + ": " + userResp['role'] # Construct url to search items by user searchURL = "{0}/sharing/search".format(portalUrl) print searchURL query = "owner: {0}".format(user['username']) params = urllib.urlencode({"q": query,"f": "pjson", "token": token}) request = urllib2.Request(searchURL, params) # Read information from item response = urllib2.urlopen(request) jsonResult = json.load(response)['results'] print jsonResult if jsonResult: for n in jsonResult: #print n['title'] + "," + n['id'] + "," + n['type'] + "," + n['owner'] # Write to csv based on search result json, here I returned owner, id, title, type, and url. There is more info you can write to csv as long as the key exists in result json. if n['url']: logger.write(n['owner'] + "," + n['id'] + "," + n['title'] + "," + n['type']+ "," + n['url'] + "\n") else: logger.write(n['owner'] + "," + n['id'] + "," + n['title'] + "," + n['type']+ "," + "\n") else: logger.write(user['username'] + ",,,," + "\n") logger.close()
Note: Update the code block under the comment, 'Update this segment' to specify the desired save folder location, portal URL, username, and password.The example shown below demonstrates how the final code snippet looks like.
dir = r"C:\\ArcGIS " portalUrl = https://jing7.maps.arcgis.com portalAdminUser = "TestingUsername" portalAdminPassword = "TestingPassword"Alternatively, if users intend to perform manual inputs for the portal username and password, comment or delete the predefined username and password, remove the hash symbol (#) in each line under the code segment below the comment, 'For manual input.' The example shown below demonstrates how the final code snippet looks like.
#portalAdminUser = "TestingUsername" #portalAdminPassword = "TestingPassword" # Create csv file and write the header in csv log_path = os.path.join(dir, 'log.csv') logger = open(log_path,"w") logger.write("owener,id,title,type,url" + "\n") # For manual input portalAdminUser = raw_input("Enter user name: ") portalAdminPassword = getpass.getpass("Enter password: ") portalAdminUser = arcpy.GetParameterAsText(0) portalAdminPassword = arcpy.GetParameterAsText(1)
Get help from ArcGIS experts
Download the Esri Support App