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

このブログ記事は「iA Writer」というエディタを使ってMarkdownで書いている。MarkdownからHTMLへの変換は、Pythonで作った自作の静的サイトジェネレータを使っている。また、サーバーへのアップロードはrsyncコマンドで行っている。

このような理由から、目的の記事ファイルをFinderやエディタのエクスプローラーで探すのが面倒だった。そこで、Chromeで表示している記事をショートカットキー1発でエディタで開けるようにしてみた。

これを実現する方法は、Automator(AppleScript)とシェルスクリプトの組み合わせである。 この記事では、そのやり方を詳しく解説していく。

なお、開発環境は「macOS Big Sur 11.0.1」、ウェブブラウザはChromeを使用している。

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ですべてプログラムするより、使い慣れているシェルスクリプトで細かな処理をする方が開発しやすいと思うのでぜひ参考に。

AppleScript: The Definitive Guide: Scripting and Automating Your Mac (Definitive Guides)
AppleScript: The Definitive Guide: Scripting and Automating Your Mac (Definitive Guides)

KindleAmazon

最後まで読んでいただきありがとうございました。

「この記事が参考になったよ」という方は、ぜひ記事をシェアをしていただけるととても嬉しいです。

今後も有益な記事を書くモチベーションにつながりますので、どうかよろしくお願いいたします。↓↓↓↓↓↓↓

あなたにおすすめ