「カラー」という名前の(サブグループ)レイヤーセットで表示されるレイヤーを検出するスクリプトが残っています。Photoshop Script - グループ/レイヤー内に表示されるレイヤーの名前を取得
以下のスクリプトは、表示されているすべてのレイヤーを確認して選択します。私は、上記のレイヤーセットでのみ同じことをするように働かせることはできません。
ご協力いただければ幸いです。グループと
#target photoshop
app.bringToFront();
main();
function main(){
if(!documents.length) return;
var Vis = getVisLayers();
deselectLayers();
for(var a in Vis){
selectLayerById(Number(Vis[a]),true);
}
}
function getVisLayers(){
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
var count = executeActionGet(ref).getInteger(charIDToTypeID('NmbL')) +1;
var Names=[];
try{
activeDocument.backgroundLayer;
var i = 0; }catch(e){ var i = 1; };
for(i;i<count;i++){
if(i == 0) continue;
ref = new ActionReference();
ref.putIndex(charIDToTypeID('Lyr '), i);
var desc = executeActionGet(ref);
var layerName = desc.getString(charIDToTypeID('Nm '));
var Id = desc.getInteger(stringIDToTypeID('layerID'));
if(layerName.match(/^<\/Layer group/)) continue;
var layerType = typeIDToStringID(desc.getEnumerationValue(stringIDToTypeID('layerSection')));
var isLayerSet =(layerType == 'layerSectionContent') ? false:true;
var vis = desc.getBoolean(charIDToTypeID("Vsbl"));
if(!isLayerSet && vis) Names.push(Id);
};
return Names;
};
function selectLayerById(ID, add) {
add = (add == undefined) ? add = false : add;
var ref = new ActionReference();
ref.putIdentifier(charIDToTypeID('Lyr '), ID);
var desc = new ActionDescriptor();
desc.putReference(charIDToTypeID('null'), ref);
if (add) {
desc.putEnumerated(stringIDToTypeID('selectionModifier'), stringIDToTypeID('selectionModifierType'), stringIDToTypeID('addToSelection'));
}
desc.putBoolean(charIDToTypeID('MkVs'), false);
executeAction(charIDToTypeID('slct'), desc, DialogModes.NO);
}
function deselectLayers() {
var desc01 = new ActionDescriptor();
var ref01 = new ActionReference();
ref01.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
desc01.putReference(charIDToTypeID('null'), ref01);
executeAction(stringIDToTypeID('selectNoLayers'), desc01, DialogModes.NO);
};
あなたの答えをありがとうございました。私が必要としている完全なスクリプトで長い道のりを歩んできましたが、私はPSスクリプトの初心者です。あなたが正しいと理解しているかどうかはわかりません。グループ "色"が表示されているかどうかを判断する必要はありませんが、このグループ内のどのレイヤーが表示されているかはわかりません。私のグループは "COLORS"と呼ばれ、このグループの中には "Yellow"、 "Black"、 "Orange"などがあります。今では、jpgをエクスポートするときにこれらのレイヤーのうちの1つしか表示されないので、ファイル名の一部としてカラー名を保存する必要があります。 – GTO
グループを含むすべてのレイヤーにループします。それがアートレイヤーの場合は、それはおそらく後であり、それが見えるかどうかを判断します。コードをさらに調整して助けました。 –
もう一度@Ghoul Fool - 私はまだ何時間も読んでいて、それを働かせようとしています。すべての表示レイヤーとグループを出力(アラート)できましたが、それ自体が "1Colors"として出力するグループ "Colors"の可視レイヤーの名前だけを出力しないようにしました。私は再び尋ねると申し訳ありません、私は自分自身でこれを解決するのが大好きです....しかし、私はばかだと思います。 – GTO