土曜日, 7月 18, 2026

JavaScriptでAI遊び 100 
Illustratorで選択したオブジェクトをレイヤー分け

選択したオブジェクトを個別にルートレイヤーに分けます。いられるのデフォルト機能である[サブレイヤーに分配]とは処理結果が異なります。個人的に[サブレイヤーに分配]は勘違いしやすいので使って居ません。

Illustratorのサブレイヤーに分配が変? 2026/07/13


// 選択グループ内のパーツを前後関係を維持してレイヤー分割

if (app.documents.length == 0) {
alert("ドキュメントを開いてください");
exit();
}

var doc = app.activeDocument;

if (doc.selection.length != 1) {
alert("グループを1つ選択してください");
exit();
}

var target = doc.selection[0];

if (target.typename != "GroupItem") {
alert("グループを選択してください");
exit();
}

// pageItemsを配列化
var items = [];

for (var i = 0; i < target.pageItems.length; i++) {
items.push(target.pageItems[i]);
}

// IllustratorのpageItemsは前面→背面なので逆順で処理
for (var j = items.length - 1; j >= 0; j--) {

var item = items[j];

var layer = doc.layers.add();

var num = ("000" + (items.length - j)).slice(-3);
layer.name = "Layer_" + num;

item.move(layer, ElementPlacement.PLACEATBEGINNING);
}

alert(items.length + "個のパーツをレイヤー分割しました");

オブジェクトを選択し実行すると・・・

このレイヤー状態は・・・

このパレットが表示されたら完了です。

こんな感じです。

※Illustratorのアップデートで不具合が出る場合があります。気がついた時点でデバッグするように心がけていますが、すぐに対応できないのでご容赦ください。