Automatorとシェルスクリプトで独自ショートカットキーを作ろう!

Chromeで表示している自分のBLOG記事を、ショートカットキー1発でエディタで開けるようにしたい。

このブログ記事はMarkdownで書いて、静的コンテンツへ変換してサーバーへアップしている。記事をリライトするときにファイルを探すのは地味に手間がかかっていたので、ブラウザで閲覧している自分の記事を一発で開けたらと思った。

そのようなことを実現するには、Automator(AppleScript)とシェルスクリプトの組み合わせで可能である。自分だけの特殊なケースかもしれないが、この方法はいろいろ応用できると思うので何かの参考にしてもらえれば幸いである。

なお、開発環境はmacOSの「Big Sur 11.0.1」で行った。

Automatorの用意

次の手順に従ってAutomatorでアプリを作成する。

  1. Automatorを開く
  2. 「QuickAction」を選択(図1)
  3. 「apple」で検索
  4. 「Run AppleScript」を選択(図2)
  5. プログラムを記述(後述)
  6. 名前をつけて保存

図1. QuickAction
図1. QuickAction

図2. Run AppleScript
図2. Run AppleScript

Automatorのプログラム内容

作成するAutomatorの機能は次の通り。

  1. Chromeで開いている現在アクティブのタブのURLを取得
  2. そのURLをシェルスクリプトへ渡す(後述)
on run {input, parameters}
	--	AppleScriptの記述開始
	tell application "Google Chrome"
		set theURL to URL of active tab of window 1
		set task to "/Users/SomeWhere/op.sh " & theURL
		
		do shell script task
	end tell
	--	AppleScriptの記述おわり
	return input
end run

シェルスクリプトの用意

op.shというシェルスクリプトを作る。シェルスクリプトの機能は次の通り。

  1. 渡されたURLからファイル名を抽出
  2. ベースディレクトリからファイル名で探す
  3. openコマンドでパスを開く
#!/bin/bash
URL=$1
BASE_DIR="/Users/SomeWhere/"

file=$(basename $URL)
filename=${file%.*}
echo $filename

path=$(find ${BASE_DIR} -name ${filename}.md)
open $path

これでプログラムの作成はおわり。最初のAutomatorを実行すれば、Chromeで表示している記事の元ファイルがエディタで開かれるよになる。

注意点

  • BASE_DIRはシェルスクリプトが置いてあるパスを書く
  • chmod a+x op.sh で実行権限を与えておく

ショートカットキーへ登録

最後に、作成したAutomatorをショートカットキーへ登録しておく。次の手順を参考に。

  1. 「System Preferences」アプリを開く
  2. 「Keyboard」を選択
  3. 「Shortcuts」タブを選択
  4. 左の一覧から「Services」を選択
  5. Automatorで作ったアプリを探す
  6. ショートカットキーを登録(例: shift + command⌘ + O

ショートカットキーの登録
ショートカットキーの登録

やってみた感想

今回のショートカットキー化をやってみて、記事のリライトがめちゃめちゃ便利になった。「修正するのめんどくさい」というハードルがグンと下がった。

これらのスクリプトは他のアプリケーションにも応用できる。また、AppleScriptですべてプログラムするより、使い慣れているシェルスクリプトで細かな処理をする方が開発しやすいと思うのでぜひ参考に。

記事に関するご質問などがあれば、
@tosisico または お問い合わせ までご連絡ください。
関連記事