全てのレイヤーを取得してポップ

//レイヤーのパスを作成
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を取得するとそのレイヤーのフルパス、表示/非表示の状態、名前を取得できます。
ただのアラートなので長すぎると下の方が見えなくなります。



この記事が気に入ったらサポートをしてみませんか?