0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Macでの些細な自動化挑戦:Automator+Shellで「現在日時取得をショートカット化」

Last updated at Posted at 2025-09-15

使用環境

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

全体像

スクリーンショット 2025-09-15 16.23.32.png

手順と注意点

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 を追加して有効化。

貼り付け成功

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

注意点

セキュリティ上のリスク:キー操作を自動で送れるアプリに広い権限を与えることになるため、悪用されれば危険。

安定性の問題:環境によっては「Automator Workflow Runnerにはキー操作が許可されません」というエラーが出て動かない場合がある。

ペーストまでの自動化の安全性については申し訳ありませんが、筆者の知識では責任が持てません。

着地

AppleScriptを用いたペーストは確かに可能だが、処理がやや遅延するため、
いずれストレスになりそうだと考えて、自分は速さ・安定性を重視して、
「日時コピーまでを自動化、ペーストは自分で ⌘V」 という運用に落ち着いた。

補足

外部ツール(Keyboard Maestro / BetterTouchTool)を使えば、
更にスムーズに実現できる模様。

蛇足

前から、何か調べて、解決して、振り返って、日本語の記事がなかなか見つからなかったな、とか、いくつも跨いだな、とか、もうちょっと前提知識から知りたかったな、ということは、自分で最終的に投稿するべきだろうなとは思っていて、

なんの気まぐれかこれが一発目です。思い立ってから8時間かかってしまったかな。8時間だとちょっと割に合わないか。今後縮めていけるだろうか

これwindowsでやりたくなったらどうすればいいんだろう、psをショートカットに置けばいいのか。本当はシェルでやりたいが。職場では大方の自動化ツールはgitBashで叩くようにしている

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?