皆さんは今まで、スプレッドシート上でGASをエクセルのマクロをショートカットキーで呼び出すように実行したいと思ったことはありませんか?
スプレッドシートにも「マクロを記録」という機能が実装されて、実は似たような事ができるようになっているのは気づいている人も少なくありませんよね。
ただし、このショートカットを割り振る機能は基本的には「マクロを記録」から登録したものしか設定することはできないのです。そのため、そこには制約が存在します。
制約とは例えば
- 1つのスプレッドシートファイル上の操作しか記録ができない
- スプレッドシート以外のGoogleサービスとの連携ができない
- 外部APIとの連携ができない
などが挙げられます。
手動で実行できる操作しかマクロ化できないことがネックとなります。
「基本的には」と言いましたが、自分で作成したコードをショートカットに登録する方法はもちろんあります。
これからお伝えする方法を利用すれば、上記で挙げた制限を受けずに、GASの実行処理の利便性を向上させることができます。
ちなみに、ショートカットキーの割り当ては
数少ないバンドル型スクリプトでしかできないことの一つです!!
本記事が役立つターゲット読者
- スプレッドシートのGASをExcelのマクロのようにショートカットキーで実行したい方
- GAS実行のためにマウスを動かしたくない方
- 単純に興味のある方
事前準備【超重要】
今回は、GASの設定ファイルを操作しますので、まずは設定ファイルを編集できるように表示させましょう。下記の動画とスクリーンショットをご参考にマニフェストファイルを表示させましょう。
次に、今回一番重要となるファイルを作成します。
スプレッドシート上で、GASをショートカットキーで実行するためには、実は特殊な名前のgsファイルが必要です。
その名前はズバリ「マクロ.gs」です。なんか特殊感全く無いですが、特殊なファイル名なんです。
英語でもなく、ひらがなでもなく、カタカナでマクロ。
ここまでできれば事前準備は終了です。
好きなようにコードを記述(サンプルコードは用意していないです)
ショートカットに登録したいGASコードを、マクロ.gs内に好きなように記述してください。
関数名は何でも良いですし、処理の内容も制限はありません。自動化したい内容を好きなように記述していきましょう。
今回の記事の読者の方々は、GASをすでにかける方がほとんどだと思いますので、今回はサンプルコードは割愛しますね。
ショートカットキーを登録するために、マニフェストファイルを編集する
さて、本題のショートカット登録のためにマニフェストファイルを編集するフェーズがやってきました。
まずは、デフォルトのappsscript.json構造を見ていきましょう。
{
"timeZone": "America/New_York",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
私の場合は上記のようになっています。
timeZoneはスクリプトファイルに設定されているタイムゾーン設定です。
私の場合はいつもアメリカ東海岸の時間になってしまいます。
変更は「プロジェクトの設定」画面から最近できるようになりましたね。
dependenciesはAdvanced Google ServiceのAPIを有効化している場合に、どのAPIのどのバージョンが有効化されているかが格納されます。
exceptionLoggingはエラー発生時にどこにログを格納するかということを表しています。
渡しの場合はSTACKDRIVERとなっていますが、現在の名称ではGCPのCloud Loggingに格納されるのでしょうかね。
この設定も「プロジェクトの設定」画面から変更ができるようになっています。
チェックを外すとSTACKDRIVERがNONEに変わります。
そして最後に、runtimeVersionですが、これはGASのランタイムバージョンを表しています。
私の場合は最新版を利用しているので、V8になりますが、旧バージョンにするとDEPRECATED_ES5に変わります。
変更する場合は「プロジェクトの設定」画面から変更可能です。
下記はチェックを外した際のマニフェストファイルですが、旧バージョンはすでに公式には非推奨になっているのですね。
ショートカットへの登録をするために、下記のようにマニフェストファイルを編集してみましょう。
{
"timeZone": "America/New_York",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8", //←カンマを追加
"sheets": {
"macros": [{
"menuName": "任意のマクロ名",
"functionName": "myFunction", //GASの関数名
"defaultShortcut": "Ctrl+Alt+Shift+1" //ショートカットキー(Ctrl+Alt+Shift+までは固定値で、数字部分のみ0〜9まで設定可能)
}]
}
}
menuNameはスプレッドシート上に表示されるマクロの名前になりますので、任意の名前に変更可能です。
functionNameは登録したいGASの関数名を設定します。
defaultShortcutは登録するショートカットキーになります。
「Ctrl + Alt + Shift +」は変更することはできません。あとに続く数字のみ変更することができますので、0から9の最大10個までのGASをショートカットに登録することができます。
上記のJSONではコメントを記述していますが、appsscript.jsonファイルではコメントを記述することができませんので、コピペした場合はコメント部分の削除をお願いします。
マニフェストファイルが変更できたらスプレッドシートをリロードして、マクロが登録されているか確認してみましょう。
登録が成功していればこうなります。
あとはショートカットキーを押せばGASを実行できるようになりますよ。
まとめ
今回はGASをキーボードのショートカットキーを使って実行する小ネタを紹介しました。
意外と他のブログでもあまり紹介されていないような気がするので記事にしてみました。
今後もあまり知られていない小ネタをどんどん投稿できればいいなと思っています。