複数ファイルをまとめて新規ドキュメントにするスクリプト【Illustrator】

シェアする

スクリプトの説明

複数のaiファイルを選択して、
新規のドキュメントにまとめます。
選択したaiファイルが複数レイヤーだった場合は一度統合してから1レイヤーとしてまとめます。
新規ドキュメントのレイヤー名が選択したaiファイルのファイル名になります。
いくつかの素材を使って何かを描いたりする時に便利です。

スクリプトのセッティング

下記のスクリプトをテキストで保存して、ファイル名の拡張子を「.jsx」に変更(名前は任意でOK)するか
ダウンロードボタンよりjsxファイルをダウンロードし、
Illustratorのプログラムフォルダの「プリセット」>「Ja_JP」>「スクリプト」フォルダに保存します。
例)C:\Program Files (x86)\Adobe\Adobe Illustrator CS5.1\Presets\ja_JP\スクリプト

保存が終わったら、Illustratorを起動し
「ファイル」>「スクリプト」から選択して実行します。
(「スクリプト」フォルダに保存したjsxファイルのファイル名が表示されます)

使い方

「ファイル」>「スクリプト」から「複数ファイルをまとめて新規ドキュメント」を実行します。
(ファイル名を変更した場合は変更したファイル名のものを選びます。)

ファイル選択のウインドウが表示されるので
まとめたいファイルを複数選択します。

選択するとスクリプトが実行され、
新規ドキュメントが作成されます。

レイヤー名がそれぞれのファイル名になります。

ご注意

選択したファイルがとても多かったり、
選択したファイルのオブジェクトがとても多かったり複雑だったりする場合は
とても時間がかかったり、時にはフリーズする恐れがありますのでご注意下さい。

ダウンロード

※ご利用は自己責任にてお願いします。
◆jsxファイルをダウンロード
OneDriveドライブよりダウンロード
1

スクリプト

※ご利用は自己責任にてお願いします。

var saveDir = File.openDialog("まとめるファイルを選択して下さい",true);
var filesLen = saveDir.length;
var newDoc = app.documents.add();

for(var i = 0; i < filesLen; i++){
        var theDoc = app.open(saveDir[i]);
        var actDoc = activeDocument;
        var actLayers = activeDocument.layers;

        var newLayer = newDoc.layers.add();
        newLayer.name = actDoc.name.replace(".ai", "");

	var integLayer = activeDocument.layers.add();
	
	//選択したファイルが1レイヤーではない場合は1レイヤーに統合する
        for (p=0; p<actLayers.length; p++){
                actLayers[p].locked = false;
                for(var l=0; l<actLayers[p].pageItems.length; l++){
			var moveObj = actLayers[p].pageItems[l].duplicate();
			moveObj.move(integLayer, ElementPlacement.PLACEATEND);
                }
        }

	//統合して空になったレイヤーを削除
	deleteLayer(actDoc);

	//統合した1レイヤーを新規ドキュメントに複製
        for(var l=0; l<actLayers[0].pageItems.length; l++){
                var moveObj = actLayers[0].pageItems[l].duplicate();
                moveObj.move(newLayer, ElementPlacement.PLACEATEND);
        }
        activeDocument.close(SaveOptions.DONOTSAVECHANGES);

}

//新規ドキュメントを作成した時に出来た空レイヤーを削除
deleteLayer(newDoc);

//空レイヤー削除関数
function deleteLayer(delDoc){
	var delLen = delDoc.layers.length;
	for(var i=delLen-1; i>=0; i--){
		var delLayer = delDoc.layers[i];
		var delObj = delLayer.pageItems.length;
		if (delObj == 0){
			delLayer.locked = false;
			delLayer.remove();
		}
	}
}

スクリプト解説

「var saveDir = File.openDialog(“まとめるファイルを選択して下さい”,true);」で
File.openDialogのオプションに「true」を入れるとファイルが複数選択可能になります。

「actLayers[p].locked = false;」は選択したファイルのレイヤーにロックがかかっていたときのためにロックを解除します。

選択したファイルが1レイヤーではない場合は
「var moveObj = actLayers[p].pageItems[l].duplicate();」
「moveObj.move(integLayer, ElementPlacement.PLACEATEND);」で
レイヤーを統合用の新規レイヤーに移動して統合しています。

「deleteLayer(actDoc);」は下の方に記述している「deleteLayer();」で
統合したことによる空レイヤーを全て削除しています。

その後
「var moveObj = actLayers[0].pageItems[l].duplicate();」
「moveObj.move(newLayer, ElementPlacement.PLACEATEND);」で1レイヤーに
まとめたレイヤーを新規ドキュメントに1レイヤーとして書き出ししています。
レイヤー名は「newLayer.name = actDoc.name.replace(“.ai”, “”);」でファイル名に合わせています。

新規ドキュメントを作成した時に出来た空レイヤーを削除
「deleteLayer(newDoc);」
レイヤーはゼロには出来ないため最後に削除してます。

空レイヤーを全て削除する関数「deleteLayer(delDoc)」。
「delLayer.pageItems.length」でレイヤーにオブジェクトがない事を確認して
オブジェクトがない場合は
「delLayer.locked = false;」ロックを外して
「delLayer.remove();」削除します。
引数はドキュメントを渡すとそのドキュメントの空レイヤーを削除します。


◆スポンサードリンク – Amazon