39
AppleScriptで日々の家事を自動化

先日の朝、ふと自問自答しました。私は人間なのか、それともロボットなのか? オフィスのパソコンを起動し、あるプログラムを手動で起動したり、他のプログラムのステータスを変更したりした時に、その疑問が湧きました。

「AppleScript があるのに、なぜ毎朝毎晩同じ一連の繰り返しタスクを実行するのだろう?」と自問しましたが、自分の質問に自分では答えられませんでした。

そこでAppleScriptエディタ(アプリケーション/ユーティリティ)を起動し、入力を始めました。目標は、毎日のコンピューター作業の始めと終わりに行う小さなステップをすべて実行するスクリプトを作成することでした。そして、完成したのがこれです。

s を設定してダイアログ「到着または出発?」ボタン [“到着”, “出発”] を表示し、デフォルトボタンは “到着” です。s から返されたボタンが “到着” と等しい場合、アプリケーション "Mailsmith" に自動チェックの有効化を true に設定し、メールをチェックします。end tell アプリケーション "iChat" にアクティブ化します。ログインします。ステータスメッセージを "作業中" に設定します。end tell アプリケーション "Echofon" にアクティブ化します。end tell アプリケーション "NetNewsWire" にアクティブ化します。end tell アプリケーション "iChat" に終了させます。end tell アプリケーション "Mailsmith" に自動チェックの有効化を false に設定します。end tell アプリケーション "Echofon" に終了させます。end tell アプリケーション "NetNewsWire" に終了させます。end tell アプリケーション "Finder" にアクティブ化します。最前面を true に設定します。visible が true で、名前が "Finder" ではないすべてのプロセスの visible を false に設定します。end tellend if

スクリプトの最初の行は、到着か出発かを尋ねるダイアログボックスを作成し、デフォルトの回答を到着に設定します。追加のオプションを追加するには、 の後のリストに引用符で囲み、カンマで区切って入力しますbuttons。例えば、

[「到着」「昼食」「昼食後」「出発」]

次の行はレスポンスを確認します。「Arriving」をクリックすると、スクリプトは最初の一連のアプリケーションアクションを実行します。「Departing」をクリックすると、2番目のバッチ( の後else)を実行します。

AppleScriptを初めてお使いになる方へ:各アクションのフォーマットは同じです。 でtellプログラムを指定し、インデントされたブロックでそのプログラムの動作を指定し、 でend tellそのセクションを終了します。インデントされたブロック内のコマンドの中には、汎用コマンド(activate)と、特定のプログラムに固有のコマンドがあります。後者はAppleScriptエディタのライブラリ(ウィンドウ -> ライブラリ)にあります。必要なプログラムが見つからない場合は、ライブラリウィンドウ上部の +(プラス記号)をクリックし、アプリケーションフォルダからプログラムを選択してください。

たとえば、私の電子メールクライアント Mailsmith では、自動チェックのプロパティを変更するコマンド ( set auto checking enabled to true) と、 を追加するコマンドをそれぞれ1 つずつ追加しましたcheck mail。iChat でも同様に、log inは単純なコマンドですが、 はset status message to "Working"少しだけ複雑です。

スクリプトを使えば、どんなアプリケーションでも朝一番に自動起動させることができます。もちろん、システム環境設定のアカウントパネルで、ユーザーアカウントのログイン項目リストに追加することも可能です。しかし、AppleScriptでは、起動のタイミングや方法をより細かく制御できるので、私は気に入っています。

スクリプトをアプリとして保存
スクリプトを簡単に実行できるようにするには、スクリプトをアプリケーションとして保存します。

このスクリプトを簡単に実行できるように、AppleScriptエディタでアプリケーションとして保存します(「ファイル」→「名前を付けて保存」を選択し、ファイル形式として「アプリケーション」を選択)。これで、いつでも実行できる自己完結型のアプリケーションが作成されます。もし本当に厳密に実行したい場合は、毎朝9時と毎晩5時にアプリを起動するiCalイベントを追加することもできますが、私はそういうやり方はしません。

このスクリプトは、毎日ほんの少しの時間しか節約できないかもしれません。しかし、数年かけて積み重ねれば、ロボットのように作業する必要のない時間に、数十時間もの節約になるのではないかと思います。