ようこそ。あなたの質問が嫌なdownvotesにもかかわらず、私はPSがあいまいなレイヤー名の検索を既に持っていないことに驚いています。
私はあなたに最高速度を得るでしょう:
レイヤー上のループは簡単です。
var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;
for (var i = numOfLayers -1; i >= 0 ; i--)
{
var thisLayer = srcDoc.layers[i];
}
しかし、これはレイヤーグループとより複雑になり、時々正しい痛みになります。だからあなたはそれらをすべて見つけることができる再帰関数を持たなければならない。あの人の周りに頭を浮かべるのに私はしばらくかかった!私たちはアートレイヤーを扱っているだけなので、特別なアートレイヤー配列にアートレイヤーを追加します。
次に、正規表現(Maxscriptでは使用できません:)を使用して、レイヤ名の配列を調べることができます。
// group layer vegetables
var allLayers = new Array();
var artLayers = new Array();
var theLayers = collectAllLayers(app.activeDocument, 0);
var artLayerNames = "";
// loop over art layers backwards
for (var i = artLayers.length -1; i >= 0 ; i--)
{
var temp = artLayers[i];
var regEx = new RegExp(/t/gim);
if (temp.match(regEx))
{
// if the layer contains the letter "t" show it!
alert(temp);
}
artLayerNames+= artLayers[i] + "\n";
}
// print out all layers
alert(artLayerNames);
// function collect all layers
function collectAllLayers (theParent, level)
{
for (var m = theParent.layers.length - 1; m >= 0; m--)
{
var theLayer = theParent.layers[m];
// apply the function to layersets;
if (theLayer.typename == "ArtLayer")
{
// get the art layers
artLayers.push(theLayer.name);
}
else
{
allLayers.push(level + theLayer.name);
collectAllLayers(theLayer, level + 1)
}
}
}
"*"両側のt。私は何らかの理由でそれをタイプさせません。 – sdds
PS JavaScriptと通常のJSの間に大きな違いがあるかどうかはわかりませんが... "getByName"にはワイルドカードや正規表現を使用できません。代わりに 'document.querySelector()'へのアクセス権があるかどうかを確認してください。 – Makaze