全てのレイヤーを取得してポップ
//レイヤーのパスを作成
var getLayerOutputPath = function(aDoc, layerNum){
//checkLayersで実行
//レイヤー名を取得
var layerName = aDoc.layers[layerNum].name;
//レイヤーを選択
var layer = aDoc.layers.getByName(layerName);
//テキスト用
var textLocalPath = "";
//辞書用
var dicLocalPath = "";
//ドキュメント名を取得
var appName = app.name;
//レイヤーの親を取得
var parentLayer = layer.parent;
//一番を上の階層に当たるまで階層名を取得
while(parentLayer.parent.name !== appName) {
//コメントアウトを外すと親を表示
dicLocalPath = parentLayer.name + "/" + dicLocalPath;
textLocalPath = "└" + textLocalPath;
parentLayer = parentLayer.parent;
}
//アラート用
textFullLayerPath = textLocalPath + layerName;
//辞書用
dicFullLayerPath = dicLocalPath + layerName;
return [textFullLayerPath, dicFullLayerPath];
};
//全てのレイヤーを索敵
var getLayerNames = function(doc, allLayerList, allLayerDic) {
//checkLayersで実行
var layLength = doc.layers.length;
for (var i = 0; i < layLength; i++) {
//status
var objType = doc.layers[i].typename;
var objDisplay = doc.layers[i].visible;
var objName = doc.layers[i].name;
//レイヤーのフルパスを取得
var objPath = getLayerOutputPath(doc, i);
//処理内容
allLayerDic[i] = [objName, objType, objDisplay, objPath[1]];
if (objType == 'LayerSet'){
//レイヤーセットなら回帰処理
var layName = objPath[0] + '\n';
allLayerList.push(layName);
getLayerNames(doc.layers[i], allLayerList, allLayerDic);
}else{
var layName = objPath[0] + '\n';
allLayerList.push(layName);
}
}
};
var checkLayers = function(){
//現在のドキュメントを取得
var doc = activeDocument;
//全てのレイヤー
var allLayerList = [];
//全てのレイヤーのひも付き
var allLayerDic = {};
//全てのレイヤーをリスト化
getLayerNames(doc, allLayerList, allLayerDic);
var allLayerList = allLayerList.join('');
//開いたレイヤーセットを閉じる
executeAction( stringIDToTypeID( "collapseAllGroupsEvent" ) );
//全てのレイヤーをお知らせ
alert(allLayerList);
return [allLayerDic,allLayerList];
}
//実行
checkLayers();
allLayerDicを取得するとそのレイヤーのフルパス、表示/非表示の状態、名前を取得できます。
ただのアラートなので長すぎると下の方が見えなくなります。
この記事が気に入ったらサポートをしてみませんか?