Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2011-11-07

[][][]ネットからダウンロードしたファイルをドラッグ&ドロップして、アラートを出ないようにする。

Snow Leopardの頃はあまり気にならなかったんですが、Mac OS X Lion(10.7.2)にしてから、ネットからダウンロードしたファイルを開く時のチェックがかなり厳しくなったようです。これね:

f:id:seuzo:20111107002626p:image

ひとつかふたつならなんてことないんですが、FTPなどからダウンロードしたファイルが100も200もあると正直うんざりしますな...

ってことでAppleScriptのドロップレットを書いてみました。フォルダ内のファイルも再帰的に処理します。

(追記:2011-11-11T15:52:29+0900)内部的にxattr -r オプションを使って、entire contentsをやめるようにしました。

(*
remove_download_EA
ネットからダウンロードしたファイルを開く時の警告表示を出ないようにするドロップレット

for Mac OS X 10.7.2

2011-11-07	ver0.1	とりあえず
2011-11-11	ver0.2	xattr -r オプションを使って、entire contentsをやめた

(c)2011 seuzo
*)

--ファイル名の警告
to violation_name(file_path)
	set file_path to quoted form of ((POSIX path of file_path) as Unicode text) --まずPOSIX pathにする
	set file_path_test to do shell script "echo " & file_path & " | perl -pe 's/[\\/\\.0-9A-Za-z _-]+//;'"
	if (file_path_test is not "") then
		display dialog file_path & " のファイル名には英数字以外の文字が使われています。" & return & "実行時にトラブルになるかもしれません。続行しますか?" buttons {"Cancel", "続行"} default button 1 with icon 1 --キャンセルで終了
	end if
end violation_name

--リストの結合
to as_join(thedelimit, theList)
	set oldDelim to AppleScript's text item delimiters
	set AppleScript's text item delimiters to thedelimit
	set tmpstr to theList as text
	set AppleScript's text item delimiters to oldDelim
	return tmpstr
end as_join


--ドラッグ&ドロップで実行
on open of my_files
	set target_path to {}
	
	tell application "Finder"
		repeat with i in my_files
			set aFile to i as alias
			my violation_name(aFile) --ファイル名の警告
			set end of target_path to quoted form of (POSIX path of aFile)
		end repeat
		set target_path to my as_join(" ", target_path)
		
		
		try
			set my_script to "xattr -rd com.apple.quarantine " & target_path
			--display dialog my_script
			set ans to do shell script my_script
			--display dialog ans
		on error errMsg number errNo
			--エラーがあっても無視する
			--display dialog "実行エラーです" & return & errMsg & return & errNo buttons {"Cancel"} default button 1 with icon 1 --キャンセルで終了
		end try
	end tell
end open

アプリケーション形式でダウンロードしたい人はこちら:remove_download_EA.app.zip 直

問題:ファイルをドラッグ&ドロップした時、1回だけ警告が出ます。フォルダごとドラッグ&ドロップすれば警告は出ません。

問題:すでにcom.apple.quarantine属性が外れているファイルを、未処理のファイルと一緒に選択してドラッグ&ドロップしても、未処理ファイル分を処理しません。ASのバグっぽいので、修正できないかも。フォルダごとドラッグ&ドロップすれば、すべてのファイルを処理します。


参照

ネットからダウンロードしたファイルを開く時の警告表示を消す方法 - 強火で進め

【コラム】OS X ハッキング! (253) Leopard解体新書(4) 〜拡張された拡張属性〜 | パソコン | マイコミジャーナル

Macでlsした時のパーミッションにあるアットマークを消す。xattrコマンド。 - kanonjiの日記

ダウンロードしてきたファイルを初めて開く時の警告ダイアログを表示させないようにする | Macの手書き説明書

2011-10-30

[]ドラッグ&ドロップでパスワード付きzipを作る

オンラインストレージやUSBメモリーなどを一般的に使うきょうび、大事なファイルはパスワード付きで保存したいものです。セキュリティがゆるゆるのFTPサーバーなども、ファイルにパスワードがついていれば少しは気休めになるかもしれません。

