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);
}
エラーが起きたときに内容をそのまま表示させると、ログを確認しに行く前に「何が原因か」の手がかりが得られる。
私のブログ投稿システムでもこの構造を使っていて、何か問題が起きたとき「スプレッドシートの右下を見れば状況がわかる」という状態にしてある。シンプルな実装だが、運用時の安心感がまるで違う。

eddie’s Advice
GASは「無料で使える高機能ツール」として持ち上げられることが多いが、制限の壁は意外に低い。それを知らずに「GASで全部自動化しよう」と設計すると、動かない・止まるを繰り返して時間を無駄にする。
カスタムメニューやトースト通知のような小さな工夫は、自動化を「作っただけ」から「実際に使える状態」に引き上げてくれる。コードを書くことより、使い続けられる仕組みを作る方が難しい。
自動化ツールを作るときに本当に必要なのは、動作確認がすぐできること・エラーにすぐ気づけること・操作に迷わないこと。この3つが整ってはじめて、日常で使えるツールになる。
結論:カスタムメニューとトースト通知は、GASを「実戦投入できる状態」にする最短ルートだ
GASでできることは多い。だが、作って満足で終わるスクリプトが多いのも事実だ。
カスタムメニューを設置すれば、毎回エディタを開く手間がなくなる。トースト通知を入れれば、処理の状態を確認するためにログを開く手間がなくなる。
どちらも数行のコードで実現できる。難しくはない。やるかどうかだけの問題だ。
GASの制限に引っかかるような大規模な処理でなければ、この仕組みで十分に日常の業務を自動化できる。まずはシンプルな処理から試して、「ちゃんと動いている」を自分で確認してみてほしい。

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


コメント