Automatorではファイルの保存場所を取得できない | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

こんにちは。ひらのです。

MacのGUI操作の自動再生アプリ「Automator」では、
自分自身(Automatorファイル)の保存場所を取得できなくて困ったので、
パスの取り方について纏めたいと思いました。
(検証環境はYosemite/10.10.1です)

Automatorファイルを保存した場所を取得して、
そこからの相対パスでファイルを開く動作をさせたかったのですが、
Automatorでカレントディレクトリを取得すると
Automator自体の場所が表示されてしまいます。

■shellファイルの場合
#!/bin/sh
pwd
echo $(cd $(dirname $0); pwd)

→ 実行時のカレントディレクトリが表示される
→ シェルスクリプトの保存ディレクトリが表示される

■Automatorでshellを書いた場合
[ライブラリー] > [ユーティリティ] > [シェルスクリプトを実行]
#!/bin/sh
pwd
echo $(cd $(dirname $0); pwd)

→ ユーザーのホームディレクトリになる
→ ユーザーのホームディレクトリになる

■AppleScriptの場合
return (path to me) as text→ AppleScriptの保存ディレクトリが表示される

■AutomatorでAppleScriptを書いた場合
[ライブラリー] > [ユーティリティ] > [AppleScriptを実行]
on run {input, parameters}
display dialog (path to me) as text buttons{"OK"} with icon 1
end run
→ Automator自身(Macintosh HD:Applications:Automator.app)のパスになる


そのため、Automatorで任意のパスを扱いたい場合は、
下記の手段を使用することになります。

■諦めて固定パスを使用する

■環境変数を使用する
シェル経由で環境変数を扱えるため、
私はユーザーのホームディレクトリから固定パスを使用しました。
echo $HOME/Desktop/target.txt

■Automator実行時にユーザーに入力させる
アクション「Finder 項目の選択を求める」で
Automator実行のたびにユーザーにファイルの位置を指定させます。