AppleScriptの概要と主要コマンド(随時更新)
動機
私はもとより自動化が興味の中心にいて、Gitなど繰り返しタスクを自動化しています。
その一連の過程で、開発者(=私)に対してフィードバックをするときに、AppleScriptを使って通知などを制御していました。
そのようなものづくりに関しての知見は、普段は一人チームのEsaにメモを付けていますが、今回、日本語の記事にして知見を広めようと再編纂を試みています。
自動化でなくても、何かしらAppleScriptに興味があれば少し役に立つ事が書いてあるかもしれません。
ぜひ、ご一読を。
目次
本記事の目次は以下のようになっています。
AppleScriptについて
AppleScriptについて知るべき基本的なことを解説します。
AppleScriptとは
公式ドキュメントは以下のリンクであります。
Appleによって作成された言語で、開発者が直接Macintoshアプリケーションを成業することを可能とするmacOSそれ自体の一部です。
繰り返しタスクを自動化したり、複数のアプリケーションの機能を合わせたり、複雑なワークフローを定義することができます。
自動化を簡単に定義できるAutomatorというアプリケーションがデフォルトで入っていますが、今回はスクリプトから制御したいのでここで学びます。
AppleScriptはApple Eventsと呼ばれるスクリプトがアプリケーション対象に送られる内部アプリケーションのメッセージを担当します。
シェバングは以下のようにすると実行をできるようになります。
#!/usr/bin/osascript
ターミナルでも
osascript -e 'display notification "hogehoge" with title "Fuga"'
のように実行することができます。シェルスクリプトの中で使うには以下のようにPATHを指定してあげるといいかもしれません。
/usr/bin/osascript -e 'tell application "Finder" to get POSIX path of (target of window ${ID} as string)'
-e
を連ねることで複数のコマンドを逐次的に実行することができます。
osascript -e 'display notification "hogehoge" with title "Fuga"' -e 'say "My task is done"'
文法
開発する中で必要になる基本的な文法を解説していこうと思います。
set x to y: 変数宣言
変数を定義したいときは以下のように定義します。
set hoge to 4
list: リスト
リストは以下のように書きます。
set myList to {"hoge", 2, "piyo"}
リストにアクセスするにはいくつかの方法があります。例えば3爪の要素にアクセスしたいときは
item 3 of myList third item of myList myList's third item myList's item 3
osascriptとは
osascriptとは、AppleScriptを実行するためのコマンドです。
以下のように実行できます。
osascript <file> osascript -e [SCRIPT]
主要コマンド
アルファベット順で主要なコマンドをリストしています。
command | description |
---|---|
activate |
アプリケーションをアクティベート状態にする |
display alert |
アラートを通知 |
display dialog |
ダイアログを通知 |
display notification |
通知を表示 |
random number |
乱数を出力 |
set the clipboard to |
クリップボードにデータもcopyする |
全ては以下のリンクでご覧ください。
activate
: アプリケーションをアクティベート状態にする
アクティベート状態とは、以下のようにフォーカスがあたっていて、もっとも前にある状態のものです。少し古い画像なのですが、エクスタシーを感じるので以下の画像を引用させていたただきます。
以下のように実行します。
osascript -e 'activate application "Slack"'
ここではSlackがアクティベートされます。
必須
application
: applicationを呼び出す必要がある
display alert
: アラートを通知
osascript -e 'display alert "display alert" buttons {"cancel", "OK"}'
必須
なし
オプション
message
: アラートの内容buttons
: 3つまでボタンを指定default button
: デフォルトのボタンがどちらなのかを指定cancel button
: 拒否的なアクションを起こすボタンを指定as
: アラートの種類を指定-
infomational
: スタンダードなアラートダイアログ -
warning
: 警告 -
critical
: スタンダートな通知と現在は一緒の仕様
-
giving up after
: アラートが消滅するまでの秒数
戻り値
以下のようなレコードが返ってきます。
{button returned: "OK"}
display dialog
: ダイアログを通知
ダイアログ通知を表示します。
osascript -e 'display dialog "hoge"'
必須
text
: 表示するテキスト
オプション*
default answer
: プレースホルダーhidden answer
: パスワードのように*
で入力を隠すものbuttons
: 3つまでボタンを指定default button
: デフォルトのボタンがどちらなのかを指定cancel button
: 拒否的なアクションを起こすボタンを指定with icon
: アイコンを指定することができるgiving up after
: アラートが消滅するまでの秒数
戻り値
以下のようなレコードが返ってきます。
{text returned:"Cupertino", button returned:"OK"}
display notification
: 通知を表示する
osascript -e 'display notification "hogehoge" with title "Fuga"'
必須なもの
text
: 通知の内容
オプション
with title
: タイトルsubtitle
: サブタイトルsound name
: 通知音の指定
set the clipboard to
: クリップボードにデータをコピーする
データをクリップボードにコピーします。
osascript -e 'set the clipboard to "hoge"'
必須
text
: コピーするテキスト
random number
: 乱数を出力
乱数を簡単に出力できます。
osascript -e 'random number from 1 to 10'
オプション
from
: 数字のはじまりto
: 数字の終わりwith seed
: 乱数のシード値を決定
まとめ
AppleScriptを使うと、日常的な作業が簡単に自動化できると感じました。
これからバンバンに使ってみようと思います。