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

選択されたテキストフレーム内の文字をファイルに書き出す(保存ダイアログ)

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


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

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

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

写真素材 PIXTA