Illustratorで作業していると、
「ガイドがいろんなレイヤーに散らばって管理しづらい…」
と感じたことはありませんか?
複数人で触ったデータや、過去データを流用したファイルでは特に、
ガイドがバラバラのレイヤーに存在していて、確認や編集のたびにストレスになります。
そんなときに便利なのが、
ガイドを1つのレイヤーにまとめるスクリプトです。
ワンクリックで、ドキュメント内のガイドをすべて1箇所に集約できるため、
レイヤー構造が一気にスッキリします。
このスクリプトでできること
- 複数レイヤーに分散したガイドを一括で集約
- ガイド専用レイヤーを作成して整理
- 通常オブジェクトには一切影響なし
- データの見通しが大幅に改善
👉 特に「入稿前チェック」や「他人データの整理」に効果絶大です。
こんな人におすすめ
- ガイドが散らばっていて探すのが大変
- レイヤー構造を整理したい
- 他人が作ったデータを触ることが多い
- 入稿前にデータをきれいに整えたい
使用イメージ
Before
・各レイヤーにガイドがバラバラに存在
・どこに何のガイドがあるか分かりにくい

After
・ガイドが1つのレイヤーに集約
・表示・非表示・ロック管理が一発

👉 作業効率がかなり変わります。
使い方
- Illustratorでファイルを開く
- スクリプトを実行
- ガイドが自動で1つのレイヤーにまとめられる
操作はこれだけです。
スクリプトの導入方法(コピペ版)
ダウンロードは不要です。
以下のコードをコピーしてテキストファイルとして保存してください。
スポンサーリンク
Windowsの場合
- メモ帳を開く
- 下のコードを貼り付け
- 名前を付けて保存
- ファイル名を
guide_merge.jsx
にする
- 文字コードはUTF-8
- 保存
Macの場合
- テキストエディットを開く
- 「標準テキスト」に変更
- 下のコードを貼り付け
- 名前を付けて保存
- ファイル名を
guide_merge.jsx
にする
スクリプトコード
#target illustrator
(function () {
if (app.documents.length === 0) {
alert("ドキュメントがありません");
return;
}
var doc = app.activeDocument;
var TARGET_LAYER_NAME = "guide";
function getLayerByName(name) {
for (var i = 0; i < doc.layers.length; i++) {
if (doc.layers[i].name === name) return doc.layers[i];
}
return null;
}
function createGuideLayer() {
var layer = getLayerByName(TARGET_LAYER_NAME);
if (!layer) {
layer = doc.layers.add();
layer.name = TARGET_LAYER_NAME;
}
layer.locked = false;
layer.visible = true;
return layer;
}
function collectGuides(container, arr) {
for (var i = 0; i < container.pathItems.length; i++) {
try {
if (container.pathItems[i].guides) {
arr.push(container.pathItems[i]);
}
} catch(e){}
}
for (var g = 0; g < container.groupItems.length; g++) {
collectGuides(container.groupItems[g], arr);
}
for (var c = 0; c < container.compoundPathItems.length; c++) {
var cp = container.compoundPathItems[c];
for (var k = 0; k < cp.pathItems.length; k++) {
try {
if (cp.pathItems[k].guides) {
arr.push(cp.pathItems[k]);
}
} catch(e){}
}
}
}
var guides = [];
var lockedLayersWithGuides = [];
for (var i = 0; i < doc.layers.length; i++) {
var layer = doc.layers[i];
var temp = [];
collectGuides(layer, temp);
if (temp.length > 0) {
if (layer.locked) {
lockedLayersWithGuides.push(layer);
}
for (var j = 0; j < temp.length; j++) {
guides.push(temp[j]);
}
}
}
if (guides.length === 0) {
alert("ガイドが見つかりませんでした");
return;
}
if (lockedLayersWithGuides.length > 0) {
var names = [];
for (var i = 0; i < lockedLayersWithGuides.length; i++) {
names.push(lockedLayersWithGuides[i].name);
}
var msg =
"ロックされているレイヤーにガイドがあります\n\n" +
names.join("\n") +
"\n\nロックを解除して続行しますか?";
if (!confirm(msg)) {
// Cancelなら完全終了(レイヤーも作らない)
return;
}
for (var i = 0; i < lockedLayersWithGuides.length; i++) {
lockedLayersWithGuides[i].locked = false;
}
}
// ここで初めて guide レイヤーを作る
var guideLayer = createGuideLayer();
var moved = 0;
for (var i = 0; i < guides.length; i++) {
try {
guides[i].move(guideLayer, ElementPlacement.PLACEATEND);
moved++;
} catch(e){}
}
guideLayer.zOrder(ZOrderMethod.BRINGTOFRONT);
guideLayer.locked = true;
alert("ガイドを " + moved + " 個、guide レイヤーにまとめました");
})();
まとめ
ガイドは便利な反面、
増えてくると「見えないゴミ」になりがちです。
このスクリプトを使えば、
ワンクリックで整理された状態を作れるので、
- 作業効率アップ
- ミス防止
- データの可読性向上
すべてに効いてきます。
「ガイドが散らかってるな…」と思ったら、
ぜひ一度使ってみてください。
スポンサーリンク


コメント