サイトロゴ

Automatorを使って独自ショートカットキーを作る|AppleScript x シェルスクリプト

著者画像
Toshihiko Arai

はじめに

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. 名前をつけて保存

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

ちなみに、Safari版は次の通り。

on run {input, parameters}
    --  AppleScriptの記述開始
    tell application "Safari"
        set theURL to URL of current 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 で実行権限を与えておく

AppleScript実行後にエラーを出さない工夫

シェルの結果が0以外で終わるとAppleScriptがエラーアラートを吐いてしまう。アラートを出さない工夫として、次のようにすると良い。

....
/usr/local/bin/doSomething.sh > /dev/null 2>&1 # 標準出力と標準エラーを破棄する

echo 0 # AppleScriptでエラーを出さない工夫

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

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

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

AppleScriptの保存場所

Automatorで作ったAppleScriptの保存場所は /Users/xxxxx/Library/Services 配下となる。サイトビルド.workflow のようなファイルで保存されているので、ダブルクリックすればAutomatorが開き、再び編集可能だ。

やってみた感想

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

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

関連記事