【AutoHotkey】ショートカットキーでGoogle Apps Scriptを実行する
はじめに
Google Apps Scriptの実行方法としては、スクリプトエディタでの実行、トリガ実行が一般的です。しかし、任意に/不定期で実行したい場合は、エディタを開くのは手間で、短い間隔で時限式トリガを設定すると実行数が嵩み、トリガの管理も煩雑になります。[1]
エディタを開かず任意のタイミングでGoogle Apps Scriptを実行する方法として、AutoHotkeyによるショートカットキー実行を紹介します。
目標
Google Apps Scriptを任意のショートカットキーで実行する。
使うもの
- Google Apps Script
- AutoHotkey
AutoHotkeyについて
AutoHotkeyはホットキーへの機能の割り当てなど常駐ソフトの作成に特化したスクリプトエンジン。多彩なコマンドが用意されており、GUIを持ったプログラムの作成も可能。
任意のキーの割り当て変更、マクロ、ウインドウ操作 ...
オープンソースの簡易プログラム言語、Windows用フリーソフト。(出展:AutoHotkey Wiki)
とあるとおり、キーに幅広い役割を持たせることのできるフリーソフトで、変数はもちろん、プログラムの実行、関数の定義まで自在にスクリプティングできます。
今回はAutoHotkeyでHTTPリクエストを送信し、Google Apps Scriptを実行します。
流れ
- Google Apps Scriptを書く
- 1をデプロイする
- AutoHotkeyのインストール/スクリプト作成
1. Google Apps Scriptを書く
今回は、押されたショートカットキーをそのまま返すサンプルを作成します。
function doGet(e){
const response = e.parameter.p1 ? e.parameter.p1 : "パラメーターがありません"
return ContentService.createTextOutput(response)
}
実務ではdoGet内に実行したい関数を組み込みます。
2. 1をデプロイする
作成したGoogle Apps Scriptをデプロイし、デプロイURLを保管します。
エディタからデプロイ | アクセス範囲は「全員」 |
3. AutoHotkeyのインストール/スクリプト作成
AutoHotkeyをインストールします。インストール方法に関してはすでに先行記事が累々につき割愛します。
インストールが済んだら、.ahk
ファイルを新規作成します。
これを「プログラムから開く」でVS Codeなどお好みのエディタで開いてください。本記事ではサクラエディタを使っています。
さてスクリプトです。今回は「Ctrl + Shift + g」で先ほどのGoogle Apps Scriptを実行することとします。
urlのXXXXXXXXXXXXXXXX
部分を先ほどデプロイしたurlに書き換えてください。
;Ctrl + Shift + gでGoogle Apps Scriptを実行する。
;押下したホットキーをp1パラメータに渡す。
^!g::
url = https://script.google.com/macros/s/XXXXXXXXXXXXXXXX/exec?p1=%A_ThisHotkey%
req := ComObjCreate("WinHttp.WinHttpRequest.5.1")
req.Open("GET",url, true)
req.Send(null)
req.WaitForResponse()
MsgBox % req.ResponseText
return
スクリプトの流れとしては、「p1」パラメータに押下されたキーを渡し、Getリクエスト、返り値をMsgBox
に表示するというシンプルなものです。
スクリプトができたら保存をし、.ahk
ファイルをダブルクリックしてアクティベートします。
実際に「Ctrl + Shift + g」を押すと、メッセージボックスが表示されます。
ダイアログのタイトルはファイル名になります...
スクリプトのキーをgからhに変え、再度アクティベートすると、表示内容も変更されます。
これでGoogle Apps Scriptを(ほぼ)任意のショートカットキーで実行することができました。
おわりに
以上の手順を展開することで、(ほぼ)任意のキーで任意のGoogle Apps Scriptを実行することができます。
実際のユースケースとして、私は不要なトリガ実行やAPI実行を抑える目的で、時間管理アプリのToggl Trackの内容をSlackに反映させています。
多くの場合はGoogle Apps Scriptトリガ実行で事足りますが、トリガの無駄打ちが気になる場合や、不定期で即時実行がしたい場合には、ショートカットキー実行もご検討ください。
Discussion