Mac OS X環境にはFinderやサービスからzip圧縮を使えますが、パスワード付きzipはターミナルからコマンドを叩く必要があります。

$ zip -rP password archive.zip targetfiles

みたいな感じ。そんな面倒なコマンドじゃないんですけれど、ちょっとでもラクしたい人たちはたくさんいて、AppleScriptAutomatorで自作する人は後を絶ちません。

ほかにもたくさんあると思いますけれど、どうもいまひとつ自分の仕様に合っていない感じがします。

  • ランダムなパスワードと任意のパスワードを両方使いたい
  • 同名のアーカイブが出来てしまう時、なんらかの警告を出したい
  • 複数のファイルをアーカイブしたい
  • フルパス名に英数字以外が使ってある場合は、警告してやりたい

ってことでAppleScriptのドロップレットを書いてみました。まだ改良の余地はあるかと思いますが、とりあえずってことで。

(追記:2011-10-31T15:29:26+0900)'*.DS_Store' '*__MACOSX/'をzipアーカイブに含めないようにしました。

(*
zip_with_password
ファイル(フォルダ)のドラッグ&ドロップでパスワード付きzipを生成
生成パスワードはクリップボードに保存
日本語ファイル名とか、記号類が使ってあるファイル名はサポートしない。いつものことだけど。
zipファイルの伸長はunzipコマンドを使うのが吉。

for Mac OS X 10.7.2

2011-10-30	ver0.1	とりあえず
2011-10-31	ver0.2	'*.DS_Store' '*__MACOSX/'をzipアーカイブに含めないようにした
(c)2011 seuzo
*)


--パスワードを生成
to generate_password(n)
	set pass to ""
	set str to "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
	repeat n times
		set pass to pass & (some character of str)
	end repeat
	return pass
end generate_password


--パスワードを得る
to get_password()
	set my_password to (text returned of (display dialog "Input Zip Password" & return & "(空白にすれば、パスワードを自動生成します)" & return & "終了後、パスワードはクリップボードに保存されます" default answer "" default button 2 with hidden answer))
	if (my_password is "") then
		set my_password to my generate_password(10)
	else
		set password_test to do shell script "echo " & my_password & " | perl -pe 's/[0-9A-Za-z]+//;'"
		if (password_test is not "") then
			display dialog "パスワードに半角英数字以外の文字が使われています。" buttons {"Cancel"} default button 1 with icon 1 --キャンセルで終了
		end if
	end if
	return my_password
end get_password


--同名ファイルの警告
to alert_same_name(file_path)
	tell application "Finder"
		if (exists (file_path as POSIX file)) then
			display dialog file_path & " は同名のファイルがあります" & return & "上書きしますか?" buttons {"Cancel", "上書き"} default button 1 with icon 1 --キャンセルで終了
		end if
	end tell
end alert_same_name


--ファイル名の警告
to violation_name(file_path)
	set file_path to quoted form of ((POSIX path of file_path) as Unicode text) --まずPOSIX pathにする
	set file_path_test to do shell script "echo " & file_path & " | perl -pe 's/[\\/\\.0-9A-Za-z _-]+//;'"
	if (file_path_test is not "") then
		display dialog file_path & " のファイル名には英数字以外の文字が使われています。" & return & "圧縮・送信・伸長時にトラブルになるかもしれません。続行しますか?" buttons {"Cancel", "続行"} default button 1 with icon 1 --キャンセルで終了
	end if
end violation_name


