OS X Marvericks にアップデートし、新しい Keynote と Numbers と Pages をインストールしたものの...。AppleScript が全くサポートされていないなんて。商売上がったりだよ...(嘘だけど)。
そんなわけで、iWork '09 をインストールしたよ、ってお話。
とりあえず、古い iWork '09 がないことには話にならない。
古いインストール DVD を探し出し、おもむろにインストール。特にエラーもなくインストール完了。Apple から最新のアップデータを適用する。ここまでは何の問題もなく完了。まだ Amazon なんかでインストール DVD が売っていたりするので必要なら今のうちに買っておくのがいいかも(ただ、Amazon のレビューをみている限りでは躊躇してしまうのだけど)。
これで最新と一つ前の iWork ソフトウェアが共存することになる。
が、問題はこれから。
最新の Keynote、Pages、Numbers は AppleScript サポートがほとんど全滅なんだけど、それ以外は古いものと同じなんですね。つまり、バンドル ID やクリエータータイプ等々。たいていの人にはほとんど関係ないようなことなんだけど、これだと困るのです。AppleScript で操作するときに。
例えば、AppleScript で次のようなことをすると、最新か古いのかどちらが反応するかは運次第。
tell application "Keynote"
activate
end tell
どうしたものか。こうしたときに使える AppleScript のバッドノウハウ(?)がどこかにあったような...。
試行錯誤を繰り返した末たどりついたのは、アプリケーションのパスを使う方法。
tell application "System Events"
set appList to application processes whose visible is true
-- プロセスの中から Keynote '09 を探す
set targetApp to missing value
repeat with thisApp in appList
set appFile to application file of thisApp
if (short version of appFile is "5.3") and (creator type of appFile is "keyn") then
set targetApp to appFile as text
exit repeat
end if
end repeat
end tell
tell application targetApp
name -- "Keynote"
version --> "5.3"
end tell
うん。動く。上記は System Events を使って目的のアプリケーションのファイルパスを取得していますが、直接パスを記述するのもあり。
-- アプリケーションのパスを文字列で記述する
tell application "path:to:application"
(* code is here *)
end tell
これで今まで使っていた AppleScript を使うことができる。まぁ、本当のところは最新のアプリケーションが AppleScript に対応してくれるのが一番なんだけどね。
0 件のコメント :
コメントを投稿