I am receiving the following error when running a Python script to update a map for one of our Operations Dashboard:
C:\Users\kierc\projects\XXXXX XXXXXXX Extension Survey\Batch Files for Script Scheduling>"C:\ArcGIS_Pro\Conda\Cloned_Envs\arcgispro-py3-subtel\python.exe" "C:\Users\kierc\projects\api\UpdateXXXXXMap.py"
Creating SD file
Traceback (most recent call last):
File "C:\Users\kierc\projects\api\UpdateXXXXXMap.py", line 33, in <module>
arcpy.mp.CreateWebLayerSDDraft(mp, sddraft, sd_fs_name, 'MY_HOSTED_SERVICES', 'FEATURE_ACCESS', True, True)
File "C:\Program Files\ArcGIS\Pro\Resources\ArcPy\arcpy\mp.py", line 105, in CreateWebLayerSDDraft
return _convertArcObjectToPythonObject(arcgisscripting._mapping.CreateWebLayerSDDraft(*_gp_fixargs([map_or_layers, out_sddraft, service_name, server_type, service_type, folder_name, overwrite_existing_service, copy_data_to_server, enable_editing, allow_exporting, enable_sync, summary, tags, description, credits, use_limitations], True)))
RuntimeError
I have X'd out the actual name of the files as there is some potentially sensitive information associated with the names, but the character counts and spacing are preserved.
Additionally, this is only an issue if I am logged out in ArcGIS Pro. However, logging in to ArcGIS Pro is not a full solution as I will need to be updating maps soon for multiple organizations. The following is the Python script I am using:
import arcpy
import os, sys
from arcgis.gis import GIS
prjPath = r'C:\Users\kierc\Documents\ArcGIS\Projects\XXXXXXXXXXXExt\XXXXXXXXXXXExt.aprx'
sd_fs_name = "XXXXX_XXXXXX_Extention_Inshore_Survey_WFL1"
portal = "http://www.arcgis.com"
user = "XXXXXXXXXXX"
password = "XXXXXXXXXXXXX"
shrOrg = False
shrEveryone = False
shrGroups = ""
relPath = r'C:\Users\kierc\projects\api\arcgistempcurrent'
sddraft = os.path.join(relPath, "CurrentUpdate.sddraft")
sd = os.path.join(relPath, "CurrentUpdate.sd")
print("Creating SD file")
arcpy.env.overwriteOutput = True
prj = arcpy.mp.ArcGISProject(prjPath)
mp = prj.listMaps()[0]
arcpy.mp.CreateWebLayerSDDraft(mp, sddraft, sd_fs_name, 'MY_HOSTED_SERVICES', 'FEATURE_ACCESS', True, True)
arcpy.StageService_server(sddraft, sd)
print("Connecting to {}".format(portal))
gis = GIS(portal, user, password)
print("Search for original SD on portal…")
sdItem = gis.content.search("{} AND owner:{}".format(sd_fs_name, user), item_type="Service Definition")[0]
print("Found SD: {}, ID: {} n Uploading and overwriting…".format(sdItem.title, sdItem.id))
sdItem.update(data=sd)
print("Overwriting existing feature service…")
fs = sdItem.publish(overwrite=True)
if shrOrg or shrEveryone or shrGroups:
print("Setting sharing options…")
fs.share(org=shrOrg, everyone=shrEveryone, groups=shrGroups)
print("Finished updating: {} – ID: {}".format(fs.title, fs.id))
Once again, specific filenames have been X'd out with number of characters and any spacing preserved. This script successfully updates the map as intended when logged in to ArcGIS Pro.