--フルパス名を、コンテナディレクトリ・ファイル名+拡張子・ファイル名・拡張子に分割する
--返値はPOSIX pathのレコード {dir:"", name_ext:"", f_name:"", ext:""}
to split_path(f)
	set f to quoted form of ((POSIX path of f) as Unicode text) --まずPOSIX pathにする
	set d to do shell script "echo " & f & " | perl -pe 's/^(.+\\/).+$/$1/;'" --コンテナディレクトリ
	set ne to do shell script "echo " & f & " | perl -pe 's/^.+\\/(.)/$1/;'" --ファイル名+拡張子
	if f ends with "/'" then --フォルダの場合
		set n to text 1 thru -2 of ne
		set e to ""
	else
		set e to do shell script "echo '" & ne & "' | perl -pe 's/^.+(\\..+)$/$1/;'"
		if e is not "" then
			set n to do shell script "echo '" & ne & "' | perl -pe 's/" & e & "$//;'"
		end if
	end if
	
	return {dir:d, name_ext:ne, f_name:n, ext:e}
end split_path

--リストの結合
to as_join(thedelimit, theList)
	set oldDelim to AppleScript's text item delimiters
	set AppleScript's text item delimiters to thedelimit
	set tmpstr to theList as text
	set AppleScript's text item delimiters to oldDelim
	return tmpstr
end as_join


--ドラッグ&ドロップで実行
on open of my_files
	set my_password to my get_password()
	
	set file_path_org to {} --圧縮するファイルのリスト
	if 1 < (length of my_files) then --2つ以上のファイルがドラッグ&ドロップされた
		--zipファイル
		set today_str to do shell script "date +%Y-%m-%d" --本日の日付
		set file_path_zip to choose file name with prompt "保存先:" default name today_str & ".zip" --同名ファイルを作ろうとするとここで怒られる
		my violation_name(file_path_zip) --ファイル名の警告
		set file_path to my split_path(file_path_zip) --ファイルパスの分割
		set file_path_zip to quoted form of (name_ext of file_path)
		set current_path to dir of file_path --カレントパス
		
		--ターゲットファイル
		repeat with i in my_files
			set aFile to (POSIX path of (i as alias))
			my violation_name(aFile) --ファイル名の警告
			set tmp_path to split_path(aFile) --ファイルパスの分割
			if (dir of tmp_path) is current_path then --zipアーカイブと同じディレクトリなら
				set end of file_path_org to quoted form of (name_ext of tmp_path) --ファイル名だけ
			else
				set end of file_path_org to quoted form of aFile --ちがうならフルパスで
			end if
		end repeat
		set file_path_org to my as_join(" ", file_path_org)
		
	else --処理ファイルはひとつだけ
		set aFile to (POSIX path of ((item 1 of my_files) as alias))
		my violation_name(aFile) --ファイル名の警告
		set file_path to my split_path(aFile) --ファイルパスの分割
		my alert_same_name(dir of file_path & f_name of file_path & ".zip") --同名ファイルの警告
		set file_path_zip to quoted form of (f_name of file_path & ".zip") --.zip拡張子
		set file_path_org to quoted form of name_ext of file_path --同じディレクトリに展開するので、ファイル名のみ
	end if
	
	try
		set add_files to do shell script "cd " & dir of file_path & "; zip -rP " & my_password & " " & file_path_zip & " " & file_path_org & " -x '*.DS_Store' '*__MACOSX/'"
		--display dialog add_files
	on error errMsg number errNo
		display dialog "zip実行エラーです" & return & errMsg & return & errNo buttons {"Cancel"} default button 1 with icon 1 --キャンセルで終了
	end try
	set the clipboard to my_password --クリップボードにパスワードを保存
	
end open

アプリケーションとしてダウンロードしたい人はこちらから:zip_with_password.app.zip 直

注意:フォルダだけをドラッグ&ドロップして作成したzipファイルは、Finderからアーカイブユーティリティでは伸長できません。

f:id:seuzo:20111030105126p:image

StuffIt Expanderを使うか、ターミナルで展開したいディレクトリにcdしてから

$ unzip -P password hoge.zip

などとしてください。unzipコマンドなら、同名のファイルがあった時も対話的に振る舞いを決定できます。

2011-08-04

[][][][]InDesignのテキストをKyokoさんに読んでもらう

メインの環境をMac OS X Lionにアップデートしました!

Lionといえば、まず試したくなるのはKyokoさんだろう。

$ say -v kyoko "わたしも日本語をちゃんとしゃべれるようになりました!"

