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日に目標を管理しているアプリを開く)
- 夜中に起動したら自動で明るさを暗くする

データベースの操作がGUIで分かりやすく操作できるSequel Proの最低限の使い方
ターミナルの$記号前の表示を自由にカスタマイズする
Path Finder 10がリリース!Big Surに完全対応したり、AirDropが使えるように!
Drive File Streamで接続しているGoogle Drive内の検索をするAlfred Workflowの作成方法
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Evernoteで特定のタグを除外して検索する方法
Workspacesに新たな機能を追加する「プラグイン」の追加方法と使い方
テーブルタグ一式をすばやく・ラクに入力するためのスニペットサンプル
Gmailでとりあえず最初にしておくと便利な設定
Stationで複数のGoogleアカウントでGoogle Driveを使用する方法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」