#target photoshop
var doc = activeDocument;
var gp = doc.activeLayer
var bound = false
var curLayer
getLayers (gp)
function getLayers(gp1){
for(var i=0;i<gp1.layers.length;i++){
try{
var check = doc.selection.bounds
bound =true;
}
catch(e){bound = false}
doc.activeLayer = curLayer = gp1.layers;
if(curLayer.typename =='LayerSet'){getLayers (gp1.layers)}
else{
if(curLayer.kind == 'LayerKind.NORMAL' || curLayer.kind=='LayerKind.SMARTOBJECT'){
if(bound){selPx ()}
else{selPxFirst ()};
}
else{
try{
if(bound){selShape ()}
else{selShapeFirst ()};
}
catch(e){}
}
}
}
doc.activeLayer = gp
}//end function
function selPxFirst(){
var idsetd = charIDToTypeID( "setd" );
var desc7 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref7 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idfsel = charIDToTypeID( "fsel" );
ref7.putProperty( idChnl, idfsel );
desc7.putReference( idnull, ref7 );
var idT = charIDToTypeID( "T " );
var ref8 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idChnl = charIDToTypeID( "Chnl" );
var idTrsp = charIDToTypeID( "Trsp" );
ref8.putEnumerated( idChnl, idChnl, idTrsp );
desc7.putReference( idT, ref8 );
executeAction( idsetd, desc7, DialogModes.NO );
}
function selPx(){
var idAdd = charIDToTypeID( "Add " );
var desc5 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref5 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idChnl = charIDToTypeID( "Chnl" );
var idTrsp = charIDToTypeID( "Trsp" );
ref5.putEnumerated( idChnl, idChnl, idTrsp );
desc5.putReference( idnull, ref5 );
var idT = charIDToTypeID( "T " );
var ref6 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idfsel = charIDToTypeID( "fsel" );
ref6.putProperty( idChnl, idfsel );
desc5.putReference( idT, ref6 );
executeAction( idAdd, desc5, DialogModes.NO );
}
function selShapeFirst(){
var idsetd = charIDToTypeID( "setd" );
var desc2 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idfsel = charIDToTypeID( "fsel" );
ref1.putProperty( idChnl, idfsel );
desc2.putReference( idnull, ref1 );
var idT = charIDToTypeID( "T " );
var ref2 = new ActionReference();
var idPath = charIDToTypeID( "Path" );
var idPath = charIDToTypeID( "Path" );
var idvectorMask = stringIDToTypeID( "vectorMask" );
ref2.putEnumerated( idPath, idPath, idvectorMask );
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref2.putEnumerated( idLyr, idOrdn, idTrgt );
desc2.putReference( idT, ref2 );
var idVrsn = charIDToTypeID( "Vrsn" );
desc2.putInteger( idVrsn, 1 );
var idvectorMaskParams = stringIDToTypeID( "vectorMaskParams" );
desc2.putBoolean( idvectorMaskParams, true );
executeAction( idsetd, desc2, DialogModes.NO );
}
function selShape(){
var idAddT = charIDToTypeID( "AddT" );
var desc13 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref14 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idfsel = charIDToTypeID( "fsel" );
ref14.putProperty( idChnl, idfsel );
desc13.putReference( idnull, ref14 );
var idT = charIDToTypeID( "T " );
var ref15 = new ActionReference();
var idPath = charIDToTypeID( "Path" );
var idPath = charIDToTypeID( "Path" );
var idvectorMask = stringIDToTypeID( "vectorMask" );
ref15.putEnumerated( idPath, idPath, idvectorMask );
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref15.putEnumerated( idLyr, idOrdn, idTrgt );
desc13.putReference( idT, ref15 );
var idVrsn = charIDToTypeID( "Vrsn" );
desc13.putInteger( idVrsn, 1 );
var idvectorMaskParams = stringIDToTypeID( "vectorMaskParams" );
desc13.putBoolean( idvectorMaskParams, true );
executeAction( idAddT, desc13, DialogModes.NO );
}