Macを起動したのが平日か休日か判定して、起動するアプリを変えるKeyboard Maestroマクロの作り方

仕事のときはStationというチャットサービス統合アプリを使い、プライベートではStackというチャットサービス統合アプリを使っています。
それぞれのアプリで管理しているサービスは下記の通りです。
| アプリ | 主要管理サービス |
|---|---|
| Station | Slack・ChatWork・Skype |
| Stack | Twitter・Facebook Messenger・Todoist |
このように仕事で使うサービスとプライベートで使うサービスを、別アプリで管理しています。
こうすれば仕事をしているときはStationを起動しておけば、プライベートの通知を気にせずに済みます。
逆に、仕事が終わればStationを終了してStackを起動すれば、仕事用の通知は気にせずに済みます。
しかしMacにログインするたびに、StationもStackも両方起動してしまっては本末転倒です。
そこで、Keyboard Maestroを使って、Macを起動した曜日や時間に応じて起動するアプリを変えるマクロを作ってみました。
ログイン用のトリガー
Keyboard Maestroでログイン時に発火するマクロを作るときは「Login Trigger」を使います。

ログイン時の時間と曜日を判定する
次はアクションの作成ですが、考え方は「曜日と時間が指定したものと一致していたらStation、それ以外ならStackを起動させる」なので、その順にアクションを並べていきます。
ログインした時間と曜日の取得
まずは「Set Variable」アクションで「ログインした曜日」と「ログインした時間」を変数に入れます。

LoginDayOfWeek(ログインした曜日)%ICUDateTime%EEE%LoginTime(ログインした時間)%ICUDateTime%HH%これでログインした曜日とログインした時間が取得できました。
判別用の変数の初期化
次に取得した曜日と時間が、条件に一致するか判別するために、「checkDayOfWeek」と「checkTime」という名前の判別用の変数を作成し、中身を「false」にしておきます。

これで時間や曜日が条件に一致している場合は中身を「true」にします。
条件に合致する時間と曜日か判別
次にFor Eachアクションを使って、「Lines In Collection」で「Text」を設定します。
これは記述した行を、指定した変数にいれながらループしてくれるアクションです。
今回の場合は平日かどうか判別したいので、変数は「setDayOfWeek」で中身は「月〜金」を改行して入力します。

あとはIf Then Elseアクションで「LoginDayOfWeek」と「%Variable%setDayOfWeek%」がマッチするかどうか条件分岐をします。
そしてtrueのときは「checkDayOfWeek」の中身を「true」に変更します。
また、1度でも「true」になったら、それ以降はループを回す必要がないのでBreakアクションでループを終了させます。
同じことを「時間」の方でも行います。
アプリの起動
これで時間と曜日の判別は完了したので、最後にアプリの起動部分を作ります。
特に問題ないと思いますが、自分の場合はアプリ起動の前にPauseアクションで15秒ほど時間を空けています(遅延起動も兼ねて)。

If Then Elseアクションを使って「checkDayOfWeek」と「checkTime」の2つの変数がどちらも「true」の場合にActivate a Specific Applicationを使ってStationを起動させます。
それ以外の場合はStackを起動させればOK。
これで完成です。
まとめ
Login Triggerを使えば、Macを起動させるだけでマクロが発火するので面白いですよね。
今回はアプリ1つずつですが、複数アプリの起動もできますし、工夫次第でいろいろできそうです。
- アプリではなく特定サイトを開く(平日は勤怠管理のサイトを開く)
- 曜日ではなく日時で発火させる(毎月1日に目標を管理しているアプリを開く)
- 夜中に起動したら自動で明るさを暗くする



日々の制作をラクにするTips #1日1Tips – 2019年10月
Alfredを立ち上げたら自動で入力モードを「英数」に切り替える設定方法
macOS CatalinaでもQuick Lookのサードパーティー製プラグインを使う方法
Client Folder Makerでファイルの中身まで一括で作成する方法
連絡先.appを活用して他人のメールアドレスなどの情報を管理する方法
SourceTreeでURLからクローンするときに自動で入力される「保存先のパス」を変更する方法
Macのプレビュー.appを使って画像のトリミングを行う方法
macOSのシステム環境設定「デスクトップとスクリーンセーバ」の設定見直し
weblocファイルを作成してサイトのリンク情報をFinder上に保存しておく方法
MacでYouTubeの動画再生速度を4倍速にする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
macOSの効率化に関するDiscordコミュニティ「CMD-F」を立ち上げました
1Passwordの開発者向け機能(SSH Agent / Environments / 1Password CLI / Developer Watchtower)
Default Folder Xで保存ダイアログ内のファイルリストにフォーカスする方法
Obsidianで整理した知識をAnkiで定着させる方法
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理