結構ふつーにしゃべってる。あんなことやこんなことも...


日本語読み上げって、専用システムだとすごくお高いものだった。それがこうしてお手軽にしゃべってくれるとわ...

AppleScriptでも、古くはPhonemic Representationという発音記号の記述法を書いて、ローマ字表記をむりむり発音させるという方法があった。最近だと、SayKanaを使って日本語を読み上げるCUIアプリケーションもあった。そう考えると、とても感慨深い。


じゃあ、お約束で、InDesignのテキストをKyokoさんに読んでもらうよ。コードはこれだけ:*1

tell application "Adobe InDesign CS5"
	if exists document 1 then
		tell document 1
			if class of parent of selection is story then
				set str to contents of selection
				say str using "Kyoko"
			end if
		end tell
	end if
end tell

D

Kyokoさん、ドンマイ!

*1:文字列を加工する必要がなければ、do shell script を使う必要はないですね。

2011-05-29

[][][]テキストファイルの文字コードや改行コードを変える。

テキストファイルを扱っている人の多くが文字コードや改行コードを意識していません。こんなこと、今さら言い立てても誰も驚かないでしょう。結果的に、いろんな文字コードのファイルが出入りするので、いつもエディタでちょくちょく直しています。ちょーめんどいです。ファイルがたくさんある時は

nkf -w -Lu --overwrite *.txt

みたいにするといいですよ*1。あ、nkfないですか? この際入れちゃいなさいよ。

nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP

これでたいていの用は足りるんですけれど、コマンド処理が向かない場合もあります。例えば、処理すべきファイルが細かくフォルダ分けされているとか、フォルダ分けされているとか、フォルダ分けされているとか。いちいちコマンド打ってられっか! ってな気分になります。

(フォルダごと)ドラッグ&ドロップできたら、ちょっとはラクですよね。ということでAppleScriptを書いてみました。

D

文字コードと改行コードだけじゃつまんないので、(字種置換用の)rubyスクリプトも適用できるようにしました。使い方を簡単に説明すると...

  1. ダブルクリック起動で「文字コード」「改行コード」「適用スクリプト」を設定します。*2
  2. 「適用スクリプト」がよくわからなかったら、ファイル選択ダイアログで「キャンセル」をクリックすれば、文字コードと改行コードだけを変えられるようにできます。
  3. あとは処理したいテキストファイル(.txt)をドラッグ&ドロップするだけ。

ダウンロードはこちらです:

Change_text_encoding_and_return_code.zip 直

テキストエディタ「mi」が必要です。nkfは使っていないので、必要ありません。簡単なことしかしてないのに、無意味に長くてクドイですね、すみません。コードはこちら:

(*
Change_text_encoding_and_return_code.app

ドラッグ&ドロップしたテキストファイルのテキストエンコーディングと改行コードを変更して別名保存する。
ラップしたい外部スクリプト(ruby スクリプト)を指定できる。
初期設定はダブルクリックしてダイアログ通りに。
注意事項:処理テキストは拡張子「.txt」が必ず付いていること。

2011-05-28	ver0.1	とりあえず
2011-05-29	ver0.2	テキストであっても「.txt」拡張子を持つものだけを処理するようにした。
2011-05-29	ver0.3	フォルダをドラッグ&ドロップした時、エラーになるのを修正した。
*)

property my_text_encoding : "" --テキストエンコーディング
property my_return_code : "" --改行コード。本来はmiの定数だが、文字列("LF", "CRLF", "CR")で持つようにする。設定の表示のため。
property my_script : "" --rubyスクリプト(置換など)


--------------------------------------------------------●ダブルクリックで設定の変更
on run
	my setting() --セッティングの変更
	display dialog "以下の通りに設定しました" & return & "--" & return & "テキストエンコーディング:" & my_text_encoding & return & "改行コード:" & (my_return_code as Unicode text) & return & "置換スクリプト:" & (my_script as Unicode text)
end run

