GO BACK

初心者のためのAppleScript教室


「フィルターについて」


■「every」の使い方


AppleScriptの中で、やや使いこなしが難しく、しかし覚えれば絶大な効果を発揮するのが「フィルター」です。これは、特定条件のオブジェクトを全てまとめて操作する機能です。

 フィルターの基本は「すべてを指定する」というものです。


tell application "Finder"
	set Obj to control panels folder
end tell

 例えば、このようなスクリプトを実行してみましょう。変数Objには、「folder "コントロールパネル" of folder "システムフォルダ" of startup disk of application "Finder"」といったような、コントロールパネルフォルダの参照が収められるはずです。

 では、次のようにするとどうなるでしょうか。


tell application "Finder"
	set Obj to every item of control panels folder
end tell

 このスクリプトでは、変数壱の中身は、コントロールパネルフォルダの中にある全ファイルの参照のリストになるのです。

 ここで使われている「every 〜」というのが、フィルターの基礎となるものです。これは、


every《種類》of《調べる場所》


こんな形になります。また、everyを使わず、もっと簡単に《種類》の後に複数形のsをつけても同様のことができます。「items of control panels folder」という具合ですね。――例えば、


every folder of system folder


これで、システムフォルダの中にある全フォルダのリストが得られます。なかなか便利な機能ですね。


■条件をもたせる


これに、更に条件式をもたせたものが「フィルター」です。条件は「whose(またはthat) 〜」という形でもたせます。


《対象となるもの》whose《条件式》


こんな形となるわけです。例えば、


tell application "Finder"
	make alias at desktop to every control panel of control panels folder whose name contains "設定"
end tell

このようにしてみると、「設定」という文字列を含む全てのコントロールパネルのエイリアスがデスクトップに作成されます(さて、いくつできたでしょう?)。

 ここでは「make alias at desktop to ××」という形でエイリアスを作ってます。その「作る対象」としてフィルターが使われています。「every control panel of control panels folder whose name contains "設定"」ということは、「every control panel of control panels folder」(「コントロールパネル」フォルダの中のすべてのコントロールパネル)の中で、「name contains "設定"」(nameに"設定"というテキストが含まれているもの)という条件に合うものを指定しているわけですね。

 このように、条件を設定してやることで、その条件にあったものを全てまとめて扱えるようになる−−それがフィルターです。


■条件式特有の表現について


この例題で使った「contain 〜」というのは、文字列を使った条件式を作る際に多用されるものです。同様のものがいくつかあるので、まとめて紹介しておきましょう。


●《文字列1》contain《文字列2》●

文字列1の中に文字列2が含まれているかどうかをチェックします。


●《文字列1》starts with《文字列2》●

文字列1の冒頭が文字列2で始まっているかどうかをチェックします。


●《文字列1》ends with《文字列2》●

文字列1の末尾が文字列2で終わっているかどうかをチェックします。


●《文字列1/数値1》is equal to《文字列2/数値2》●

文字列や数値で、両者が同じかどうかをチェックします。


 フィルターは、この「条件式をいかに組み立てるか」がポイントとなるといってよいでしょう。

GO NEXT


GO HOME