regalada_EMWD

Python Emailing Upon Error

Discussion created by regalada_EMWD on Sep 18, 2017
Latest reply on Apr 20, 2018 by mattwallin
# ---------------------------------------------------------------------------
#  Script:         Creating an Service Definition File and Overwritting Existing Feature Service on ArcGIS Online
#  Description:    This script does the following:
#                  (1) Sets up the variables
#                  (2) Creates an SD File
#                  (3) Overwrites Existing Feature Service
#
#  Date:           9/12/2017
#  
# ---------------------------------------------------------------------------
import arcpy
import os, sys, string, time
from arcgis.gis import GIS

# Set the date.
Date = time.strftime("%m-%d-%Y", time.localtime())

# Set the time.
Time = time.strftime("%I:%M:%S %p", time.localtime())

print ("Process started at " + str(Date) + " " + str(Time) + "." + "\n")


### Start setting variables
# Set the path to the project
prjPath = r"J:\ENGSYS\GIS_Testing\ArcGISOnline_PublishingSrvc\TestScript.aprx"

# Update the following variables to match:
#  Feature service/SD name in arcgis.com, user/password of the owner account
sd_fs_name = "TestDocumentPortal_WFL1"
portal = "https://XXXX.maps.arcgis.com" # Can also reference a local portal
user = "XXXXX"
password = "XXXX"

# 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, "WebUpdate.sddraft")
sd = os.path.join(relPath, "WebUpdate.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))


print ("Process completed at " + str(Date) + " " + str(Time) + ".")

My script above runs successfully.

 

I am trying to add to it by emailing a specified user if it fails. I have read multiple samples, but have not gotten one to work. Anyone have something a novice python user could use?

Outcomes