見出し画像

「ペーストするたびに、数字を1ずつ増やしてく」を#KeyboardMaestroで実現する

2024年1月27日、日付の増加に対応できるようにアップデートしました。

以前、ごんさんがこのようなツイート(ポスト)をされていました。

その後、やりとりをしてアルファベットに対応するなど、手を入れてきたのですが、次に挙げる数字への対応がペンディングになっていました。

  • 「0001」「Section 001」のような0付き数字

  • 「1-1」「1-2-3」のようなハイフン付き

なんとかカタチになったので、そのロジックを解説します。
なお、値を1増やすことは〈インクリメント〉と呼びます。

「0001」「Section 001」のような0付き数字

「0001」「Section 001」はゼロパディングと呼ばれます。英語圏でも「zero padding」で通じるようです。

With Format

まずは基本から。

Set Variable To Calculationで[Format Result]オプションをONにすることで計算結果に表示形式を適用できます。

  • 変数numに「1」を設定

  • Set Variable To Calculationで「変数num」をインクリメントしつつ、[With Format]で「000」を指定

計算結果の「2」が「002」としてアウトプットされます。

最初のアクションで変数「num」の値を変更すれば結果の値も変更されます。

「Section 9」をインクリメントしつつ「Section 010」にするには、次のように設定します。

これで完成!と思いきや、ユースケースとして求められる桁数はさまざまです。それに対応する方法を考えます。

繰り上がりで 桁数が足りない場合

「Section 9999」をインクリメントして「With Format:000」を指定したらどうなるのか心配ですよね…

特に何もケアする必要なく、「Section 10000」が返ります。ナイス!!!

桁数を計算

そもそもの命題が「「ペーストするたびに、数字を1ずつ増やしてく」ことですので、求められる桁数はクリップボード内の数字を参照すればいいわけです。

「CHARACTERS(0005)」と記述すると、桁数の「4」が返ります。

「CHARACTERS(%Variable%num%)」のようにカッコ内に変数の指定も可能です。

ところがここで問題… [With Format]フィールドは変数を参照できないのです…

CalculateFormat

変数アクションで[With Format]を使う代わりに、CalculateFormatを使うことを考えてみます。

「%CalculateFormat%num + 1%0000%」のように指定すると、変数「num」をインクリメントしつつ、「0000」で表示します。

表示形式を変数化する

変数「digit」を作成、表示形式「0000」を入れておきます。

この変数を参照するため、次のように記述します。

\%CalculateFormat\%num+1\%%Variable%digit%\%

変数を参照している箇所「%Variable%digit%」以外の「%」の前に「/」を入れてエスケープします。

ただし、これだけでは計算されないので、[Filter with Process Tokens]アクションを“おまじない”のように入れておきます。

全体像はこんな感じ。

桁数と同じ数だけ0を繰り返す

対象とする値から桁数分の0を返すことを考えます。つまり、「0123」のとき、「0000」が戻るようにします。

いくつかのアプローチがあると思いますが、今回は次のようにしてみました。

  • 変数「digit」に「0」を指定→ これをAppendする設定にする
    ※Appendは追加していくこと

  • Repeat Actionsで回数を指定

上記の場合、実行すると「000」が返ります。

対象とする値が「0123」のとき、ここから「0000」を返す場合は、次のように設定します。

日付への対応

次のようなフォーマットの日付に対応できるようにアップデートしました。西暦が入っていない場合には「今年」と考えます。

  • 3月31日

  • 2024年3月31日

  • 2024年3月31日(土)

  • 2024年3月31日(土)

  • 2024年3月31日[土]

  • 2024年3月31日(土曜日)

  • 2024年3月31日(土曜日)

  • 2024年3月31日[土曜日]

  • 3月31日(土)

  • 3月31日(土)

  • 3月31日[土]

  • 3月31日(土曜日)

  • 3月31日(土曜日)

  • 3月31日[土曜日]

ダウンロード

ここまでのマクロです。

アルファベットなどを含んだ完全版です。

ここから先は

5字 / 1ファイル

¥ 200

PayPay
PayPayで支払うと抽選でお得 〜1/7まで
ポイント
抽選でnoteポイント最大100%還元 〜1/9まで

定期マガジンを購読されるとサンプルファイルをダウンロードいただけます。 https://note.com/dtp_tranist/m/mebd7eab21ea5