Tinkering and testing with mapping module in arc pro 2.5.0. The last line (moveLayer) of the following code fails. The failure shows 'value error' yet type testing of the function method inputs show <class 'arcpy._mp.Layer'>.
Why does the moveLayer method dislike my inputs?
import arcpy as g
# Get parameters
iLay = g.GetParameter(0)
# attach to activeMap
amp = g.mp.ArcGISProject("CURRENT").activeMap
wrkspc = "C:/Projects/ArcPro/GISTools/"
# add layer (actually empty group) from layerfile and rename
fLyr = g.mp.LayerFile(wrkspc +'newGrpLay.lyrx')
layNgrp = amp.addLayer(fLyr)[0]
layNgrp.name = 'Layer Group Jun'
# add layer given in tool input (this a re-add, layer already exists in map)
iLay.name = 'gvnLay1'
amp.addLayerToGroup(layNgrp, iLay)
# add second layer from layerfile and rename
fLyr2 = g.mp.LayerFile(wrkspc +'zeropt.lyrx')
lstAdd = amp.addLayer(fLyr2, 'TOP')
layObj = lstAdd[0]
layObj.name = 'lay_from_file'
# now change order of layers
amp.moveLayer(iLay, layObj) ## fails; regardless if position parameter is included
ValueError: <MappingLayerObject object at {address}>
I think the issue may be with this line:
iLay = g.GetParameter(0)
The comments in your code suggest that this is a layer already in the map? If that is the case lets call it XYZ. These line rename the layer and then duplicates it by adding it to the group layer
iLay.name = 'gvnLay1'
amp.addLayerToGroup(layNgrp, iLay)
So you now have two layers called gvnLay1 in your contents panel, is that what you wanted? I assume the move is failing because it does not know which one you want to move it above?