これで仕事効率アップ!Googleスプレッドシートにカスタムメニューを追加する方法

はじめに

Googleスプレッドシートを日々の業務や個人プロジェクトで活用していると、「もっと効率的に操作できたら」と感じることはありませんか?そんなときに便利なのが、Google Apps Script(GAS)を使ったカスタムメニューです。

カスタムメニューを使えば、スプレッドシートのメニューに独自の機能を追加することができ、クリックひとつで複雑な操作を簡単に実行できるようになります。

なお、GASのセットアップや基本的な開発環境の整え方については、別記事

で詳しく解説しています。

この記事では、スプレッドシートにカスタムメニューを追加する具体的な方法を解説します。
スプレッドシートをさらに便利にカスタマイズしたい方は、ぜひ最後までお読みください!

 

カスタムメニューの初期状態を確認しよう

Googleスプレッドシートを開くと、以下の画像のように標準のメニューバーが表示されます。このメニューには「ファイル」「編集」「挿入」などが並んでおり、基本的な操作はここから行えます。

ですが、このメニューバーに独自のメニューを追加することで、頻繁に使う操作を簡単に実行できるようになります。
以下では、カスタムメニューの作成方法をステップごとに解説します。

カスタムメニューを作成する方法

1. 基本のカスタムメニューを作成

まず、以下のコードを使って基本的なメニューを追加する方法を紹介します。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('便利機能') // メニュー名を設定
    .addItem('データをクリア', 'clearData') // 単一のメニュー項目を追加
    .addToUi(); // メニューをUIに追加
}

function clearData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clearContents(); // データだけを削除
  SpreadsheetApp.getUi().alert('データをクリアしました!'); // 完了メッセージを表示
}

コード解説

  • SpreadsheetApp.getUi()
    スプレッドシートのユーザーインターフェイス(UI)を取得します。
    このUIを利用してカスタムメニューを作成します。
  • ui.createMenu('便利機能')
    新しいメニュー「便利機能」を作成します。
    このメニュー名は、スプレッドシートのメニューバーに表示されます。
  • addItem('データをクリア', 'clearData')
    メニューの中に「データをクリア」という項目を追加します。
    'clearData' は、この項目がクリックされたときに実行される関数の名前です。 ※自身が作成した処理をなんでも設定してください。
  • addToUi()
    作成したメニューを実際にユーザーインターフェイスに反映させます。

 

これにより、スプレッドシートを開くと「便利機能」というメニューが右上に追加され、そこから「データをクリア」を実行できます。


メニューの中にさらにサブメニューを作成

カスタムメニューの中に、さらに細かい項目を分類できる「サブメニュー」を作ることも可能です。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  
  // メインメニューを作成
  var mainMenu = ui.createMenu('便利機能');

  // サブメニューを作成
  var subMenu = ui.createMenu('データ操作')
    .addItem('データをクリア', 'clearData') // サブメニューの項目を追加
    .addItem('行を削除', 'deleteRow'); // サブメニューの別の項目を追加

  // メインメニューにサブメニューを追加
  mainMenu.addSubMenu(subMenu);

  // メニュー全体をUIに追加
  mainMenu.addToUi();
}

// 各機能のスクリプト
function clearData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clearContents();
  SpreadsheetApp.getUi().alert('データをクリアしました!');
}

function deleteRow() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.deleteRow(sheet.getActiveCell().getRow());
  SpreadsheetApp.getUi().alert('現在選択されている行を削除しました!');
}

サブメニューに関連するコード解説

  • createMenu('データ操作')
    「データ操作」という名前のサブメニューを作成します。
    このサブメニューはメインメニュー「便利機能」に組み込まれます。
  • addItem('データをクリア', 'clearData')
    サブメニュー内に「データをクリア」という項目を追加します。
    クリックすると、clearData関数が実行されます。
  • addItem('行を削除', 'deleteRow')
    サブメニュー内に「行を削除」という項目を追加します。
    クリックすると、deleteRow関数が実行されます。
  • addSubMenu(subMenu)
    作成したサブメニューをメインメニュー「便利機能」に組み込みます。
    これにより、メインメニューをクリックすると、その中にサブメニューが表示されるようになります。

実行結果

メインメニュー:「便利機能」がスプレッドシートのメニューに追加。
サブメニュー:「便利機能」の中に「データ操作」というサブメニューがあり、その中に「データをクリア」「行を削除」の項目が並ぶ。


カスタムメニューを削除(リセット)する方法

カスタムメニューはスプレッドシートを開いた際にonOpen関数で追加されます。そのため、カスタムメニューを削除したい場合は、以下のいずれかの方法でメニューをリセットできます。

方法 1: onOpen関数を空にする

onOpen関数で作成したカスタムメニューを削除するには、onOpen関数の内容を空にして保存します。次にスプレッドシートを再読み込みすると、カスタムメニューがリセットされます。
これにより、次回スプレッドシートを開いた際にカスタムメニューが表示されなくなります。

方法 2: スクリプトを削除する

スクリプトエディタ内でカスタムメニューに関連するスクリプトを削除し、スプレッドシートを再読み込みすると、カスタムメニューも消えます。

  1. スクリプトエディタを開きます(「拡張機能」→「Apps Script」)。
  2. カスタムメニューを追加するコード(例: onOpen関数)を削除します。
  3. スプレッドシートを再読み込みします。

まとめ

この記事を参考にして、ぜひ独自のカスタムメニューを作成し、スプレッドシートをさらに便利にカスタマイズしてみてください。また、条件付きで動的にメニューを変更する方法や、さらに複雑な機能を追加する方法も試してみると、作業効率がさらに向上します。

シンプルで実用的なカスタムメニューを作り、Googleスプレッドシートを使いこなしましょう!

コメント

タイトルとURLをコピーしました