# Macを起動したのが平日か休日か判定して、起動するアプリを変えるKeyboard Maestroマクロの作り方 URL: https://webrandum.net/keyboard-maestro-check-day-of-week/ 公開日: 2020-02-20 更新日: 2020-02-20 カテゴリー: 作業効率化 タグ: Keyboard Maestro 出典: Webrandum(著者: サイトウ マサカズ) 仕事のときはStationというチャットサービス統合アプリを使い、プライベートではStackというチャットサービス統合アプリを使っています。 それぞれのアプリで管理しているサービスは下記の通りです。 | アプリ | 主要管理サービス | | --- | --- | | Station | Slack・ChatWork・Skype | | --- | --- | | Stack | Twitter・Facebook Messenger・Todoist | | --- | --- | このように仕事で使うサービスとプライベートで使うサービスを、別アプリで管理しています。 こうすれば仕事をしているときはStationを起動しておけば、プライベートの通知を気にせずに済みます。 逆に、仕事が終わればStationを終了してStackを起動すれば、仕事用の通知は気にせずに済みます。 しかしMacにログインするたびに、StationもStackも両方起動してしまっては本末転倒です。 そこで、Keyboard Maestroを使って、Macを起動した曜日や時間に応じて起動するアプリを変えるマクロを作ってみました。 ## ログイン用のトリガー Keyboard Maestroでログイン時に発火するマクロを作るときは「Login Trigger」を使います。 ![Login Triggerの設定](https://webrandum.net/mskz/wp-content/uploads/2020/02/image_1-19.png) ## ログイン時の時間と曜日を判定する 次はアクションの作成ですが、考え方は「曜日と時間が指定したものと一致していたらStation、それ以外ならStackを起動させる」なので、その順にアクションを並べていきます。 ### ログインした時間と曜日の取得 まずは「Set Variable」アクションで「ログインした曜日」と「ログインした時間」を変数に入れます。 ![ログインした時間と曜日の取得](https://webrandum.net/mskz/wp-content/uploads/2020/02/image_2-17.png) ``` LoginDayOfWeek(ログインした曜日)%ICUDateTime%EEE% ``` ``` LoginTime(ログインした時間)%ICUDateTime%HH% ``` これでログインした曜日とログインした時間が取得できました。 ### 判別用の変数の初期化 次に取得した曜日と時間が、条件に一致するか判別するために、「checkDayOfWeek」と「checkTime」という名前の判別用の変数を作成し、中身を「false」にしておきます。 ![判別用の変数の初期化](https://webrandum.net/mskz/wp-content/uploads/2020/02/image_3-16.png) これで時間や曜日が条件に一致している場合は中身を「true」にします。 ### 条件に合致する時間と曜日か判別 次にFor Eachアクションを使って、「Lines In Collection」で「Text」を設定します。 これは記述した行を、指定した変数にいれながらループしてくれるアクションです。 今回の場合は平日かどうか判別したいので、変数は「setDayOfWeek」で中身は「月〜金」を改行して入力します。 ![条件に合致する時間と曜日か判別](https://webrandum.net/mskz/wp-content/uploads/2020/02/image_4-10.png) あとはIf Then Elseアクションで「LoginDayOfWeek」と「%Variable%setDayOfWeek%」がマッチするかどうか条件分岐をします。 そしてtrueのときは「checkDayOfWeek」の中身を「true」に変更します。 また、1度でも「true」になったら、それ以降はループを回す必要がないのでBreakアクションでループを終了させます。 同じことを「時間」の方でも行います。 ### アプリの起動 これで時間と曜日の判別は完了したので、最後にアプリの起動部分を作ります。 特に問題ないと思いますが、自分の場合はアプリ起動の前にPauseアクションで15秒ほど時間を空けています(遅延起動も兼ねて)。 ![アプリの起動](https://webrandum.net/mskz/wp-content/uploads/2020/02/image_5-8.png) If Then Elseアクションを使って「checkDayOfWeek」と「checkTime」の2つの変数がどちらも「true」の場合にActivate a Specific Applicationを使ってStationを起動させます。 それ以外の場合はStackを起動させればOK。 これで完成です。 ## まとめ Login Triggerを使えば、Macを起動させるだけでマクロが発火するので面白いですよね。 今回はアプリ1つずつですが、複数アプリの起動もできますし、工夫次第でいろいろできそうです。 - アプリではなく特定サイトを開く(平日は勤怠管理のサイトを開く) - 曜日ではなく日時で発火させる(毎月1日に目標を管理しているアプリを開く) - 夜中に起動したら自動で明るさを暗くする