ここでスタックオーバーフローで見つけた関数を使用して、レイヤーをグループ化し、レイヤー名を配列にダンプしてからグループ化を解除することでわかる限り機能します。
function getSelectedLayers(){
var idGrp = stringIDToTypeID( "groupLayersEvent" );
var descGrp = new ActionDescriptor();
var refGrp = new ActionReference();
refGrp.putEnumerated(charIDToTypeID( "Lyr " ),charIDToTypeID( "Ordn" ),charIDToTypeID( "Trgt" ));
descGrp.putReference(charIDToTypeID( "null" ), refGrp );
executeAction( idGrp, descGrp, DialogModes.ALL );
var resultLayers=new Array();
for (var ix=0;ix<app.activeDocument.activeLayer.layers.length;ix++){resultLayers.push(app.activeDocument.activeLayer.layers[ix])}
var id8 = charIDToTypeID( "slct" );
var desc5 = new ActionDescriptor();
var id9 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id10 = charIDToTypeID( "HstS" );
var id11 = charIDToTypeID( "Ordn" );
var id12 = charIDToTypeID( "Prvs" );
ref2.putEnumerated( id10, id11, id12 );
desc5.putReference( id9, ref2 );
executeAction( id8, desc5, DialogModes.NO );
return resultLayers;
}
var layers = getSelectedLayers();
残念ながら、レイヤーが選択されていない状態でこの機能を実行すると、Photoshop はメッセージをスローします。
コマンド「グループレイヤー」は現在利用できません。
スクリプトが停止せずにこれが発生したときに、少なくとも null 値を返す方法はありますか? そうすれば、null のときにレイヤーを選択する必要があるというメッセージを表示できます。
または関数がグループ化関数を実行しようとする前に、レイヤーが選択されていないことを確認する方法はありますか?
どんな助けでも大歓迎です!