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

投稿:  著者:  読了時間:9分(本文:約4,300文字)


今回はドキュメント内の文字列を検索し、エイリアスを作成するInDesign版のスクリプトです。CC 2014ではテストしていませんが多分動くと思います。一応、InDesign CC 2014の使い方のページは途中まで作成してあります。

Adobe InDesign CC 2014使い方辞典
< http://www.openspc2.org/reibun/InDesignCC2014/ >

InDesignは、PhotoshopよりIllustratorに近い構造になっています。InDesignは、Illustratorの複数ページ版とも言えるようなアプリケーションですから似ています。が、やはり微妙な部分に違いがあって、Illustratorのスクリプトを変更しないと動作しません。

InDesignでは複数ページある場合でも、文字が含まれるテキストフレームは、ドキュメントオブジェクトのtextFramesにすべての文字が入っています。ページ単位で処理することもできますが、文書を全文検索する場合はPhotoshopよりも手軽です。

以下のスクリプトを実行すると、InDesignのファイル(.indd)があるフォルダを選択するように聞いてきます。サブフォルダ内にあるInDesignファイルも対象になります。次にエイリアスを保存するフォルダを選択します。最後に検索する文字列を入力すれば自動的に検索が行われます。




// InDesignのinddファイルに文字があるか検索しエイリアスを作成する
(function(){
// inddファイルがあるフォルダを指定する
var folderObj = Folder.selectDialog("文字を検索するインデザイン(indd)ファイルがあるフォルダを選択してください");
if (!folderObj){ return; } // キャンセルされた場合は何も処理しない
// エイリアスを入れるフォルダを指定する
var saveFolder = Folder.selectDialog("結果(エイリアス)を保存するフォルダを選択してください");
if (!saveFolder){ return; } // キャンセルされた場合は何も処理しない
// 検索する文字列を入力
var searchText = prompt("検索する文字列を入れてください", "長野");
if (!searchText){ return; } // キャンセルされたら何もしない
makeAliasList(folderObj);
alert("検索が終了しました");
// エイリアスを作成する関数
function makeAliasList(folderObj){
// inddファイル一覧を取得する
var fileList = folderObj.getFiles("*.indd");
// ファイルの数だけ開いて文字列を検索する
for(var i=0; i<fileList.length; i++){
app.open(fileList[i]);
var flag = findText(app.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.no);
}
// フォルダを含めた一覧を取得する
fileList = folderObj.getFiles();
for(var i=0; i<fileList.length; i++){
// フォルダかどうか調べる
if(fileList[i].getFiles){
makeAliasList(fileList[i]); // フォルダの場合は再帰呼び出し
}
}
// テキストフレーム内を検索する関数
function findText(docObj, searchText){
for(var i=0; i<docObj.textFrames.length; i++){
// 表示されていない部分の文字も検索する
var text = docObj.textFrames[i].parentStory.contents;
// 一致しているかどうか調べる
if (text.indexOf(searchText) > -1){
// 一致していたら以後の処理を中断して戻る
return true;
}
}
}
}
})();


InDesignの場合、部分一致検索ではなく、正規表現を使ってより高度な検索をしたいこともあります。その場合は、findText関数部分を以下のように変更してください。


// テキストフレーム内を検索する関数
function findText(docObj, searchText){
var regText = new RegExp(searchText);
for(var i=0; i<docObj.textFrames.length; i++){
// 表示されていない部分の文字も検索する
var text = docObj.textFrames[i].parentStory.contents;
// 一致しているかどうか調べる
if (text.match(regText) != null){
// 一致していたら以後の処理を中断して戻る
return true;
}
}
}


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

台風8号が遠く沖縄付近にあった7月9日(水)の午後、長野県はけっこうな雨が降りました。うちの駐車場も池のような状態になりました。過去には二度床下浸水してますが、前日の夜も9日も結構な雨(と雷)でした。

9日(水)の夕方5時頃のニュースを見ていたら、テロップで南木曽で土石流による災害が発生し云々と表示。撮影で何度か行った事があるところでした。土石流の威力はかなりのもので、広い木曽川が半分以上土砂で埋まっていました。ニュースで何度も流れたので見た人も多いでしょう。

・長野・南木曽町 上流2つの沢で土石流
< http://www3.nhk.or.jp/news/html/20140710/k10015893661000.html >

ちなみに木曽の情報は以下のTwitterで知ることができ、ニュースでは流れない写真や情報もあります。

・木曽総合地域情報 きそったー
< https://twitter.com/kisotter/media >

7月12日に現地に行って、いくつか撮影してきました。

< >
< >
< >
< >
< >

土石流が発生した近辺の木曽川は濁っているのですが、その少し上流になると碧い木曽川でした。災害はいきなりやってくるので、油断大敵。災害が起こってみると、民間伝承で言われている事が分かるのですが、体験しないことには実感沸かないというのもあるかもしれません。

・蛇抜け
< http://www.bousaihaku.com/cgi-bin/hp/index2.cgi?ac1=B431&ac2=&ac3=3364&Page=hpd2_view >

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

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

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

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

・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/ >

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