[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:1184) [AS InDesignCS] Text Esport



YUJI@勉強部屋さんところの話題。
あっちはあっさり書きすぎたかなw
ドラッグ&ドロップだったり,ページごとのインターフェイスも必要だろうか? >だれとなく



(*
Text_Export
(c)2003-2005 www.seuzo.jp
ドキュメント上のテキストをストーリー順にすべて書き出します。

●history
2005.07.14	ver.0.1	とりあえず
*)

--------------------------------------------------------●コントロールルーチン
--★起動チェック
my ver()
my doc_exists()

--★実行
tell application "InDesign CS_J"
	activate
	set my_file to (choose file name with prompt "出力ファイルを保存します" default name "contents.txt")
	set contents_txt to my do_it()
	my write_file(contents_txt, my_file)
	
	--★終了ダイアログ
	display dialog "書き出しおわりました"
end tell


--------------------------------------------------------●InDesignバージョン確認ルーチン
to ver()
	tell application "InDesign CS_J"
		set my_version to version
		if my_version < 3 and my_version > 3.9 then
			my my_error("このプログラムはInDesign CS以外では動作しません", true)
		end if
	end tell
end ver

--------------------------------------------------------●ドキュメントが開かれているかどうか
to doc_exists()
	tell application "InDesign CS_J"
		if not (exists document 1) then
			activate
			beep
			display dialog "ドキュメントが開かれていません" buttons "キャンセル" default button 1
		end if
	end tell
end doc_exists

--------------------------------------------------------●テキスト抜き出し
to do_it()
	set tmp_txt to "" as Unicode text
	tell application "InDesign CS_J"
		tell document 1
			set every_story to every story
			repeat with i in every_story
				set tmp_i_txt to contents of (object reference of i)
				set tmp_txt to tmp_txt & tmp_i_txt & return & return
			end repeat
		end tell
	end tell
	return tmp_txt
end do_it

------------------------------------------★ファイル書き出し
on write_file(contents_txt, my_file)
	tell application "Finder"
		set FH to open for access my_file with write permission
		try
			write contents_txt to FH
		on error errMsg number errNo
			close access FH
			activate
			display dialog "書き込み時のエラーです" & return & errMsg & errNo
			return
		end try
		close access FH
		update my_file
	end tell
end write_file

------------------------------------------★エラー処理
on my_error(err_str, my_stop)
	set err_str to err_str as Unicode text
	if my_stop then
		set my_stop to {"中止"}
	else
		set my_stop to {"中止", "続行"}
	end if
	tell application "InDesign CS_J"
		--set user interaction level to interact with all --ユーザー操作の禁止を解除します
		activate
		beep
		set ANS to button returned of (display dialog err_str buttons my_stop default button 1 with icon stop) --警告ダイアログ出してストップ
		if ANS is "中止" then
			error number -128
		end if
	end tell
end my_error