AppleScript中にファイルパスを記述する

いろいろ質問が寄せられていたり、US Appleのメーリングリストでも投稿数を統計的に分析(数えるだけ)すると明らかに傾向が出ています。AppleScriptに関する初心者の質問のほとんどがファイルパスに関するものです。

dd5.jpg

AppleScript上でのパスの書き方、扱い方については以下の記事を参照してください。ここでは、楽に記述する方法(作業方法)について述べます。

■AppleScriptで扱う「パス」について(1)
■AppleScriptで扱う「パス」について(2)
■AppleScriptで扱う「パス」について(3)
■AppleScriptで扱う「パス」について(4)

とくに、Mac OS Xでは(10.2あたりから?)ローカライズド・ファイルシステムが採用されているので、Finderで見ているとおり「デスクトップ」などとフォルダ名を書きたくなるところですが、実際の名前とは異なる(本当のフォルダ名は英語で「Desktop」)ためAppleScriptにエラーを返されたりと、使いやすさの実現のために実装されている機能のかずかずが仇になることもあるようです。

そこで、AppleScriptのプログラム中にファイルパスを記述する簡単な方法をご紹介しましょう。たいして難しくもなければ、悩ましいこともありません。単なる「作業」でしかありません。

やりかたは、大きくわけて2つ(私は(2)しか使いませんが、、、)。

(1)ドラッグ&ドロップ コース

Finder上でパスを調べたいファイルを選択して、AppleScriptエディタの記述エリアにそのままドラッグ&ドロップします。

dd1.jpg

すると、POSIX pathがAppleScriptエディタに入るので……

dd2.jpg

これをそのまま使用してみましょう。

スクリプト名:パスの書き方1
set a to “/Users/maro/Desktop/ScriptingBridgeFramework.pdf”
set aPath to (a as POSIX file)

–> file “Cherry:Users:maro:Desktop:ScriptingBridgeFramework.pdf”

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

こんな感じでパスを取得できます。fileのままだと受け付けないアプリケーションも多いので、「as alias」でalias(ファイル参照)にcastしてから使うとなおよいでしょう。

スクリプト名:パスの書き方1
set a to “/Users/maro/Desktop/ScriptingBridgeFramework.pdf”
set aPath to (a as POSIX file) as alias

–> alias “Cherry:Users:maro:Desktop:ScriptingBridgeFramework.pdf”

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

(2)コピー&ペースト コース

なにげにAppleScriptエディタ上に1行だけ書いて実行。ファイルのパスを求めたいときには「choose file」を、フォルダのパスを求めたい場合には「choose folder」とだけ書いて実行すればOKです。

dd3.jpg

実行してファイルを選ぶと「結果」欄にファイルのパスが表示されるので、

dd4.jpg

おもむろにパスの前後についているダブルクォートで囲まれている部分まで選択して、コピー。

別のScript(パスを書いておきたいScript)にペーストしてそのまま使用。

まあこんなもんでしょう。ただし、as aliasでファイル参照情報に変換する際に、参照先のファイルが存在しない(消したとか、名前を変更したとか)場合にはエラーになるので、try〜end tryのエラートラップを仕掛けて実行するのが大人な書き方です。

もっと「大人な」書き方をすれば、「path to」でホームディレクトリの位置を求めて、そこから相対的にどの位置にあるかといった情報を計算(文字列としてただつなぐだけ)して求めることになりますが、単に自分だけが使う「使い捨てScript」でそれほど気を使う必要もない、ということであれば……このような記述でも手っ取り早くてよいのではないでしょうか。

別のユーザー環境では動かないこと必至(HDD名称やユーザー名が違う)なので、こういうラフな書き方をしたAppleScriptは他人に配布しないように注意してください。あるいは、property文でプログラムの冒頭にまとめて書いて定義しておいて、他人の環境ではそこを直すようにコメントしておくとか。

スクリプト名:パスの書き方2
set b to “Cherry:Users:maro:Desktop:ScriptingBridgeFramework.pdf”
set bPath to b as alias

–> alias “Cherry:Users:maro:Desktop:ScriptingBridgeFramework.pdf”

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

Leave a Reply