AnsweredAssumed Answered

Export Map Series using Python

Question asked by paul.sweeneyTLI on Mar 20, 2020
Latest reply on Mar 20, 2020 by Dan_Patterson

i have developed a model to download a layer from arcgis online every week and overwrite the GDB with the previous weeks information. I was then manually feeding this into a project and exporting a Map series for a weekly report. i decided to also try and automate this process so i could have reports generated automatically every week. i am a beginner at python and am self thought so please bear with me. 

 

my script is as follows which i developed in a notebook 

 

#!/usr/bin/env python
# coding: utf-8

# In[98]:


import arcpy
import os
import sys
aprx = arcpy.mp.ArcGISProject("CURRENT")
default = aprx.defaultGeodatabase
default


# In[116]:


import os
directory = 'C:\\Usersxxxxxxxxxxxxxx'

for filename in os.listdir(directory):
    if filename.endswith(".gdb"):
        print(directory+filename)
        newGDB = directory+filename
        newGDB
       
       


# In[117]:


newGDB


# In[101]:


aprx = arcpy.mp.ArcGISProject(r"C:\Users\xxxxxxxxxxx.aprx")
default = aprx.defaultGeodatabase
default


# In[60]:


import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Users\xxxxxxx.aprx")
m = aprx.listMaps("Map")[0]
lyr = m.listLayers("Assignments")[0]

lyr.connectionProperties


# In[102]:


newCP={'dataset': 'Assignments',
'workspace_factory': 'File Geodatabase',
'connection_info': {'database': newGDB}}
newCP


# In[103]:


lyr.updateConnectionProperties(lyr.connectionProperties, newCP)


# In[104]:


lyr.connectionProperties


# In[105]:


tableAtt=m.listTables("Assignments__ATTACH")[0]
tableAtt.connectionProperties


# In[106]:


tableAtt.updateConnectionProperties(tableAtt.connectionProperties, newCP)


# In[107]:


tableAtt.connectionProperties


# In[108]:


tableGDBService=m.listTables("GDB_ServiceItems")[0]
tableGDBService.connectionProperties


# In[109]:


tableGDBService.updateConnectionProperties(tableGDBService.connectionProperties, newCP)


# In[110]:


tableGDBService.connectionProperties


# In[111]:


aprx.save()


# In[112]:


l = aprx.listLayouts()[0]

l


# In[113]:


import os
import sys
import datetime
from datetime import datetime
relpath = os.path.dirname(sys.argv[0])
printpath = r"T:\xxxxxxxxxxxxx"


str=current_time = datetime.today().strftime('%d-%m-%Y')

relpath











# In[114]:


aprx = arcpy.mp.ArcGISProject(r"xxxxxxxxxxx.aprx")
l = aprx.listLayouts()[0]

if not l.mapSeries is None:
    ms = l.mapSeries
    if ms.enabled:
        ms = l.mapSeries
        pagecount = ms.pageCount
        indexLyr = ms.indexLayer
       
       
pagecount


# In[115]:


ms.exportToPDF(printpath+str,embed_fonts = True,resolution=400,georef_info=False,image_quality='FASTER',page_range_type = 'ALL',jpeg_compression_quality=25,output_as_image=False,layers_attributes='NONE',image_compression='ADAPTIVE')


# In[ ]:







 

 

it had work when i run it through the notebook but when i run it in a model in order to schedule it i am getting the following error. 

 

Traceback (most recent call last):
File "C:\Users\xxxxxxxxxxxxxxxxx.tbx#ReplaceDSandPDF_ExcavationReports.py", line 50, in <module>
IndexError: list index out of range
Failed to execute (Replace DS and PDF).

 

 

 

Any tips on where i am going wrong or even how to improve on my process are greatly appreciated. 

Outcomes