Blueickx Blog

Mac User Productivity & MacOS Automation

きょうの日付をクリップボードに入れるスクリプト

日付をさっと入力したいだけ、でも日付フォーマットが...

仕事でもプライベートでも、記録する文章を書いているときには、今日の日付を入力することはしょっちゅうある。

一番簡単な方法は、キーボードで「きょう」と打って変換すると、仮名漢字変換の候補の4番目くらいに、今日の日付が出てくるのでそれを選択すればよい。

しかし、今使っているmacOS Catalinaの仮名漢字変換では、日付のフォーマットはスラッシュ区切りの YYYY/MM/DD には変換してくれるのだけれど、年月日をハイフンで繋ぐ YYYY-MM-DD の形式は、変換候補に出してくれないようなのだ。

f:id:ickx:20200921002449p:plain
macOS Catalina 日本語かな漢字変換で「きょう」と打ってみる

以前、ATOKを使っていた時は、「きょう」と打ったあとの仮名漢字変換の候補も、自分の好きな日付フォーマットが選べたのだけれどね。いまの macOSではそうなっていない。

macOSの日付のフォーマット自体は、ちょっとややこしいが、macOSのシステム環境設定 > 言語と地域 > 詳細... を選ぶと、かなり自由に設定できる(下の画面)。だけど、ここの設定は仮名漢字変換システムには連動してくれない。

f:id:ickx:20200921002937p:plain
macOS システム環境設定 言語と地域

f:id:ickx:20200921003037p:plain
macOS システム環境設定 日付形式

そこで、仮名漢字変換の代わりに、AppleScript で 今日の日付をクリップボードにコピーする1行スクリプトを書いてみた。

今夜のScript

set the clipboard to short date string of (current date)

欲しい結果は、今日の日付を、YYYY-MM-DD の形式でクリップボードにコピーして入れるだけ。 あとはアプリケーションの種類に関係なく、キーボード cmd + V でペーストするだけだ。 なお日付フォーマット自体は前出のシステム環境設定で設定しておく必要がある。

1行ではあんまりなので、発展しやすいように3行にしてみた。

3行バージョン

set today to short date string of (current date)

set the clipboard to today

say "I got a date."

実行時にインタラクティブな反応があった方が確認になるので、こういう時は、say コマンドで一瞬でも何か mac に喋らせてみるのが簡単でよいです。

AppleScriptメニューに置くとどのアプリケーションでもアクセスできる

スクリプト自体はこんなものだが、実際にさっと使って入力するには、どのアプリケーションからでも、すぐアクセスできるよう、スクリプトの置き場を工夫して、共通の場所に置く(UIを共通にする)のがポイント。

  1. ウインドウのツールバーにアプリケーションにして設置
  2. メニューバーのAppleScriptメニューのスクリプトフォルダへ置いて、どのアプリケーションからもプルダウンメニューに共通で表示されるようにする
  3. ショートカットキーをアサインする(未検証)
  4. Siri に学習させてアプリを起動させる(未検証。できるだろうか?)

いくつか考えたが、今のところ、2番目でうまくいっている。

f:id:ickx:20200921005430p:plain
メニューバーの右に並んだAppleScriptメニューからスクリプトを起動できる

今日の日付の入力機能があるアプリケーション

macOS側ではなく、アプリケーション側の機能で今日の日付を入力してくれるものもある。

それぞれが微妙にフォーマットが違ったり、ショートカットキーが違うのを、システム環境設定で設定し直したりしているから、 希望としてはmacOS仮名漢字変換で、候補に出してくれるのが一番良い。

入力候補も「きょう」「きのう」「あした」だけでなく、「来週の水曜日」とか「来月第3金曜日」とかも、カレンダー日付を候補に出して欲しいな。