クリエイター手抜きプロジェクト[395]Adobe Illustrator CS3〜CC 2014編 フォルダ内のAIファイルに含まれる文字を検索する
── 古籏一浩 ──

投稿:  著者:


今回は、フォルダ内にあるAIファイルに含まれる文字を検索するスクリプトです。IllustratorのAIファイルに指定した文字がある場合、指定したフォルダにエイリアスを作成します。そのため、あとから確認する場合に便利です。

過去に掲載したPhotoshop版と同様、AIファイルがあるフォルダは入れ子(サブフォルダ)になっていても問題ありません。Illustratorの場合、Photoshopと違い、文字はTextFramesオブジェクトにすべて入っているので、多少処理が簡単になっています。

また、テキストフレームがグループ化されていても検索されます。findText()関数内の処理を変更すれば文字列の検索でなく該当するカラーを持つ図形(パス)があるかどうかも調べることができます。




// IllustratorのAIファイルに文字があるか検索しエイリアスを作成する
(function(){
// AIファイルがあるフォルダを指定する
var folderObj = Folder.selectDialog("文字を検索するAIファイルがあるフォルダを選択してください");
if (!folderObj){ return; } // キャンセルされた場合は何も処理しない
// エイリアスを入れるフォルダを指定する
var saveFolder = Folder.selectDialog("結果(エイリアス)を保存するフォルダを選択してください");
if (!saveFolder){ return; } // キャンセルされた場合は何も処理しない
// 検索する文字列を入力
var searchText = prompt("検索する文字列を入れてください", "FM");
if (!searchText){ return; } // キャンセルされたら何もしない
makeAliasList(folderObj);
alert("検索が終了しました");
// エイリアスを作成する関数
function makeAliasList(folderObj){
// AIファイル一覧を取得する
var fileList = folderObj.getFiles("*.ai");
// ファイルの数だけ開いて文字列を検索する
for(var i=0; i<fileList.length; i++){
app.open(fileList[i]);
var flag = findText(activeDocument, searchText);
if (flag == true){
// ファイル名が重複しないようにスラッシュをアンダーバーにしたファイル名を使う
var filename = fileList[i].fsName.replace(new RegExp("/", "g"), "_");
// エイリアスとなるファイルオブジェクトを作成する
var aliasFileObj = new File(saveFolder+"/"+filename);
// エイリアスを作成する
var flag = aliasFileObj.createAlias(fileList[i]);
if (flag == false){
$.writeln("失敗:"+filename);
// もし、アラートダイアログを表示した方がいい場合は以下の行の//を消してください。
// alert("失敗:"+filename);
}
}
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
// フォルダを含めた一覧を取得する
fileList = folderObj.getFiles();
for(var i=0; i<fileList.length; i++){
// フォルダかどうか調べる
if(fileList[i].getFiles){
makeAliasList(fileList[i]); // フォルダの場合は再帰呼び出し
}
}
// テキストフレーム内を検索する関数
function findText(layObj, searchText){
for(var i=0; i<layObj.textFrames.length; i++){
var text = layObj.textFrames[i].contents;
// 一致しているかどうか調べる
if (text.indexOf(searchText) > -1){
// 一致していたら以後の処理を中断して戻る
return true;
}
}
return false;
}
}
})();


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

7月7日は七夕だけど、地元(長野県)だと月遅れ(旧暦という方がよいのかな)なので、特に何もしません。もっとも8月7日になっても何もしないのですけど。旧暦の方が生活に密着してるので、旧暦生活した方がいいかも。

電子書籍は紙版を作成した後、あちこちで配信するというやり方がよいのかもしれません。というか、うまいワークフローがわからないので難しいです。作る時は最初から電子書籍のみというパターンと、紙版からというパターンがあります。電子書籍を印刷するというだけなら、プリントオンデマンドという方法もあります。

ということで、D3.js本の電子書籍版が出ました。こういう場合は電子書籍というよりも、電子版といった方がよいのでしょうか。

・D3.js本 Kindle版
< http://www.amazon.co.jp/dp/B00LBLX46Y
>

・D3.js本 Google Play版 (Andorid)
< https://play.google.com/store/books/details/古籏一浩_データビジュアライゼーションのためのD3_js徹底入門?id=qyDnAwAAQBAJ
>

・D3.js本 楽天Kobo版
< http://books.rakuten.co.jp/rk/a47cf142ac033f8aab56fd4abdcf48df/
>

・D3.js例文辞典
< http://www.openspc2.org/reibun/D3.js/
>

・Chromecast (クロムキャスト) 使い方辞典
http://www.openspc2.org/reibun/Chromecast/


・Swift例文辞典
< http://www.openspc2.org/reibun/Swift/1.0/
>

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

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

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

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

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

・Nexus 7(アンドロイドタブレット)使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus7/
>

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

・本の訂正ページ
< http://www.openspc2.org/book/error/
>

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< https://www.ddc.co.jp/estore/cgi/item/start.cgi?m=DetailViewer&record_id=243
>
吉田印刷所の「印刷の泉」でも購入できるようになりました。