(path to me)’s folder
自作のAppleScriptは $HOME/Library/Scriptsに置いています。
他のファイルをライブラリの様に読み込んで使いたい場合、 スクリプトのあるディレクトリを取得してスクリプトを呼ぶようなことをしています。
これに関して以前は
1 2 3 4 5 6 | |
みたいなことをしていました。
path to meが現在実行しているファイル自身のパスを返しますが
このオブジェクトのfolderという値がファイルのあるディレクトリを返すので
それを使っています。
が、これが上手く動かなくなって、
スクリプトエラー
<<class cfol>> of alias "/Users/user/Library/Scripts/myfile.scpt"のタイプをtextに変換できません。
みたいなエラーが出るようになっていました。
ここではtextに変換できない、ということになってますが、
as textの部分を外すと
スクリプトエラー
folder of alias "/Users/user/Library/Scripts/myfile.scpt"を取り出すことは出来ません。
と出るのでfolderそのものが無くなってる感じです。
path to meは実行中のスクリプトへのパスのエイリアスを返すものと言うのは変わってないと思うので、
aliasが何か変わった様です。
このパスの取り方はよく使われていて色々な所で例として見ることが出来るものなのですが、 どうも何か変化があったみたいです。
App Store.appでの履歴を見ると10月7日に追加アップデートが入ってるのでそこでの変化? (でも昨日まで問題なく使えてたような気もする。。。)
macOS High Sierraにした時点でも1つ問題が起こってましたが さらに変更が入った模様です。
(path to me) & “::”
どうやってもfolderが使えないので別の方法にしてみることに。
最終的に以下の様な変更をしました。
1 2 3 4 | |
macOSで以前まで使われていたHFS+というファイルシステムでは:を区切りとしてディレクトリを区切っています
1。
High Sierraではこれに変わってAPFSというファイルシステムが採用されましたがその点は恐らく変わってないと思います。
パスのエイリアスではこのファイルシステムを反映して:を区切りとしてディレクトリを区切る様な値が入っています。
このパスの中で::は一つ上のディレクトリを表し、
ファイルの後にも付ける事ができます。
なので((path to me as text) & "::")は現在実行中のスクリプトのあるディレクトリを表すことになります。
上の様な置き換えをした所今使ってるスクリプトは動くようになりました。
こちらの方がすっきりするし、 恐らく以前から使えてた方法だと思うので最初からこれにしておけばよかったと思う所もあります。
追記: 2017/11/06
OSアップデートが来て10.13.1になりましたが、
上のfolderを試してみた所また動くようになりました。
この記事を書いた時にちょっとTwitterで@Piyomaruさんが色々と指摘してくれましたが、
その時にpath to meの返す値が私の環境ではちょっとおかしなことになっていました。
macOS 10.13上のScript Editorでpath to meを実行したところです。 pic.twitter.com/8VF7sqPFww
— Piyomaru (@Piyomaru) 2017年10月16日
様子が違いますね。やはり環境が違うのでしょうか?(macOS 10.13 (17A405), スクリプトエディタ2.10、言語AppleScirpt 2.7、プラグイン等は入れてません。)これを変えられる様な設定なんてあるのでしょうか? pic.twitter.com/SFB4LlZjh5
— rcmdnk (@rcmdnk) 2017年10月16日
通常はMachintosh HDから始まって:で区切りなエイリアスなパスになっています。
一方、おかしかった時の返り値はaliasとはついてるものの/Users/..とUnix的なパスになっています。
上の@Piyomaruさんのテストは10.13.1betaでのテスト、ということで
10.13がおかしいのか私の環境で何かが悪さをしているのか分かりませんでしたが、
10.13.1にしてみたところ、path to meがalias "Machintosh HD:...を返す様になりました。
なので10.13.1だと前に使っていた方法がそのまま使えます。
結果的には新しい方法の方がシンプルで良いので新しい方を使いますが、 何がおかしかったのかは謎。 (同じ様な不具合の報告は見られないですが、他の10.13マシンではテスト出来てないので 10.13が悪かったのか、何か環境が悪かったのかは分からず終い。)
追記ここまで