--------------------------------------------------------●ドラッグ&ドロップされた
on open of theFiles
	--設定
	if my_text_encoding is "" then my setting() --初めて起動された時、セッティング
	
	--設定の表示
	tell application "mi"
		display dialog "ドラッグ&ドロップしたテキストファイルを以下の設定で変換します" & return & "--" & return & "テキストエンコーディング:" & my_text_encoding & return & "改行コード:" & (my_return_code as Unicode text) & return & "置換スクリプト:" & (my_script as Unicode text)
	end tell
	--ファイルのフィルタリング
	set my_files to my file_kind({"txt"}, {""}, theFiles) --拡張子のリスト、ファイルタイプのリスト、処理ファイル	
	--ファイルを開いて、処理
	tell application "mi"
		activate
		repeat with i in my_files
			set tmp_file to my duplicate_rename(content of i) --ファイルの複製とリネーム
			my change_code_and_save(tmp_file) --ファイルを開いて変更し、saveする
			if my_script is not "" then --外部スクリプトが指定されている
				my run_rubyscript(tmp_file) --rubyスクリプトを適用
			end if
		end repeat
		
		display dialog ((length of my_files) as Unicode text) & "ファイルを処理しました"
	end tell
end open


----------------------------------------------●設定
to setting()
	set my_text_encoding to (choose from list {"UTF-8", "UTF-16", "UTF-16LE", "Shift_JIS", "ISO-2022-JP", "EUC-JP", "Shift_JISX0213", "ISO-8859-1", "ISO-8859-2", "ISO-8859-4", "ISO-8859-10", "ISO-8859-13", "ISO-8859-15", "x-mac-roman", "ISO-8859-5", "KOI8-R", "x-mac-cyrillic", "windows-1251", "ISO-8859-7", "x-mac-greek", "windows-1253", "ISO-8859-9", "x-mac-turkish", "windows-1254", "Big5", "GB18030", "GBK"} with prompt "変換したいテキストエンコーディングを指定してください" & return & "(特に意図がなければUTF-8を強く推奨)" default items {"UTF-8"}) as Unicode text
	if my_text_encoding is "false" then error number -128
	
	set my_return_code to (choose from list {"LF", "CR+LF", "CR"} with prompt "変換したい改行コードを指定してください" default items {"LF"}) as Unicode text
	if my_return_code is "false" then error number -128
	try
		set my_script to choose file with prompt "適用するスクリプトを選んでください。" & return & "キャンセルを選ぶと、スクリプトは適用されません。"
	on error errMsg number errNum
		if errNum is -128 then set my_script to ""
	end try
end setting

----------------------------------------------●"LF", "CR+LF", "CR"の文字列をそれぞれmiの定数に変換
to conv_return_code(tmp_return_code)
	tell application "mi"
		if tmp_return_code is "LF" then
			set tmp_return_code to LF
		else if tmp_return_code is "CR+LF" then
			set tmp_return_code to CRLF
		else if tmp_return_code is "CR" then
			set tmp_return_code to CR
		end if
	end tell
	return tmp_return_code
end conv_return_code

----------------------------------------------●必要なファイルだけをフィルタして返します
to file_kind(extention_list, type_list, theFiles)
	set my_files to {}
	
	ignoring case
		tell application "Finder"
			repeat with i in theFiles
				if extention_list contains ((name extension of i) as Unicode text) then
					set end of my_files to contents of i
				else if (kind of i) is "フォルダ" as Unicode text then
					--activate
					--display dialog "フォルダ「" & (name of i) & "」の中の全ファイルを処理します" buttons {"キャンセル", "OK"} default button 2 with icon 0
					set my_files to my_files & my file_kind(extention_list, type_list, every file in folder i)
				else if type_list contains ((file type of i) as Unicode text) then
					set end of my_files to contents of i
				else
					--activate
					--display dialog "ファイル「" & (name of i) & "」は処理ファイルとして不適当です" buttons {"キャンセル", "OK"} default button 2 with icon 0
				end if
			end repeat
		end tell
	end ignoring
	return my_files
