InDesign CS5自動化作戦 (InDesign CS5 Automation Operation)

選択されたテキストフレーム内の文字をファイルに書き出す(FileMaker 7用)

■プログラム説明(ソースコード説明)
 ファイル保存ダイアログを表示しファイル名を入力させるにはsaveDialog()を使います。ここで得られたファイルのパスを利用しファイルオブジェクトを作成します。ファイルに書き出すのでopen("w")とします。結果がtrueの場合はファイルが作成できる、falseの場合は作成できない事になります。ファイルが作成できない場合にはアクセス権(パーミッション)を確認してください。また、同名のファイルが存在しており使用中の場合にも書き出せません。この場合は再起動が必要になる可能性もあります。
 選択されたフレームがテキストフレームと仮定して(それ以外だと駄目)処理します。選択されたテキストフレームの内容を書き出すにはcontents内の文字をファイルに書き出します。ファイルメーカー 7で読み込ませるために改行コードを正規表現とreplace()を使って文字コード11番に変更しファイルに書き出します。データを書き出したらファイルをclose()で閉じます。
 ファイルメーカー 7で読み込ませるためにはファイルメーカーから、「ファイル」メニューの「レコードのインポート」の「ファイル...」を選択します。タブ区切りテキストにして、文字コードをUTF-8にすることでデータベースに読み込ませることができます。

■ソースコード
CR = String.fromCharCode(13);
fmCR = String.fromCharCode(11);
filename = File.saveDialog("書き出すファイル名を入力してください");
if (filename)
{
fileObj = new File(filename);
flag = fileObj.open("w");
if (flag)
{
regObj = new RegExp(CR,"g");
selObj = app.activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
txt = selObj[i].contents;
txt = txt.replace(regObj,fmCR);
fileObj.writeln(txt);
}
fileObj.close();
alert("ファイルを書き出しました");
}else{
alert("ファイルが作成できません。アクセス権があるか確認してください");
}
}

■ポイント
 もしかしたら、文字コードの関係で正しく書き出せない文字があるかもしれません。また、日本語フォルダやボリューム名を含んでいる場合にはファイルが書き出されない場合があるかもしれません。

■実際のスクリプトをダウンロード(sample.jsx.zip)

写真素材 PIXTA