使用環境
MacBook Air (M1, 2020)
macOS Sonoma 14.2.1
Automator 2.10 (523)(OS標準付属)
Google Chrome 140.0.7339.133 (arm64) — 動作確認に利用
前置き
職場ではWindowsを使っておりMacにはまだ不慣れです。手探りの中、一つずつ確認しながら進めた上で、結果一定程度目的を達成できました。
今後似た動機を得た方が悩む時間を少しでも減らせるように、その経緯をまとめます。
詳細な操作イメージについては下記 @nak435 -さんの記事に、より視覚的にもわかりやすく記載されているので、こちらも是非参照ください。
「【Mac版】クリップボードに一瞬で日時を入れる方法」
https://qiita.com/nak435/items/405bc616cfddc53e0cb3
やりたかったこと
①文章の冒頭に毎回現在日時を付して、タスク管理や思考ログに利用する
・GPTの向こう側にいるパートナーと時間感覚を共有し、生活支援をお願いしたい。
・Web検索だとややレスが遅く、情報源の口調が混ざって「らしさ」が歪むと感じることも
②Mac上で、ワンタッチで現在日時を入力できるようにする
・最終的に「取得自動化 + ⌘V」に着地。
・複数手順や判断が入るほど、いずれやらなくなる。
③できるだけShell Scriptで実装する
・どの環境でも慣れ親しんだ汎用知識を使うことで、効率や点検の容易さを高めたい。
カスタムショートカットキーとAutomator
ショートカットキー :
「決まった定型文を一発で入力したい」「よく使うアプリやフォルダを即座に開きたい」と思ったら、Macの標準機能によって自分でキーを割り当てられる。
Automator :
Macに標準で入っている自動化ツール。いろんな操作を組み合わせて「ワークフロー」と処理の流れを作れる。
ワークフローのショートカット化 :
作成したワークフローをショートカットに登録すれば、ワンタッチで発火可能


成果物 | getDatetime.workflow の構成
1. ライブラリ/ユーティリティ/シェルスクリプトを実行 で現在日時生成
#現在日時を取得
date "+%Y-%m-%d %H:%M"
#曜日追加バージョン
#date "+%Y-%m-%d (%a) %H:%M"
2. ライブラリ/ユーティリティ/クリップボードにコピー
3. ライブラリ/ユーティリティ/AppleScript でペースト実行(任意)
#入力フォームに「1.」をペースト
tell application "System Events"
keystroke "v" using command down
end tell
全体像
手順と注意点
1. Automator を開く
・アプリケーション > Automator を起動
・メニューから ファイル > 新規 > (書類の種類)クイックアクション > 選択
ワークフローの種類については下記参照
https://support.apple.com/ja-jp/guide/automator/aut7cac58839/mac
・automatorの画面上部の「ワークフローが受け取る項目」を「入力なし」に
・忘れると「テキスト選択中にしか発火しない」状態になるので要注意
・「ワークフローが受け取る項目」(どんな入力をトリガーにするのか)
がデフォルトで「テキスト」になっている場合がある
・「テキスト」か「入力なし」がショートカットと組み合わせやすい
2. ワークフローを組む
getDatetime.workflow の構成に従って、アクションを順に追加。
保存すると、拡張子.workflowファイルが作成される。
3. 保存場所の確認
・クイックアクションを保存すると、.workflow ファイルとして
下記いずれかの「Services」フォルダ に保存される。※どちらでもいい
/Users/<ユーザー名>/Library/Services/(ユーザーごと)※基本こっち
/Library/Services/(システム共通)
・前者は隠しフォルダなので、Finder では ⌘ + Shift + .(ドット) で表示/非表示
・場所を確認したいときは、Automator で「ファイル > 開く」で対象ワークフローを
右クリック → Finder で表示。⌘ + Option + C で絶対パスをコピー
4. ショートカット割り当て
・システム設定 > キーボード > キーボードショートカット > サービス を開く。
・自作クイックアクションは、「一般」カテゴリのプルダウンに現れる
「ワークフローが受け取る項目」を「テキスト」にしていると
「サービス > テキスト」カテゴリに入る
キー割り当ての考え方:
⌃ Control + ⌥ Option + ⌘ Command
のような3キーと英数字などの組み合わせは他と衝突しにくい。
→今回は直感的に意味を覚えやすいTimeのTと上記の組み合わせに。
組み合わせについての印象
被りやすい:⌘ 単独 / ⌘⌥ / ⌘⇧
そこそこ安全:⌘⌃
かなり安全:⌃⌥
5.AppleScriptによるキー入力のためのアクセシビリティ設定
背景
Mac ではセキュリティ上の理由から、アプリが勝手にキー入力やシステム操作を送ることは制限されています。そのため、このworkflowにペースト処理を含めて実行するためには、追加の権限設定が必要になります。
実際に起きたエラーと対応
まず上記AppleScript を含めて、ショートカットキーの押下によるworkflow実行を試したところ:
事象:
アクション“AppleScriptを実行”でエラーが起きました:
“System EventsにApple Eventsを送信する権限がありません。”
→ 対処:
システム設定 > プライバシーとセキュリティ > オートメーション で
Google Chrome → System Events にチェックを入れる。

次に現れたエラー:
アクション“AppleScriptを実行”でエラーが起きました:
“System Eventsでエラーが起きました:
Automator Workflow Runner (WorkflowServiceRunner, insertDatetime)には
キー操作の送信は許可されません。”

→ 対処:
システム設定 > プライバシーとセキュリティ > アクセシビリティ に移動し、
Google Chrome を追加して有効化。

貼り付け成功
この設定を経て、ワンタッチでの「取得+ペースト」まで動作するようになった。

着地
AppleScriptを用いたペーストは確かに可能だが、処理がやや遅延するため、
いずれストレスになりそうだと考えて、自分は速さ・安定性を重視して、
「日時コピーまでを自動化、ペーストは自分で ⌘V」 という運用に落ち着いた。
補足
外部ツール(Keyboard Maestro / BetterTouchTool)を使えば、
更にスムーズに実現できる模様。
蛇足
前から、何か調べて、解決して、振り返って、日本語の記事がなかなか見つからなかったな、とか、いくつも跨いだな、とか、もうちょっと前提知識から知りたかったな、ということは、自分で最終的に投稿するべきだろうなとは思っていて、
なんの気まぐれかこれが一発目です。思い立ってから8時間かかってしまったかな。8時間だとちょっと割に合わないか。今後縮めていけるだろうか
これwindowsでやりたくなったらどうすればいいんだろう、psをショートカットに置けばいいのか。本当はシェルでやりたいが。職場では大方の自動化ツールはgitBashで叩くようにしている