Я использовал scriptlistener для создания нового слоя.Умная вещь, которую он делает, это помещает его над активным слоем (не перемещая его сверху после создания). Однако я затрудняюсь понять, какая это часть кода, поскольку все они выполняются с executeAction:
function create_new_layer(layername)
{
var idMk = charIDToTypeID( "Mk " );
var desc447 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref217 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
ref217.putClass( idLyr );
desc447.putReference( idnull, ref217 );
var idUsng = charIDToTypeID( "Usng" );
var desc448 = new ActionDescriptor();
var idNm = charIDToTypeID( "Nm " );
desc448.putString( idNm, layername );
var idLyr = charIDToTypeID( "Lyr " );
desc447.putObject( idUsng, idLyr, desc448 );
var idLyrI = charIDToTypeID( "LyrI" );
desc447.putInteger( idLyrI, 57 );
executeAction( idMk, desc447, DialogModes.NO );
}