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

Alfredを最大限活用する、ブラウザのブックマーク管理方法について
Karabiner-Elementsを使ってright_command + h/j/k/lで矢印の入力ができるようにする
Stationで複数のGoogleアカウントでGoogle Driveを使用する方法
Webサイト全体をキャプチャするならFull Page Screen Captureがおすすめ
Alfred 4の無料版と有料版(Powerpack)で使える機能比較
Illustratorのサンプルテキストの割り付けを少しだけ便利にする
ATOKの変換領域(文節区切り)を選択しやすくするカスタマイズ
WebデザイナーがやっておきたいGoogle Chromeの設定方法あれこれ
macOSのシステム環境設定「Spotlight」の設定見直し
Google関連サービスをすばやく確実に変換するための単語登録サンプル
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法