AppleScript – execute from Command Line

5月 19, 2009

説明:

簡単なAppleScript の説明と、コマンドラインから実行する方法について解説します。

Apple Script とは

Mac に標準でインストールされ、ほとんど全てのアプリを操作することができる、パワフルで簡単な、、、あんまり流行ってない言語です。自然言語に近づけた、ちょっと回りくどい文法が特徴です。

コマンドラインとは

ターミナル.app(またはそれに準ずるもの)からアクセスできる、CUI (Character-based User Interface) です。Linux 等からOS X に入った方で、Mac のコマンドラインに馴染みの無い方は、

$say hello

とかやるとビックリするかも。

$open .

とかね。

AppleScript プチ入門:

1. アプリケーションフォルダにある、スクリプトエディタ.appを起動します。

ScriptEditorIcon

2. 次の3行を入力します。


tell app "itunes"
play
end tell

AppleScript-Editor

3.実行ボタンを押します。

(app がapplication に、itunes がiTunes に、自動で修正されます。)

4.実行できることが確認できたら、デスクトップにテキスト形式で保存します。

(フォーマット:テキスト 改行:Unix (LF) )

テキストファイルなので、テキストエディタでも作成出来ます。

AppleScript は他のアプリケーションを操作するために使われることがほとんどです。そのため、対象となるアプリケーションがどのようなコマンドで受け付けるのか、調べる必要があります。

スクリプトエディタのファイルメニューにある「用語説明を開く…」から、使いたいアプリケーションを選択するか、アプリケーションのアイコンをスクリプトエディタのアイコンにドラッグ&ドロップすれば、用語説明が開きます。(説明を書いていて気づいたのですが、スクリプトエディタ.app は自分自身をドラッグ&ドロップで開くことができますね。)

iTunes の用語説明を開いてください。用語説明の内容は難しいので詳しい説明はしません。

AppleScript-Dictionary

iTunes Suite の中にある[back track / next track / pause / play / stop]等を確認してください。これらは引数が要らないので説明も簡単です。

コマンドラインからの実行:

osascript というコマンドがあります。デスクトップに itunes-play.applescript という名前で保存した場合の実行例

(先頭の$ はコマンドプロンプト)


$cd ~/Desktop
$osascript itunes-play.applescript

第一引数にファイル名を渡すだけです。あるいは、標準入力にパイプして

$cat itunes-play.applescript | osascript

というやり方もできます。

osascript コマンドは OSA (Open Scripting Architechture) に対応したスクリプトを実行するコマンドですが、デフォルトでAppleScript が指定されています。詳しくは、

$man osascript

を読んでください。

-e オプションでスクリプトを1行渡すことができます。

-e オプションは複数つけることができます。

$osascript -e 'tell app "iTunes"' -e 'playpause' -e 'end tell'

この3行の AppleScript は、1行にまとめることができます。

$osascript -e 'tell app "iTunes" to next track'

これで、AppleScript をコマンドラインから実行することができるようになりました。次回はQuatz Composer からコマンドを呼ぶ方法について説明します。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。