Batch Rename Everything
Hello, I want to batch rename everything.
What I want to do is similar to this script:
GitHub - shspage/illustrator-scripts: JavaScript scripts for Adobe Illustrator CSx.

This script collects every textframe to a pop-up window and let you modify the text and replace it.
What I want to do is you run a script in a document, open a pop-up window, and it contains the document's tree.
Something like this:
- Layer 1
- Layer 2
- PathItem 1
- PathItem 2
- GroupItem 1
- PathItem 3
- PathItem 4
- PathItem 5
- Layer 3
And you can modify them like this:
layer 1
mainLayer
--rect
--circle
--mainGroup
----icon 1
----icon 2
--stuff
lastLayer
Here is some code I go so far:
(function() {
var allLayersName = ""; //store document's tree
var level = 0; //store item's order
for (var i = 0; i < app.activeDocument.layers.length; i++) { //loop throught all top layers
loopThroughAllItems(app.activeDocument.layers, level); //go into layers, this is a recursive function
}
alert(allLayersName); //display document's tree
function loopThroughAllItems(elem, level) {
if(elem.typename == "GroupItem" || elem.typename == "Layer") {
allLayersName += Array(level).join("--") + elem.name + "\n"; //Array(level).join("--") means repeat "--" string level times, level = 2 you get "----"
level++;
for (var i = 0; i < elem.length; i++) { //this line is where I stuck because illustrator doesn't have this kind of api
return loopThroughAllItems(elem.index(i), level); //I think this line is also not gonna work XDD
}
} else {
if(elem.parent.index(elem.pareent.length-1) == elem) { //detect if it is last element inside a group or layer
allLayersName += "--".repeat(level) + elem.name + "\n";
level--; //decrease level so you get proper order
} else {
allLayersName += "--".repeat(level) + elem.name + "\n"; //there is still some items inside the group or layer
}
}
}})();
I stuck at line 12, 13 because illustrator doesn't have that api.
I don't know how to get a groupItem or layer's child in proper order.
Please Help~