end file_kind

----------------------------------●ファイルを複製してリネーム。hoge.txt→hoge_new.txt(miで別名保存ができないための処置)
to duplicate_rename(org_file)
	set org_file to org_file as Unicode text
	set org_file to (quoted form of POSIX path of org_file) --as Unicode text
	set new_filename to do shell script "echo " & org_file & "|sed -e 's/\\.txt$/_new.txt/;'"
	set new_file to do shell script "cp " & org_file & " '" & new_filename & "'"
	return new_filename as POSIX file
end duplicate_rename


----------------------------------●miでドキュメントを開き、テキストエンコーディングと改行コードを変更して保存(別名保存ができないための処置)
to change_code_and_save(tmp_file)
	set tmp_return_code to my conv_return_code(my_return_code)
	try
		tell application "mi"
			open tmp_file
			tell document 1
				set character code to my_text_encoding
				set return code to tmp_return_code
			end tell
			close document 1 saving yes
		end tell
	on error errMsg number errNum
		my my_error("miで処理中にエラーが起きました" & return & errMsg & return & errNum, false)
	end try
end change_code_and_save

----------------------------------●rubyスクリプトを適用
to run_rubyscript(org_file)
	tell application "Finder"
		if not (exists my_script) then my my_error(my_script & "が存在しません", true)
	end tell
	set my_script_posix to quoted form of POSIX path of my_script
	set org_file_posix to quoted form of POSIX path of org_file
	set output_file_posix to quoted form of (do shell script "echo " & org_file_posix & "|sed -e 's/\\.txt$/_new.txt/;'") --出力ファイルパスを生成
	do shell script "ruby " & my_script_posix & " " & org_file_posix & ">" & output_file_posix
	do shell script "rm " & org_file_posix --元ファイルを削除
end run_rubyscript



----------------------------------●エラー処理
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 "mi"
		activate
		beep
		set ANS to button returned of (display dialog err_str buttons my_stop default button 1 with icon 0) --警告ダイアログ出してストップ
		if ANS is "中止" then
			error number -128
		end if
	end tell
end my_error

変換するんじゃなくて、確認するだけしたい人は、ものかのさんの「Whisker」を使うと幸せになれますよ。きっとですよ。

*1:このコマンドは、カレントディレクトリの.txtファイルに対して、文字コードをUTF-8、改行コードをLFにしています。ファイルは上書きされます。

*2:設定は最初に1回やれば、あとはアプリケーション内に保持されています。設定を変更したいときは、またダブルクリックで起動してください。

2011-04-22

[][][][][]InDesignのMini Bridgeのカレントパスを素早く変更する

前回のエントリ「Mini BridgeパネルのTips」の中で、Mini Bridgeのパスを変更するのがめんどいとぶーたれました。まあ、そんな時にスクリプトですよ。ってことで書いてみました。まずは動画をごらんあれ。

D

スクリプトパネルから実行すれば、Finderの最前面のウインドウをMini Bridgeのカレントパスに変更します。

Finder上でドラッグ&ドロップもできるようになっています。アプリケーション形式の「change_path4MiniBridge.app」は(スクリプトパネルからの実行もドラッグ&ドロップも)どちらもできますが、スクリプトパネルからしか実行しないって人は「change_path4MiniBridge.scpt」を使った方が速度が早いです。

ダウンロード:change_path4MiniBridge.zip 直

コードはこんな感じです。

(*
change_path4MiniBridge
(c)2011 seuzo.jp
InDesign CS5のMini Bridgeのカレントパスを変更します。

●Useage:
スクリプトパネルから実行した場合、Finderの最前面のウィンドウをMini Bridgeのカレントパスにします。
フォルダ(またはファイル)をファイルをドラッグ&ドロップすれば、それをカレントパスにします。

●History:
2011-04-22	ver0.1	とりあえず
*)


