Hello,
I hope this is posted in the right place. I am troubleshooting a script that I have been running for almost a year now which updates a hosted feature service in ArcGIS Online. We recently upgraded our ArcMap and Server to 10.8.2 and ArcGIS Pro 3.0.1. I am wondering if this update has something to do with it? Anyhow, I have posted the python code below and attached a pic of the TypeError I receive when I try to run the script from Python 3 IDLE. Please help.
import arcpy
import os, sys
from arcgis.gis import GIS
### Start setting variables
# Set the path to the project
prjPath = "I:\\users\\abishop\\PY\\FeatureServiceUpdates\\AgUseParcels\\AgUseParcels.aprx"
# Feature service/SD name in arcgis.com, user/password of the owner account
sd_fs_name = "Agricultural_Use_Parcels"
portal = "https://mcpafl.maps.arcgis.com/" # Can also reference a local portal
user = "***************"
password = "*************"
# Set sharing options
shrOrg = True
shrEveryone = False
shrGroups = ""
### End setting variables
# Local paths to create temporary content
relPath = sys.path[0]
sddraft = os.path.join(relPath, "AgUseParcels.sddraft")
sd = os.path.join(relPath, "AgUseParcels.sd")
# Create a new SDDraft and stage to 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)
# Find the SD, update it, publish /w overwrite and set sharing and metadata
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))
#provide input to stop script - uncomment input below if you need to see the script final output in the command window
input('Press ENTER to exit')
Solved! Go to Solution.
Dan and other's who may see this thread. A good old fashion truncate table and append worked!
It mean that either the path or the folder id is returning None.
Where this occurs depends on whether any of your print statements are even reached.
Hello Dan,
Thank you for replying. Yes, it says line 49 in the actual script which is calling out the sdItem.update(data=sd) module. Any chance this changed with our upgrade?
That gets a bit difficult since you are using the arcgis module which is now at 2.0.1 and you would have to examine their help topics
API Reference for the ArcGIS API for Python | ArcGIS API for Python
maybe
arcgis.gis module | ArcGIS API for Python with a lot of scrolling under "item", but I don't do portal stuff, so I can't help more.
I'm still trying to determine why the code works for one feature service but not another?
That is beyond my domain... things get "cloudy" for me when you talk feature service 😉 Tech Support perhaps.
Ok thank you
Dan and other's who may see this thread. A good old fashion truncate table and append worked!
Did you truncate/append the source data you were trying to push to AGO? Meaning there was something wrong with the source data...
Hello Brian,
I don't understand your question. I truncated and appended the data in AGO with the source data from my PC.