![見出し画像](https://assets.st-note.com/production/uploads/images/78430773/rectangle_large_type_2_b01e6752a820c85246683cb055916ffd.png?width=1200)
Keyboard Maestroでの日数計算
次のような計算をKeyboard Maestroで行います。
今日から「●日後(●日前)」の日付は?
指定日から「●日後(●日前)」の日付は?
「●月●日」は、今日から●日後(●日前)?
今日から「●日後(●日前)」の日付は?
「ICUDateTimePlus」または「ICUDateTimeMinus」を使います。
今日が5月13日、2日後の日付を調べるには次のように記述します。
%ICUDateTimePlus%1%Days%yyyy年M月d日%
Keyboard Maestroで次のように設定すると
![](https://assets.st-note.com/img/1652392251064-jQRJQzrBzm.png?width=1200)
次のように処理されます。
![](https://assets.st-note.com/img/1652392276715-DxOKyPsUp2.png?width=1200)
図解すると、次のようになります。
![](https://assets.st-note.com/img/1652401134327-N6TvSv83b4.png?width=1200)
さらに詳しくはサイトウさんのブログを参照なさってください。
念のため、公式ドキュメントはこちらです。
ダイアログボックス化+変数化
「●日後」を変数化し、ダイアログボックスで入力できるようにしましょう。
Keyboard Maestroで次のようにマクロを設定します。
![](https://assets.st-note.com/img/1652396344814-rbLuf0MT3U.png?width=1200)
これを実行すると、次のようなダイアログボックスが開きます。
「20」と入力して[OK]ボタンをクリックすると
![](https://assets.st-note.com/img/1652396181484-BkDRRldLFW.png?width=1200)
次のように処理されます。
![](https://assets.st-note.com/img/1652396187732-VkGxxjAs0s.png?width=1200)
変数名を日本語で「日数」とするのは気持ち悪いですが、問題ありません。
「●日前」は?
数字の前に「-」を付ければ問題ありませんが、ちょっと面倒です。
![](https://assets.st-note.com/img/1652396532568-oGud1SuyZe.png?width=1200)
そこでダイアログボックスに項目(ポップアップ)を追加し、「日後」「日前」を選択できるようにします。
![](https://assets.st-note.com/img/1652396657235-WZVmwGVJxJ.png?width=1200)
「日前」のときに、「日数」に入れた値の正負を変換できるように「Set Variable To Calculation」アクションを指定します。
マクロを実行すると、次のようなダイアログボックスが開きます。
![](https://assets.st-note.com/img/1652396663188-sJCaI3by0e.png?width=1200)
指定日から「●日後(●日前)」の日付は?
「%ICUDateTimeFor%」トークン
指定日の場合には「%ICUDateTimeFor%」トークンを利用します。
次のようにマクロを指定します。
![](https://assets.st-note.com/img/1652396968588-VgPvcEkJUM.png?width=1200)
実行すると、次のように処理されます。
![](https://assets.st-note.com/img/1652396962840-EiiOfJ088t.png?width=1200)
ダイアログボックス化
利用者が「年月日」を入力できるように、それぞれを変数に設定し、ダイアログボックス化します。
![](https://assets.st-note.com/img/1652397091321-zHCyE88dzG.png?width=1200)
マクロを実行すると、次のダイアログボックスが開きます。
![](https://assets.st-note.com/img/1652397104874-POklb08bB6.png?width=1200)
[OK]ボタンをクリックすると、次のように処理されます。
![](https://assets.st-note.com/img/1652397109052-Ow25tJyd9R.png?width=1200)
便宜上「5」や「13」を入れていますが、実際には空白にしておきます。
年には「%ICUDateTime%yyyy%」を入れておくとよいでしょう。
![](https://assets.st-note.com/img/1652397349514-PwDgCtpLds.png?width=1200)
「2022」は来年になると自動的にアップデートされます。
![](https://assets.st-note.com/img/1652397384937-pLXVySoprP.png?width=1200)
指定日からの計算
「%ICUDateTimeFor%」トークンに対して、次のように設定します。
%ICUDateTimeFor%TIME(年, 月, 日-日数)%yyyy年M月d日(eee)%
Keyboard Maestroのマクロは次のように設定します。
![](https://assets.st-note.com/img/1652397838857-jlZXL8jCf2.png?width=1200)
マクロを実行すると、次のダイアログボックスが開きます。
![](https://assets.st-note.com/img/1652397729321-RDjrRMjchn.png?width=1200)
[OK]ボタンをクリックすると、次のように処理されます。
![](https://assets.st-note.com/img/1652397780975-40qCvQwd82.png?width=1200)
デフォルトは「今日」、利用者が指定してもよい
次のようにマクロを指定しておくとよいでしょう。
![](https://assets.st-note.com/img/1652397895824-g6qSu5c10X.png?width=1200)
常にマクロ実行時の日付が入ります。
![](https://assets.st-note.com/img/1652397899641-v1eL9UyDpS.png?width=1200)
ここまでのまとめ
仕上げをして次の設定を行います。
クリップボードに算出した日付を入れる
このマクロで利用した変数を初期化(クリーンアップ)
![](https://assets.st-note.com/img/1652398312990-KdgzYuFgK7.png?width=1200)
メッセージに一工夫(1)
処理結果を表示するメッセージを次のようにしてみましょう。
![](https://assets.st-note.com/img/1652398587252-E82rck9uFe.png?width=1200)
まず、変数「指定日」を作成し、ダイアログボックスに入力した値から日付を作成します。
![](https://assets.st-note.com/img/1652398651794-tYTzSyyivO.png?width=1200)
この変数を利用し、次のように設定します。
![](https://assets.st-note.com/img/1652398724833-zQi7bTwBIq.png?width=1200)
これでよさそうですが、「●日後」のとき、おかしなメッセージになってしまいます。
![](https://assets.st-note.com/img/1652398850769-PnUfD1pd4w.png?width=1200)
次のように分岐処理を行います。
![](https://assets.st-note.com/img/1652399261432-tAnQbOYESf.png?width=1200)
メッセージに一工夫(2)
デフォルトの日付の場合には、次のように「今日」と表示されるのが自然です。
![](https://assets.st-note.com/img/1652400139612-czO3ksVoLV.png?width=1200)
次のように条件分岐させます。
![](https://assets.st-note.com/img/1652400287951-t5VVDOP4k5.png?width=1200)
ダウンロード
各段階を個別のマクロにしていますので、試してみてください。
ここから先は
![](https://assets.st-note.com/production/uploads/images/7425662/profile_a5ee2a599e9dc5d7e0de3dfdbdf04018.jpg?fit=bounds&format=jpeg&quality=85&width=330)
DTP Transit 定期購読マガジン
マガジン限定記事やサンプルファイルをダウンロードできます。
定期マガジンを購読されるとサンプルファイルをダウンロードいただけます。 https://note.com/dtp_tranist/m/mebd7eab21ea5