Skip to main content.

Thursday, June 09, 2011

Automatorの処理は、基本的に1本の流れしか作れません。
そのため、複数のデータをシェルスクリプトに受け渡すためには変数アクションの利用が欠かせません。
今回は変数アクションの使い方など。

前回のまとめ


・シェルスクリプトには、PerlやPython、Rubyなど強力なプログラム言語が使用可能
・データの受け取り方は、標準入力か引数の2方法
・データの引き渡しには、標準出力を使う
・通常のアクションは入力データを食べてしまう
以上。

Automatorの変な変数



Automatorでは、アクションの結果を変数に保存するのも、変数からデータを引き出すのにもアクションファイルを使います。
・ユーティリティ>【変数の値を取得】
・ユーティリティ>【変数の値を設定】


アクションから渡されてきたデータを変数に保存するときは、【変数の値を設定】アクションを挿入し、プルダウンから新規変数を選びます。

変数オプションダイアログが表示されるので、変数の名前を入力します。デフォルトでは"記憶装置"と言う変数名が割り当てられます。


【変数の値を取得】アクションを挿入した際は、使いたい変数をプルダウンメニューから選択します。


なお、作成した変数はワークフロー欄の下に一覧が表示されます。

変数欄にある四角二つのボタンを押すと、変数欄を非表示に出来ます。

どちらのアクションも、前のアクションから渡されたデータは食べずにそのまま次のアクションに引き渡すことに注意してください。
次の例を見てください。

・最初に"4321"と言う数値を、引き渡すデータとしてセットします。
・変数"初期値"に"4321"が格納されます。"4321"はそのまま次のアクションに引き渡されます。
・5555-4321の計算が行われ、結果"1234"が次のアクションに引き渡されます。
・"初期値"のデータを、受け取ったデータの後に付け加えて、次のアクションに引き渡します。
このように、変数アクションは受け取ったデータをそのまま次のアクションに引き渡しています。

なお、前のアクションからデータを受け取らず、新規にデータを作成したいときもあります。

その時は、アクションタイトルの部分を右クリックし"入力を無視"を選択します。
そうすると、前のアクションとのつながりは切れた表示になり、前のアクションのデータも受け取りません。

また、前のアクションと再度つなげたいときは、アクションタイトルの部分を右クリックし"入力を受け入れる"を選択します。

filelister.app完成


では、この変数機能を使って、filelisterを完成させてみましょう。

前回保存したfilelister.appをAutomatorにDrag&Dropして、開きます。

・【Finder項目の選択を求める】と【フォルダの内容を取得】の間に、【変数の値を設定】アクションを挿入します。変数名は"フォルダパス"とします。

・【フォルダの内容を取得】と【シェルスクリプトを実行】の間に、【変数の値を設定】アクションを挿入します。変数名は"フォルダパス"とします。
【フォルダの内容を取得】で引き渡しデータから消えた"フォルダパス"ですが、これにより一連の"ファイルパス"データにつづいて"フォルダパス"データが追加されました。

・【シェルスクリプトを実行】のスクリプトを以下の様に変更します。受け取った最終行のデータを$folder_pathに抜き出し、1行目以降のデータから$folder_pathと一致する部分を削除しては、出力しています。
$folder_path = pop @ARGV;
$folder_path .= "/";
foreach (@ARGV) {
s/$folder_path//;
print "$_\n"
}



以上で完成です。
実行結果を見てみましょう。

どのフォルダを選択しても、選択したフォルダからのファイルパスが表示されているのが確認出来ます。

これで、基本的なアクションファイルの使い方、シェルスクリプトの使い方、変数の使い方を学びました。大体の自動処理アプリケーションはこれで作れるはずです。

今回のまとめ


・Automatorの変数は、変数アクションを使って利用する
・変数アクションは入力データを食べない
・アクションタイトルの右クリックから"入力を無視"で、データの受け取りを切ることが出来る
以上。


Automatorの変数には、他にも種類があります。
次回はそれらについて紹介します。

(Visitor:166949)

Comments

No comments yet

Add Comment

:

:
: