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

選択されたフレームがテキストフレームの場合のみファイルにテキストを保存する

■プログラム説明(ソースコード説明)
 ファイル保存ダイアログを表示しファイル名を入力させるにはsaveDialog()を使います。ここで得られたファイルのパスを利用しファイルオブジェクトを作成します。ファイルに書き出すのでopen("w")とします。結果がtrueの場合はファイルが作成できる、falseの場合は作成できない事になります。ファイルが作成できない場合にはアクセス権(パーミッション)を確認してください。また、同名のファイルが存在しており使用中の場合にも書き出せません。この場合は再起動が必要になる可能性もあります。
 選択されたフレームがテキストフレームの場合のみ処理します。テキストフレームでない場合には無視され次のフレームの処理にうつります。選択されたテキストフレームのテキストはcontentsプロパティに入っているので、読み出して連結し最後にまとめて返すようにします。改行はwriteln()では書き出されないため、CR+LFコードを直接指定し出力するようにします。

■ソースコード
filename = File.saveDialog("保存テキストファイル名を入れて下さい");
if (filename)
{
fileObj = new File(filename);
flag = fileObj.open("w");
if (flag == true)
{
text = getTextFrameText();
fileObj.write(text);
fileObj.close();
}else{
alert("ファイルが開けませんでした");
}
}
// 選択されているテキストフレーム内の文字を全て取得し返す
function getTextFrameText()
{
var cContentType_textType = 1952412773;
var CRLF = String.fromCharCode(13, 10);
var result = "";
var docObj = app.activeDocument.selection;
for (var i=0; i<docObj.length; i++)
{
if (docObj[i].contentType == cContentType_textType)
{
result += docObj[i].contents + CRLF + CRLF;
}
}
return result;
}

■ポイント
 表組はテキストフレームとして認識されないので書き出す事はできません。一度表をテキストにすることでテキストフレームとして認識され書き出すことができるようになります。

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

写真素材 PIXTA