GASでスプレッドシートに階層メニューを追加する方法

まいまい お仕事

こんにちは。今回は仕事でもよく使う Google Apps Script(GAS) について書いていきます✊🏻✨️
最近は社内業務の効率化や自動化の場面でGASを活用することが増えてきました。
プログラミング初心者でも取り組みやすいのが魅力なんですよね。

今回ご紹介するのは、Googleスプレッドシートに
「階層メニュー」を追加する方法 です。

「スプレッドシートの上部に自分専用のメニューを作り、そこから必要な処理を呼び出せるようにする」というイメージです。

そもそもGASとは?

Google Apps Script(GAS)は、Googleが提供しているクラウド上で動くスクリプト言語です。
JavaScriptをベースにしているため、JavaScriptに触れたことがある方ならすぐに理解しやすいと思います。

例えば、こんなことができます。

スプレッドシートに入力されたデータを整理・加工する

Gmailのメールを自動で仕分けする

Googleカレンダーに予定を自動登録する

ChatやSlackなどに通知を送る

「ちょっとした作業を自動化できる」ので、業務効率化にピッタリなんです。 現在、つなぐるの代表もchatworkへRedmineからの新着メールを自動で送るという連携なども実装しています🌟

今回やること:スプレッドシートに階層メニューを作る

Googleスプレッドシートを開くと、上部に「ファイル」「編集」「表示」などのメニューが並んでいますよね。
この並びに 自分専用のメニュー を追加できるのがGASの便利なところ。

さらにその中に「サブメニュー」を作ることで、整理されたメニュー構造にできます。

完成イメージはこんな感じです。

タブに出したい名称 ▼
├ サブメニューに出したい名称1
└ サブメニューに出したい名称2

実際のコード

以下のスクリプトをスプレッドシートに書き込むと、階層メニューを作れます。


function onOpen() {
 const ui = SpreadsheetApp.getUi();

 // メインメニュー作成
 const menu = ui.createMenu("タブに出したい名称");

 // サブメニュー
 const preMenu = ui.createMenu("メインメニュー1")
	 .addItem("サブメニューに出したい名称1", "動かしたい関数")
	 .addItem("サブメニューに出したい名称2", "動かしたい関数");

 // メインメニューにサブメニューを追加
 menu.addSubMenu(preMenu)
	 .addToUi();
}

ポイント解説

onOpen()
この関数名は特別で、スプレッドシートを開いたときに自動で実行されます。
つまり、毎回手動でコードを走らせなくても「シートを開いた瞬間にメニューが追加される」わけです。
SpreadsheetApp.getUi()
これは「ユーザーインターフェイス(UI)」を操作するための命令です。
ここから .createMenu() を呼び出すことで、新しいメニューを作成できます。
addItem(“表示名”, “関数名”)
実際にメニューからクリックされたときに、どの関数を呼び出すかを指定しています。
“動かしたい関数” の部分には、別で作った処理用の関数名を書きます。

実際に関数を追加してみよう

例えば、以下のような関数を別で用意しておけば、クリックしたときに動作します。


function helloWorld() {
 SpreadsheetApp.getActiveSpreadsheet()
	 .getActiveSheet()
	 .getRange("A1")
	 .setValue("Hello GAS!");
}

この関数を addItem(“挨拶を表示”, “helloWorld”) のように紐づければ、メニューをクリックするとA1セルに「Hello GAS!」と表示される仕組みです。

階層メニューを使うメリット

  • 複数のスクリプトを整理して使える
  • ワンクリックで処理を呼び出せるので時短
  • スプレッドシートを共有しているメンバーにも同じメニューが表示される

特に、社内で定型作業をみんなが繰り返す」ような場面ではとても役立ちます。

まとめ

今回は、GASを使ってスプレッドシートに「階層メニュー」を追加する方法を紹介しました。
プログラミングに慣れていない人でも、ほんの数行コードを書くことで、日々の業務がグッと効率化されるのが魅力です。

次回はさらに実践的な内容として、「GASでCSV出力をする方法」 をご紹介します。
スプレッドシートのデータを一発でCSVファイルに書き出せると、業務の幅が広がりますのでお楽しみに!