I've been trying to customize Esri's free code sample Multiple Element Layout Manager to fit my own mapping. It rearranges page layout elements such as inset maps, north arrows and text on different map series pages all using a single map document.
Below is the pageLayout Table with the data driven index page (Toronto 1, 2), and the data frame properties (elementPositionX, elementPositionY, elementWidth, elementHeight, XMin, YMin, XMax, YMax, rotation, scale). I always get the error message: "C:\Mytemplates\Resources\MultipleTemplates\MultipleElementLayoutManager_10.0_v1\ZoomToPage.py", line 46, in <module> arrangeDFs(pageLayoutRow, df.name) File "C:\Mytemplates\Resources\MultipleTemplates\MultipleElementLayoutManager_10.0_v1\ZoomToPage.py", line 24, in arrangeDFs df.scale = rowInfo[9] IndexError: list index out of range.
If line 24 is deleted, then it works, but I want the data frames to follow the scales in the table. The first code lays out all the map elements according to the table. The second code is used to populate the pageLayout table

<SPAN class="keyword token">import</SPAN> arcpy<SPAN class="punctuation token">,</SPAN> json<SPAN class="punctuation token">,</SPAN> os<SPAN class="punctuation token">,</SPAN> sys<SPAN class="punctuation token">,</SPAN> time
<SPAN class="comment token">#Set up relative paths</SPAN>
relPath <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>dirname<SPAN class="punctuation token">(</SPAN>sys<SPAN class="punctuation token">.</SPAN>argv<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Get input page value from GP dialog</SPAN>
pageName <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetParameterAsText<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Function that arranges data frames based on the field info within the PageLayoutElements table</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">arrangeDFs</SPAN><SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">,</SPAN> dfName<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
rowInfo <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>loads<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">.</SPAN>getValue<SPAN class="punctuation token">(</SPAN>dfName<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
df <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListDataFrames<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> dfName<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
df<SPAN class="punctuation token">.</SPAN>elementPositionX <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
df<SPAN class="punctuation token">.</SPAN>elementPositionY <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN>
df<SPAN class="punctuation token">.</SPAN>elementWidth <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN>
df<SPAN class="punctuation token">.</SPAN>elementHeight <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">3</SPAN><SPAN class="punctuation token">]</SPAN>
newExtent <SPAN class="operator token">=</SPAN> df<SPAN class="punctuation token">.</SPAN>extent
newExtent<SPAN class="punctuation token">.</SPAN>XMin <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN>
newExtent<SPAN class="punctuation token">.</SPAN>YMin <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">]</SPAN>
newExtent<SPAN class="punctuation token">.</SPAN>XMax <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">]</SPAN>
newExtent<SPAN class="punctuation token">.</SPAN>YMax <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">7</SPAN><SPAN class="punctuation token">]</SPAN>
df<SPAN class="punctuation token">.</SPAN>extent <SPAN class="operator token">=</SPAN> newExtent
df<SPAN class="punctuation token">.</SPAN>rotation <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">8</SPAN><SPAN class="punctuation token">]</SPAN>
df<SPAN class="punctuation token">.</SPAN>scale <SPAN class="operator token">=</SPAN> rowInfo<SPAN class="punctuation token">[</SPAN><SPAN class="number token">9</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">############################ MAIN SCRIPT STARTS HERE ##############################</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Processing map: "</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>pageName<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Reference MXD</SPAN>
mxd <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>MapDocument<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"current"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#CURRENT</SPAN>
<SPAN class="comment token">#Use DDP object when not resetting the page back to the default template</SPAN>
<SPAN class="keyword token">if</SPAN> pageName <SPAN class="operator token"><></SPAN> <SPAN class="string token">"Default Template"</SPAN><SPAN class="punctuation token">:</SPAN>
ddp <SPAN class="operator token">=</SPAN> mxd<SPAN class="punctuation token">.</SPAN>dataDrivenPages
pageID <SPAN class="operator token">=</SPAN> mxd<SPAN class="punctuation token">.</SPAN>dataDrivenPages<SPAN class="punctuation token">.</SPAN>getPageIDFromName<SPAN class="punctuation token">(</SPAN>pageName<SPAN class="punctuation token">)</SPAN>
mxd<SPAN class="punctuation token">.</SPAN>dataDrivenPages<SPAN class="punctuation token">.</SPAN>currentPageID <SPAN class="operator token">=</SPAN> pageID
<SPAN class="comment token">#Reference pageLayoutTable</SPAN>
pageLayoutTable <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListTableViews<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PageLayoutElements"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">#Move all data frames off the layout and into their default positions</SPAN>
pageLayoutCursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>pageLayoutTable<SPAN class="punctuation token">.</SPAN>dataSource<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Name = 'Default Template'"</SPAN><SPAN class="punctuation token">)</SPAN>
pageLayoutRow <SPAN class="operator token">=</SPAN> pageLayoutCursor<SPAN class="punctuation token">.</SPAN>next<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> df <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListDataFrames<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arrangeDFs<SPAN class="punctuation token">(</SPAN>pageLayoutRow<SPAN class="punctuation token">,</SPAN> df<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Move appropriate data frames onto the layout</SPAN>
pageLayoutCursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>pageLayoutTable<SPAN class="punctuation token">.</SPAN>dataSource<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Name = '"</SPAN> <SPAN class="operator token">+</SPAN> pageName <SPAN class="operator token">+</SPAN> <SPAN class="string token">"'"</SPAN><SPAN class="punctuation token">)</SPAN>
pageLayoutRow <SPAN class="operator token">=</SPAN> pageLayoutCursor<SPAN class="punctuation token">.</SPAN>next<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> df <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListDataFrames<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> pageLayoutRow<SPAN class="punctuation token">.</SPAN>isNull<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arrangeDFs<SPAN class="punctuation token">(</SPAN>pageLayoutRow<SPAN class="punctuation token">,</SPAN> df<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Arrange other layout elements</SPAN>
nArrow1 <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListLayoutElements<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MAPSURROUND_ELEMENT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NorthArrow1"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
nArrow1<SPAN class="punctuation token">.</SPAN>elementPositionX <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>loads<SPAN class="punctuation token">(</SPAN>pageLayoutRow<SPAN class="punctuation token">.</SPAN>getValue<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Title_NorthArrow"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
nArrow1<SPAN class="punctuation token">.</SPAN>elementPositionY <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>loads<SPAN class="punctuation token">(</SPAN>pageLayoutRow<SPAN class="punctuation token">.</SPAN>getValue<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Title_NorthArrow"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN>
nArrow2 <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListLayoutElements<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MAPSURROUND_ELEMENT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NorthArrow2"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
nArrow2<SPAN class="punctuation token">.</SPAN>elementPositionX <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>loads<SPAN class="punctuation token">(</SPAN>pageLayoutRow<SPAN class="punctuation token">.</SPAN>getValue<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Title_NorthArrow"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN>
nArrow2<SPAN class="punctuation token">.</SPAN>elementPositionY <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>loads<SPAN class="punctuation token">(</SPAN>pageLayoutRow<SPAN class="punctuation token">.</SPAN>getValue<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Title_NorthArrow"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">3</SPAN><SPAN class="punctuation token">]</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>RefreshActiveView<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN><SPAN class="keyword token">import</SPAN> arcpy<SPAN class="punctuation token">,</SPAN> os<SPAN class="punctuation token">,</SPAN> sys
relPath <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>dirname<SPAN class="punctuation token">(</SPAN>sys<SPAN class="punctuation token">.</SPAN>argv<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">setDF</SPAN><SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
fieldValue <SPAN class="operator token">=</SPAN> <SPAN class="string token">"["</SPAN> <SPAN class="operator token">+</SPAN> \
str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>elementPositionX<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>elementPositionY<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> \
str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>elementWidth<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>elementHeight<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> \
str<SPAN class="punctuation token">(</SPAN>long<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>extent<SPAN class="punctuation token">.</SPAN>XMin<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>long<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>extent<SPAN class="punctuation token">.</SPAN>YMin<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> \
str<SPAN class="punctuation token">(</SPAN>long<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>extent<SPAN class="punctuation token">.</SPAN>XMax<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>long<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>extent<SPAN class="punctuation token">.</SPAN>YMax<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> \
str<SPAN class="punctuation token">(</SPAN>long<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>rotation<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>long<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>scale<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"]"</SPAN>
<SPAN class="keyword token">return</SPAN> fieldValue
<SPAN class="comment token">############################ MAIN SCRIPT STARTS HERE ##############################</SPAN>
<SPAN class="comment token">#REFERENCE MXD, DDP OBJECT, AND LAYOUT ELEMENTS</SPAN>
mxd <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>MapDocument<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"CURRENT"</SPAN><SPAN class="punctuation token">)</SPAN>
ddp <SPAN class="operator token">=</SPAN> mxd<SPAN class="punctuation token">.</SPAN>dataDrivenPages
pageName <SPAN class="operator token">=</SPAN> ddp<SPAN class="punctuation token">.</SPAN>pageRow<SPAN class="punctuation token">.</SPAN>getValue<SPAN class="punctuation token">(</SPAN>ddp<SPAN class="punctuation token">.</SPAN>pageNameField<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN>
northArrow1 <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListLayoutElements<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MAPSURROUND_ELEMENT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NorthArrow1"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
northArrow2 <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListLayoutElements<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MAPSURROUND_ELEMENT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NorthArrow2"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">#REFERENCE PAGELAYOUT TABLE</SPAN>
pageLayoutTable <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListTableViews<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PageLayoutElements"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">#UPDATE INFORMATION FROM PAGELAYOUT TABLE</SPAN>
pageLayoutCursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>pageLayoutTable<SPAN class="punctuation token">.</SPAN>dataSource<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"\"Name\" = '"</SPAN> <SPAN class="operator token">+</SPAN> pageName <SPAN class="operator token">+</SPAN> <SPAN class="string token">"'"</SPAN><SPAN class="punctuation token">)</SPAN>
pageLayoutRow <SPAN class="operator token">=</SPAN> pageLayoutCursor<SPAN class="punctuation token">.</SPAN>next<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> pageLayoutRow <SPAN class="operator token">==</SPAN> None<SPAN class="punctuation token">:</SPAN> <SPAN class="comment token">#INSERT A NEW ROW - INSERT CURSOR</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Adding New Row"</SPAN><SPAN class="punctuation token">)</SPAN>
pageInsertCursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>pageLayoutTable<SPAN class="punctuation token">.</SPAN>dataSource<SPAN class="punctuation token">)</SPAN>
pageInsertRow <SPAN class="operator token">=</SPAN> pageInsertCursor<SPAN class="punctuation token">.</SPAN>newRow<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
pageInsertRow<SPAN class="punctuation token">.</SPAN>Name <SPAN class="operator token">=</SPAN> pageName
<SPAN class="comment token">#Set Data Frame information</SPAN>
<SPAN class="keyword token">for</SPAN> df <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListDataFrames<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> df<SPAN class="punctuation token">.</SPAN>elementPositionX <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN> <SPAN class="operator token">and</SPAN> df<SPAN class="punctuation token">.</SPAN>elementPositionX <SPAN class="operator token"><</SPAN> <SPAN class="number token">11</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token">#don't set values if DF is off the page</SPAN>
pageInsertRow<SPAN class="punctuation token">.</SPAN>setValue<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">,</SPAN> setDF<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Set Locator and North Arrow</SPAN>
pageInsertRow<SPAN class="punctuation token">.</SPAN>Title_NorthArrow <SPAN class="operator token">=</SPAN> <SPAN class="string token">"["</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>northArrow1<SPAN class="punctuation token">.</SPAN>elementPositionX<SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>northArrow1<SPAN class="punctuation token">.</SPAN>elementPositionY<SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> \
str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>northArrow2<SPAN class="punctuation token">.</SPAN>elementPositionX<SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>northArrow2<SPAN class="punctuation token">.</SPAN>elementPositionY<SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"]"</SPAN>
pageInsertCursor<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN>pageInsertRow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">del</SPAN> pageInsertCursor<SPAN class="punctuation token">,</SPAN> pageInsertRow
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token">#UPDATE EXISTING ROW - UPDATE CURSOR</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Updating Existing Row"</SPAN><SPAN class="punctuation token">)</SPAN>
pageUpdateCursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>UpdateCursor<SPAN class="punctuation token">(</SPAN>pageLayoutTable<SPAN class="punctuation token">.</SPAN>dataSource<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"\"Name\" = '"</SPAN> <SPAN class="operator token">+</SPAN> pageName <SPAN class="operator token">+</SPAN> <SPAN class="string token">"'"</SPAN><SPAN class="punctuation token">)</SPAN>
pageUpdateRow <SPAN class="operator token">=</SPAN> pageUpdateCursor<SPAN class="punctuation token">.</SPAN>next<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Set Data Frame information</SPAN>
<SPAN class="keyword token">for</SPAN> df <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListDataFrames<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> df<SPAN class="punctuation token">.</SPAN>elementPositionX <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN> <SPAN class="operator token">and</SPAN> df<SPAN class="punctuation token">.</SPAN>elementPositionX <SPAN class="operator token"><</SPAN> <SPAN class="number token">11</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token">#don't set values if DF is off the page</SPAN>
pageUpdateRow<SPAN class="punctuation token">.</SPAN>setValue<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">,</SPAN> setDF<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Set Locator and North Arrow</SPAN>
pageUpdateRow<SPAN class="punctuation token">.</SPAN>Title_NorthArrow <SPAN class="operator token">=</SPAN> <SPAN class="string token">"["</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>northArrow1<SPAN class="punctuation token">.</SPAN>elementPositionX<SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>northArrow1<SPAN class="punctuation token">.</SPAN>elementPositionY<SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> \
str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>northArrow2<SPAN class="punctuation token">.</SPAN>elementPositionX<SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">","</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>round<SPAN class="punctuation token">(</SPAN>northArrow2<SPAN class="punctuation token">.</SPAN>elementPositionY<SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"]"</SPAN>
pageUpdateCursor<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>pageUpdateRow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">del</SPAN> pageUpdateCursor<SPAN class="punctuation token">,</SPAN> pageUpdateRow
<SPAN class="keyword token">del</SPAN> pageLayoutCursor<SPAN class="punctuation token">,</SPAN> pageLayoutRow<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>I'm totally new to python, but customizing it was pretty easy, until I wanted to change both rotation and scale. Hopefully I'm just missing something simple