🎹

【AutoHotkey】ショートカットキーでGoogle Apps Scriptを実行する

2022/10/31に公開

はじめに

Google Apps Scriptの実行方法としては、スクリプトエディタでの実行トリガ実行が一般的です。しかし、任意に/不定期で実行したい場合は、エディタを開くのは手間で、短い間隔で時限式トリガを設定すると実行数が嵩み、トリガの管理も煩雑になります。[1]

エディタを開かず任意のタイミングでGoogle Apps Scriptを実行する方法として、AutoHotkeyによるショートカットキー実行を紹介します。

目標

Google Apps Scriptを任意のショートカットキーで実行する。

使うもの

  • Google Apps Script
  • AutoHotkey

https://www.autohotkey.com/

AutoHotkeyについて

AutoHotkeyはホットキーへの機能の割り当てなど常駐ソフトの作成に特化したスクリプトエンジン。多彩なコマンドが用意されており、GUIを持ったプログラムの作成も可能。
任意のキーの割り当て変更、マクロ、ウインドウ操作 ...
オープンソースの簡易プログラム言語、Windows用フリーソフト。(出展:AutoHotkey Wiki

とあるとおり、キーに幅広い役割を持たせることのできるフリーソフトで、変数はもちろん、プログラムの実行、関数の定義まで自在にスクリプティングできます。

今回はAutoHotkeyでHTTPリクエストを送信し、Google Apps Scriptを実行します。

流れ

  1. Google Apps Scriptを書く
  2. 1をデプロイする
  3. 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をインストールします。インストール方法に関してはすでに先行記事が累々につき割愛します。
https://www.autohotkey.com/

インストールが済んだら、.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に反映させています。

https://zenn.dev/hosaka313/articles/347d5239a01c1d

多くの場合はGoogle Apps Scriptトリガ実行で事足りますが、トリガの無駄打ちが気になる場合や、不定期で即時実行がしたい場合には、ショートカットキー実行もご検討ください。

脚注
  1. Google Apps Scriptのトリガの制限としては、合計実行時間の上限が設けられています。(一般ユーザーの場合は90分/日、Google Workspaceアカウントの場合は6時間/日)⇒参考
    処理が不要なケースで早期リターンすれば問題にならないかもしれませんが... ↩︎

Discussion