--------------------------------------------------------●ドラッグ&ドロップされた
on open of theFiles
	tell application "Finder"
		if (length of theFiles > 1) then my my_error("ドラッグ&ドロップできるのはひとつだけです", true)
		set aFile to item 1 of theFiles
		if (kind of aFile) is not ("フォルダ" as Unicode text) then
			set current_dir to (container of aFile) as alias
		else
			set current_dir to aFile as alias
		end if
		my main(current_dir)
		
	end tell
end open


--------------------------------------------------------●起動
on run
	tell application "Finder"
		set current_dir to (insertion location) as alias --最前面のウインドウ
		my main(current_dir)
	end tell
end run


--------------------------------------------------------●メイン
to main(current_dir)
	my ver() --InDesignのバージョン確認
	tell application "Adobe Bridge CS5" to activate
	my deceive_bridge() --Bridgeの「InDesignに戻る」を確実にする
	set current_dir to (POSIX path of current_dir) as Unicode text
	my dir_return2InDesign(current_dir) --Mini Bridgeのパスを変更
end main





--------------------------------------------------------●InDesignバージョン確認ルーチン
to ver()
	tell application "Adobe InDesign CS5"
		activate
		set my_version to (version of script preferences) as real
		if my_version < 7 or my_version > 7.9 then
			activate
			my my_error("このプログラムはInDesign CS5以外では動作しません", true)
		end if
		return version
	end tell
end ver


--------------------------------------------------------●仮のドキュメントを開いて画像をリンクし、リンクをBridgeで表示させる。悪い回避方法
--Bridgeのファイルメニューからアプリケーションに戻る時、app.documents[0].chooseMenuItem("ReturnToApplication");だと、InDesignかPhotoshopかを指定できない対策。
to deceive_bridge()
	--Adobe InDesign CS5:Configuration:Icon.pngが存在するのを前提にパスを得ています。
	tell application "Finder"
		set img_path to container of (path to application "Adobe InDesign CS5")
		set img_path to (file "Icon.png" of folder "Configuration" of img_path) as alias
	end tell
	
	tell application "Adobe InDesign CS5"
		set tmp_doc to make new document
		tell page 1 of tmp_doc
			set tmp_graphic to place img_path as alias --画像を配置
			reveal in Bridge (item link of item 1 of tmp_graphic) --Brigeで表示
		end tell
		close tmp_doc saving no
	end tell
end deceive_bridge

--------------------------------------------------------●Bridgeのカレントディレクトリを変更し、InDesignに返す
to dir_return2InDesign(current_dir)
	tell application "Adobe Bridge CS5"
		--activate
		set my_js to "app.documents[0].presentationPath = '" & current_dir & "';app.documents[0].chooseMenuItem('ReturnToApplication');"
		
		do javascript my_js
	end tell
end dir_return2InDesign


----------------------------------●エラー処理
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 "Adobe InDesign CS5"
		activate
		beep
		set ANS to button returned of (display dialog err_str buttons my_stop default button 1 with icon 0) --警告ダイアログ出してストップ
		if ANS is "中止" then
			set user interaction level of script preferences to interact with all --ユーザー操作の再開
			error number -128
		end if
	end tell
end my_error

Bridgeのファイルメニューからアプリケーションに戻るのをapp.documents[0].chooseMenuItem("ReturnToApplication");と書けるんですけど、InDesignかPhotoshopかを指定できないんです。それで仕方なく、InDesignのダミーのドキュメントに画像をリンクしてそこからBridgeで表示しています。BridgeはInDesignから呼ばれたので、ファイルメニューは「Adobe InDesignに戻る」になってるんですね。我ながらダメな回避方法です。うまい方法をご存知の方は教えてください。


おまけのTips

Bridgeをバリバリ使っている人はご存知かもしれませんが、Bridge本体のフォルダ移動はFinderからドラッグ&ドロップでできます。

  • フォルダ(またはファイル)をBridgeアプリケーションにドラッグ&ドロップする
  • Adobe Bridgeのパスバー、またはプレビューにフォルダ(またはファイル)をドラッグ&ドロップする

リファレンスにも書いてあります。

Creative Suite 5 * ファイルおよびフォルダー内の移動