InDesignでJavaScript その11。
よく頼まれるお仕事で、組版ソフトで校了になったデータからテキストを抜き出すっていうのがあるんだけど、それのInDesign版をやることになって、とりあえず場当たり的に形にしてみた。
InDesign CS2自動化作戦 with JavaScriptさんのサンプルを切って繋げただけの代物なので公開するのもおこがましいのですが、一応サンプルということで。
/*★全てのフレームのテキストを抜き出す.jsx★
☆ver.1.0☆
Copyright [偽善者こうちゃん]
[2007.01.15] {
ver.1.0作成
}
アクティブなドキュメントの全てのページのテキストフレームのテキストを
抜き出してファイルに保存するJavaScript。
勉強用に作ったのでサンプルとして使わないほうが…。
なお、このJavaScriptを使用して損害をこうむっても
私は知りませんので、あしからず。
偽善者こうちゃん
http://macneko.blog77.fc2.com/
*/
//ドキュメントを開いているかチェック
if (app.documents.length != 0) {
//開いていたら
textExtract();
} else {
//開いていなかったら
alert("ドキュメントを開いてから実行してください");
}
function textExtract(){
var filename = File.saveDialog("書き出すファイル名を入力してください");
if (filename) {
var fileObj = new File(filename);
var flag = fileObj.open("w");
if (flag) {
var docObj = app.activeDocument;
//ページ数分繰り返す
for (p = 0; p < docObj.pages.length; p++) {
var pageObj = docObj.pages[p];
for (i = 0; i < pageObj.textFrames.length; i++) {
//pページのテキストフレームを選択していく
pageObj.textFrames[i].select(SelectionOptions.addTo);
}
//選択しているテキストフレームを変数に格納
selObj = app.activeDocument.selection;
//選択しているテキストフレーム分繰り返す
for (s=0; s < selObj.length; s++) {
//選択しているテキストフレームのテキストを星+改行の後に書き込む
fileObj.writeln("★?n" + selObj[s].contents);
fileObj.writeln(); // 1行空ける
//テキストを書き出したテキストフレームの選択を外す(外さないと次ページに移動したときまた抜き出してしまう)
selObj[s].select(SelectionOptions.removeFrom);
}
}
fileObj.close();
alert("ファイルに書き出しました");
}else{
alert("ファイルが作成できません。アクセス権があるか確認してください");
}
}
}