Google Apps Scriptをスプレッドシートのメニューに追加する方法!ボタン一つで業務を自動化する魔法のカスタマイズ

AI活用・ツール術

PR

GASをスプレッドシートに組み込んで使うなら、メニューへの追加は最初にやるべき設定だ

私はブログ投稿の自動化システムをGoogle Apps Scriptで自作している。ClaudeにHTMLを生成させ、そのままスプレッドシートに記録しながらWordPressへ投稿する仕組みだ。

この仕組みを作って最初に気づいたのは、「GASを実行するたびに拡張機能→Apps Scriptと開き直す手間がとにかく邪魔だ」という事実だった。

スクリプトそのものは動く。でも、毎回エディタを開いて実行ボタンを押す手順が挟まるせいで、自動化のはずなのに「手作業感」が抜けない。これはなんとかしなければと思い調べたのが、カスタムメニューへの追加だった。

やってみると、思ったより単純な仕組みだった。以下で手順と、あわせて使っておきたいトースト通知の方法を解説する。

拡張機能メニューを何層も開く必要があり面倒に感じているビジネスパーソンのイラスト

GASのカスタムメニューとは何か

カスタムメニューとは、スプレッドシートの上部メニューバーに独自の項目を追加し、そこからGASを直接実行できるようにする仕組みだ。

通常の手順では「拡張機能 → Apps Script → 実行ボタン」という3ステップが必要になる。カスタムメニューを設置しておけば、スプレッドシートを開いた状態のまま「自分専用のメニュー項目をクリックするだけ」で処理が走る。

単純に手間が減るだけでなく、スクリプトの存在を忘れにくくなる。「どこかに作った気がするけどどこだっけ」という状況が起きなくなるのは、地味に効いてくる。

onOpen関数で実現する:コードの全体像

カスタムメニューの追加は、onOpen関数という仕組みを使う。この関数はスプレッドシートが開かれた瞬間に自動で実行される特殊な関数だ。

実装は以下のように書く。

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('自動化メニュー')
    .addItem('実行する', 'myFunction')
    .addToUi();
}

「自動化メニュー」の部分がメニューバーに表示される名前、「実行する」がクリック時に表示されるテキスト、「myFunction」が実際に呼び出す関数名だ。この3か所を自分の用途に合わせて書き換えるだけでいい。

保存してスプレッドシートをいったん閉じ、再度開くとメニューバーに新しい項目が追加されているはずだ。

複数の処理を登録したい場合

メニューに複数の実行ボタンを並べることもできる。

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('自動化メニュー')
    .addItem('データ整理', 'cleanData')
    .addItem('メール送信', 'sendMail')
    .addItem('レポート出力', 'exportReport')
    .addToUi();
}

addItemを増やすだけで項目が追加されていく。シンプルな構造なので覚えやすい。

スプレッドシート上部に自動化メニューが追加され右下にトースト通知が表示されているイラスト

GASには実行制限がある。そこだけは正直に書いておく

GASは無料で使えるうえにGoogleサービスと連携しやすく、自動化ツールとして優秀だ。ただし、正直に書いておくと制限がかなり厳しい

代表的なものを挙げると:

①スクリプトの1回あたり実行時間は最大6分
②1日あたりの合計実行時間はGoogleアカウントの種別によって異なる(無料は90分/日)
③外部URLへのフェッチ(UrlFetchApp)は1日あたり20,000回まで

個人ブログの自動化程度ならほとんど制限に引っかからないが、大量のデータ処理や頻繁なAPI通信を組み込もうとすると途端に壁にぶつかる。「GASで全部やろう」と欲張りすぎると、ここで詰まることになる。

カスタムメニューを使って快適に実行できる環境を整えたとしても、処理の設計が制限を超えていれば途中でスクリプトが止まる。設計の段階から「この処理は6分以内に終わるか」を意識しておく必要がある。

トースト通知を入れておくと、動作確認が格段にラクになる

これは私が自作のブログ投稿システムで実際に使っている方法だ。

GASで処理を動かしているとき、画面上に何も変化がないと「ちゃんと動いているのか、止まっているのか」が外から判断できない。特に処理が長くなるほど、この不安は大きくなる。

そこで役立つのがトースト通知だ。スプレッドシートの右下に一時的なメッセージを表示させる仕組みで、コード1行で実装できる。

SpreadsheetApp.getActiveSpreadsheet().toast('処理を開始しました');

処理の終わりにも入れておく。

SpreadsheetApp.getActiveSpreadsheet().toast('完了しました!', 'ステータス', 5);

第2引数がタイトル、第3引数が表示秒数だ。5を指定すると5秒間表示されたあと自動的に消える。

エラーが起きたときの通知も合わせて入れておく

処理が成功したときだけでなく、失敗したときにも通知を出しておくと、問題の発見が早くなる。

try {
  // メインの処理
  cleanData();
  SpreadsheetApp.getActiveSpreadsheet().toast('データ整理が完了しました');
} catch(e) {
  SpreadsheetApp.getActiveSpreadsheet().toast('エラーが発生しました: ' + e.message, 'エラー', 10);
}

エラーが起きたときに内容をそのまま表示させると、ログを確認しに行く前に「何が原因か」の手がかりが得られる。

私のブログ投稿システムでもこの構造を使っていて、何か問題が起きたとき「スプレッドシートの右下を見れば状況がわかる」という状態にしてある。シンプルな実装だが、運用時の安心感がまるで違う。

GASカスタムメニュー活用の流れを描いた4コマ漫画

eddie’s Advice

GASは「無料で使える高機能ツール」として持ち上げられることが多いが、制限の壁は意外に低い。それを知らずに「GASで全部自動化しよう」と設計すると、動かない・止まるを繰り返して時間を無駄にする。

カスタムメニューやトースト通知のような小さな工夫は、自動化を「作っただけ」から「実際に使える状態」に引き上げてくれる。コードを書くことより、使い続けられる仕組みを作る方が難しい。

自動化ツールを作るときに本当に必要なのは、動作確認がすぐできること・エラーにすぐ気づけること・操作に迷わないこと。この3つが整ってはじめて、日常で使えるツールになる。

結論:カスタムメニューとトースト通知は、GASを「実戦投入できる状態」にする最短ルートだ

GASでできることは多い。だが、作って満足で終わるスクリプトが多いのも事実だ。

カスタムメニューを設置すれば、毎回エディタを開く手間がなくなる。トースト通知を入れれば、処理の状態を確認するためにログを開く手間がなくなる。

どちらも数行のコードで実現できる。難しくはない。やるかどうかだけの問題だ。

GASの制限に引っかかるような大規模な処理でなければ、この仕組みで十分に日常の業務を自動化できる。まずはシンプルな処理から試して、「ちゃんと動いている」を自分で確認してみてほしい。

自動化システムが完成しコーヒーを飲みながら余裕の表情で画面を眺めるビジネスパーソンのイラスト

\登録料・利用料はもちろん無料!/

コメント

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