AppleScript のサンプルコード

2016.04.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

書いてみよう

今回はこれまでに学んだことを参考に、実際に動くスクリプトを紹介しようと思います。

アプリ起動

アプリの起動には activate コマンドを使用します。
activate コマンドはアプリが起動していなければ起動し、起動していればアプリのウィンドウを最前面に表示します。

tell application "Google Chrome"
    activate
end tell

tell application の後には起動したいアプリケーションを指定します。
ここに入る文字列は、スクリプトエディタで「用語説明」を開いた時にウィンドウのヘッダーに表示される文字列です。
(※ソース無し。これで動きました。間違えてたらごめんなさい)

1

アプリ終了

アプリの終了には quit コマンドを使用します。

tell application "Google Chrome"
    quit
end tell

フォルダを開く

フォルダを開くには open コマンドを使用します。
open folder でそのフォルダを開きます。

tell application "Finder"
    activate
    open folder "nice_folder" of desktop
end tell

この例では、デスクトップにある nice_folder というフォルダを開いています。
また、この例の open folder の行は以下のように書き換えることも可能です。

open folder "Macintosh HD:Users:tanakakeisuke:Desktop:nice_folder"

パスは / ではなく : で区切ります。

ウィンドウをすべて閉じる

ウィンドウを閉じるには close コマンドを使用します。

tell application "Finder"
    close every window
end tell

この例では、現在開いている Finder のウィンドウを全て閉じています。
なかなか便利でした。

キーボード操作

キーボードを操作したように振る舞いたい場合は、keystrokekey code コマンドを使用します。

tell application "TextEdit"
    activate
    tell application "System Events"
        keystroke "Hello"
    end tell
end tell

テキストエディットを開き、「Hello」と入力するスクリプトです。
System Events というアプリに対して命令を送っています。

tell application "TextEdit"
    activate
    tell application "System Events"
        key code 49
    end tell
end tell

スペースキーなど特殊なキーを入力したい場合は key code コマンドを使用します。
スペースキーは数字の 49 に割り当てられています。
key code 一覧はこちら

また、これらは以下のキーを押しながら、というような指定も可能です。

  • コマンドキー
  • コントロールキー
  • オプションキー
  • シフトキー
keystroke "ac" using command down  -- コマンドキーを押しながら ac(全選択&コピー)
key code 49 using {control down, shift down}  -- コントロールキー、シフトキーを押しながらスペース

応用

以下の処理をスクリプトで実行します。

  • デスクトップ 1 で Safari を開く
  • デスクトップ 2 で Terminal を開く
  • デスクトップ 3 で TextEdit を開き「I have a bad feeling about this.」の文字列を入力する。

デスクトップ n への移動は コントロールキーと数字 n キー で実行できます。
ショートカットを設定していない場合は、システム環境設定の「キーボード」から設定を有効にしましょう。

2

controlDown(18) -- control 1
setupSafari()
delay 0.2

controlDown(19) -- control 2
setupTerminal()
delay 0.2

controlDown(20) -- control 3
setupTextEdit()

on controlDown(keycode)
    tell application "System Events"
        key code keycode using control down
    end tell
end controlDown

on setupSafari()
    tell application "Safari"
        activate
    end tell
end setupSafari

on setupTerminal()
    tell application "Terminal"
        activate
    end tell
end setupTerminal

on setupTextEdit()
    tell application "TextEdit"
        activate
    end tell

    tell application "System Events"
        keystroke "I have a bad feeling about this."
    end tell
end setupTextEdit

最後の文字入力部分が思ってたより気持ちよかった(笑)

処理が早すぎて画面が遷移できていないので delay コマンドで処理を遅延させました。
また、各処理をメソッド化しています。
AppleScript ではこれらをメソッドではなく、ハンドラと呼ぶようです。

リンク

ミレニアム・ファルコン製作日記 #13

13 号 表紙

mfd_13_1

パーツ

mfd_13_2

mfd_13_3

mfd_13_4

成果

mfd_13_5

mfd_13_6

mfd_13_7

今回の作業は以下の 5 つでした。

  • 主船倉の床と壁を組み立てる
  • ラウンジシートを取り付ける
  • 主船倉床に船倉壁を取り付ける
  • パイプ架台を取り付ける
  • パイプを取り付ける

主船倉の壁は 6 面ありますが、今号ではこの内の 5 面を組み立てました。

作ってみてわかりましたが、この部屋には多くのパイプが存在します。
スター・ウォーズのデザインチームは、それぞれのパイプがどこかにつながっていて、すべてのスイッチが何かを制御しているように見えることの重要性を強調したそうです。
魂を感じますね。
素敵です。

ローグ・ワン/スター・ウォーズ・ストーリー

スター・ウォーズのスピンオフ作品「ローグ・ワン」の特報が公開されました!

「ローグ・ワン/スター・ウォーズ・ストーリー」特報

2016 年 12 月公開予定。
楽しみだー

それではまた次回。

May the Force be with you!