Mavericks に 古い iWork をインストールした

OS X Marvericks にアップデートし、新しい Keynote と Numbers と Pages をインストールしたものの...。AppleScript が全くサポートされていないなんて。商売上がったりだよ...(嘘だけど)。

そんなわけで、iWork '09 をインストールしたよ、ってお話。

とりあえず、古い iWork '09 がないことには話にならない。

古いインストール DVD を探し出し、おもむろにインストール。特にエラーもなくインストール完了。Apple から最新のアップデータを適用する。ここまでは何の問題もなく完了。まだ Amazon なんかでインストール DVD が売っていたりするので必要なら今のうちに買っておくのがいいかも(ただ、Amazon のレビューをみている限りでは躊躇してしまうのだけど)。

これで最新と一つ前の iWork ソフトウェアが共存することになる。

が、問題はこれから。

最新の Keynote、Pages、Numbers は AppleScript サポートがほとんど全滅なんだけど、それ以外は古いものと同じなんですね。つまり、バンドル ID やクリエータータイプ等々。たいていの人にはほとんど関係ないようなことなんだけど、これだと困るのです。AppleScript で操作するときに。

例えば、AppleScript で次のようなことをすると、最新か古いのかどちらが反応するかは運次第。

Script Editor で開く

tell application "Keynote"
    activate
end tell

どうしたものか。こうしたときに使える AppleScript のバッドノウハウ(?)がどこかにあったような...。

試行錯誤を繰り返した末たどりついたのは、アプリケーションのパスを使う方法。

Script Editor で開く

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 件のコメント :

コメントを投稿