クリエイター手抜きプロジェクト[422]Illustrator CS6〜CC 2014編 フォルダ内のAIファイルをグループ化して配置する
── 古籏一浩 ──

投稿:  著者:



今回は、フォルダ内にあるAIファイル(PDFファイルでもよい)を自動的に読み込み、グループ化して配置するスクリプトです。

IllustratorのJavaScriptには createFromFile() という命令があり、これを利用すると簡単にグループ化してファイルを配置できます。ただし、グループ化といっても、元のAIファイルのパスの状態をそのまま読み込んでいるわけではありません。つまり、配置した後はパスや文字の変更はできず、サイズ変更や位置変更などに限定されます。

最初のスクリプトは、あらかじめ開かれているドキュメントにAIファイルを配置します。フォルダを指定すると、すべてのAIファイルが読み込まれグループ化され配置されます。





// 指定したフォルダ内にあるAIファイルをグループとして配置する
(function(){
if (app.documents.length === 0){
alert("新規にドキュメントを用意してから実行してください");
return;
}
var aiFolder = Folder.selectDialog("AIファイルが入ったフォルダを選択してください");
if (!aiFolder){ return; }
var saveFolder = Folder.selectDialog("ファイルを保存するフォルダを指定してください");
if (!saveFolder){ return; }
var fileList = aiFolder.getFiles("*.ai"); // フォルダのAIファイルの一覧を取得する
for(var i=0; i<fileList.length; i++){
// AIファイルをグループにして配置
try{
app.activeDocument.groupItems.createFromFile(fileList[i]);
}catch(e){
alert("配置するレイヤーがロックされている可能性があります");
return; // エラーの場合は処理しない
}
}
})();


次のスクリプトが本命(?)です。カタログなどでフォルダごとに分類されたAIファイルを、自動で読み込み配置し保存します。2番目に出るフォルダ選択ダイアログでは、分類されたフォルダの親フォルダを選択してください。
例えば、

■catalog-data
 ├靴
 ├衣服
 ├帽子
 └ズボン

のようなフォルダ構成になっている場合は、「catalog-data」フォルダを選択してください。あとは、自動的にフォルダかどうか判別し、AIファイルを配置し保存処理まで行います。


// フォルダ単位でグループ化し配置後に自動保存する
(function(){
var tempFile = File.openDialog("テンプレートファイルを選択してください");
if (!tempFile){ return; }
var mainFolder = Folder.selectDialog("フォルダを選択してください");
if (!mainFolder){ return; }
var saveFolder = Folder.selectDialog("ファイルを保存するフォルダを指定してください");
if (!saveFolder){ return; }
// ファイル・フォルダ一覧を取得する
var folderList = mainFolder.getFiles();
for(var j=0; j<folderList.length; j++){
if (!folderList[j].getFiles){ continue; } // フォルダでなければ処理しない
// テンプレートファイルを開く
app.open(tempFile);
var fileList = folderList[j].getFiles("*.ai"); // フォルダのAIファイルの一覧を取得する
for(var i=0; i<fileList.length; i++){
// AIファイルをグループにして配置
try{
app.activeDocument.groupItems.createFromFile(fileList[i]);
}catch(e){
// 安全のためtry...catchで囲んであります
}
}
// 保存処理
var fileObj = new File(saveFolder+"/"+folderList[j].name+".ai");
activeDocument.saveAs(fileObj);
activeDocument.close(SaveOptions.DONOTSAVECHANGES); // 変更せずに閉じる
}
})();


AIファイルでなくてもJPEGファイルでもできます。最初のスクリプトをJPEG形式に対応させると、以下のようになります。なお、配置後のサイズが大きいとやりにくいので、100×100ポイントになるように幅を調整しています。


// 指定したフォルダ内にあるファイルをグループとして配置する
(function(){
if (app.documents.length === 0){
alert("新規にドキュメントを用意してから実行してください");
return;
}
var aiFolder = Folder.selectDialog("ファイルが入ったフォルダを選択してください");
if (!aiFolder){ return; }
var saveFolder = Folder.selectDialog("ファイルを保存するフォルダを指定してください");
if (!saveFolder){ return; }
var fileList = aiFolder.getFiles("*.jpg"); // フォルダのJPEGファイルの一覧を取得する
for(var i=0; i<fileList.length; i++){
// JPEGファイルをグループにして配置
try{
var grp = app.activeDocument.groupItems.createFromFile(fileList[i]);
grp.width = 100; // 横幅を指定する
grp.height = 100; // 縦幅を指定する
}catch(e){
alert("配置するレイヤーがロックされている可能性があります");
return; // エラーの場合は処理しない
}
}
})();


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/
>

私の住んでいる地区には過去にサークルKというコンビニがあったのですが、今は消滅。現状であるのはヤマザキデイリーストアと農協の店が合体した謎店舗。そして、先月か先々月だったかローソンの店が建設されました。

これで、近くにコンビニができる(といっても2km以上先だけど)と思ったのですが、一か月以上経過した現在でも一向に開店する気配なし。まあ、コンビニのオーナーをやるとロクな事にならないと、地域に知れ渡っている(全国的に?)せいか、誰も名乗りをあげず、いつ開店するのか不明なまま。

このローソンが開店する時は多分、不景気になった時かもしれません。というのも、リーマンショック前はコンビニの建物を作ってもオーナーになる人がおらず、何か月も放置されてました。しかし、リーマンショックが発生し急速に不景気になった瞬間に、あっという間に開店。

ということで、ローソンが開店したら不景気になったのだ、という個人的な判断を行う予定です。

・Adobe JavaScriptリファレンス
< http://www.amazon.co.jp/dp/B00FZEK6J6/
>

・Illustrator自動化基本編
< http://www.amazon.co.jp/dp/B00R5MZ1PA
>

・ExtendScript Toolkit(ESTK)基本編
< http://www.amazon.co.jp/dp/B00JUBQKKY/
>

・データビジュアライゼーションのためのD3.js徹底入門
< http://www.amazon.co.jp/dp/4797368861
>

・4K/ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/
>

・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082
>

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/
>