1) I seem to have to name my function parameter 'myArray' in order to pass it correctly. Is this a JavaScript thing? I'm from Python.
2) I have to run the script multiple times to achieve the desired effect. Could something be blocking it in the DOM/Action Manager?
3) It's incredibly slow. I have been told to expect this, but there must be ways to optimise - creating an array of layer objects and then using them is even worse.
Code: Select all
var myArray = ['abc','def','ghi'];
organiseSelGrpSubLayersByName(myArray);
function organiseSelGrpSubLayersByName(myArrray)
{
var doc = app.activeDocument;
var grp = doc.activeLayer;
var lyrs = grp.artLayers;
var sets = grp.layerSets;
for (var item = 0; item < myArray.length; item++)
{
var subGrp = grp.layerSets.getByName(myArray[item]);
if (subGrp === null)
{
var subGrp = grp.layerSets.add();
subGrp.name = myArray[item];
}
for (var i = 0; i < lyrs.length; i++)
{
var myLayer = lyrs[i];
if ((myLayer.name).indexOf(myArray[item]) != -1)
{
myLayer.move(subGrp, ElementPlacement.INSIDE);
}
}
}
return; // Only in here to prevent annoying 'Result: undefined' message.
}