「自動で動く」仕組みを作る
コードを書けるようになるだけでは、自動化は完成しません。
「いつ動かすのか」「どう使いやすくするのか」まで設計して、はじめて実務で役立つ仕組みになります。
このStepで学ぶこと
Step 1〜3では、コードを書いて、その場で自分で実行する流れを学んできました。 しかし実務では、毎回エディタを開いて実行ボタンを押すのは非効率です。
そこで必要になるのが、トリガーとカスタムメニューです。 トリガーは「自動で動かす仕組み」、カスタムメニューは「使う人が押しやすくする仕組み」です。
トリガー
時刻やイベントをきっかけに、GASを自動実行する仕組みです。 「毎朝9時に送る」「編集されたら動く」などが実現できます。
カスタムメニュー
スプレッドシート上に専用メニューを追加し、 エディタを開かずに処理を実行できるようにする仕組みです。
トリガー設定の全手順(エディタ操作)
コードを書いただけでは自動化は完了しません。GASエディタの「トリガー管理画面」から、 いつ・何をきっかけに動かすのかを設定する必要があります。
まず理解しておきたいこと
トリガーとは、「この関数を、指定したタイミングで自動的に実行してください」という予約設定です。 つまり、コード本体とは別に、「動かし方の設定」が必要になります。
トリガー画面を開く
GASエディタの左側にあるサイドバーから、時計のアイコン(トリガー)をクリックします。
「プロジェクトのトリガー」という画面が表示されたら、右下の「+ トリガーを追加」を押します。
基本設定を入力する
表示されたポップアップ画面で、上から順に設定していきます。 最初は項目が多く見えますが、「何を」「いつ」「何をきっかけに」動かすかを選んでいるだけです。
- 時間主導型: 毎日、毎時などのスケジュール
- スプレッドシートから: 開いた時、編集した時など
詳細な実行タイミングを決める
「時間主導型」を選んだ場合、さらに実行頻度を決めます。 ここでの選択が、そのまま業務フローに直結します。
よく使う設定例:
保存と承認
最後に「保存」を押します。必要に応じて、再度Googleから承認を求められることがあります。 Step 1で学んだ承認手順と同じ考え方で進めれば問題ありません。
初心者がつまずきやすい点
- トリガーを設定しただけで、すぐ何かが起きるわけではありません。指定時刻や指定イベントまで待つ必要があります。
- 関数名を変えたのに、トリガー設定を更新していないと、古い関数名のままで動かなくなります。
- 「毎日9時」と見えても、実際には「9時〜10時の間」で実行される設定である点に注意が必要です。
実務での留意点
トリガーは便利ですが、放置すると「誰も覚えていないのに毎日動いている処理」になりがちです。 実務では、何のためのトリガーか、どの関数が動くのか、停止すると何に影響があるかを記録しておくと運用しやすくなります。
⚠️ 知っておくと安心なこと:エラー通知
設定画面の一番下に「失敗した時の通知設定」があります。初期設定の「毎日通知を受け取る」にしておけば、 万が一プログラムが止まった時もGoogleからメールで知らせてくれるので安心です。
Trigger Challenge
「毎日、深夜0時に起動して、カレンダーから『今日の予定』を取得し、自分のメール宛に送信するプログラムを想定してください。トリガー画面で選択すべき『イベントのソース』と『タイマーの種類』は何ですか?」
- イベントのソース: 時間主導型
- トリガーのタイプを選択: 日付ベースのタイマー
- 時刻を選択: 午前0時〜1時
ここでは「人の操作ではなく、毎日決まった時刻に動かしたい」ため、時間主導型を選ぶのが正解です。
カスタムメニューの作成
トリガーが「自動で動かす仕組み」なら、メニューは「使いやすさを高める仕組み」です。
スプレッドシート上に専用メニューを追加すれば、エディタを開かなくても処理を実行できます。
なぜメニューが必要なのか
自分だけが使うスクリプトなら、エディタから実行してもよいかもしれません。 しかし、実務では「GASを知らない人にも使ってもらう」場面が多くあります。 そのとき、シート上のメニューから操作できると、利用のハードルが大きく下がります。
function onOpen() { const ui = SpreadsheetApp.getUi(); // メニューの「看板」を作り、そこに「ボタン」を追加していく ui.createMenu("🛠 2026業務効率化") .addItem("メール一斉送信", "sendBulkEmail") .addItem("カレンダー書き出し", "exportEvents") .addToUi(); } // ※ 実際のボタンに割り当てる中身の関数 function sendBulkEmail() { Browser.msgBox("メール送信を開始します。"); }
このコードの流れ
onOpen()はシートを開いたときに動く特別な関数です- メニュー名を作る
- そのメニューの中に実行項目を追加する
- 最後に画面へ反映する
初心者がつまずきやすい点
onOpen()を書いただけでは、今開いているシートにはすぐ反映されないことがあります。再読み込みが必要です。addItem("表示名", "関数名")の関数名は、実在する関数名と一致していないと動きません。- メニューはスプレッドシート用のUI機能なので、単体スクリプトでは使い方が変わります。
実務での留意点
実務では、メニュー名や項目名を分かりやすくすることが重要です。 開発者には分かる名前でも、利用者には意味が伝わらないことがあります。 「一括送信」「予定更新」「レポート作成」など、動作がそのまま伝わる名前にすると使いやすくなります。
実務ではどう使い分ける?
トリガー向きの処理
- 毎朝の予定通知
- 定期レポートの自動送信
- 締切チェックやリマインド
- 夜間バッチのような定期更新
カスタムメニュー向きの処理
- 必要な時だけ手動実行したい処理
- 担当者が確認してから実行する処理
- 一括作成・一括更新などの操作
- GASに不慣れな人にも使ってもらう機能
使い分けの考え方
「自動で決まったタイミングに動くべきもの」はトリガー、 「人が内容を確認してから使いたいもの」はカスタムメニュー向きです。 この判断ができると、単なるコードではなく、実務に乗る仕組みとして設計できるようになります。
Step 4 完了!
おめでとうございます。これで「コードを書く」段階から一歩進み、
「仕組みとして動かす」段階に入りました。
トリガーとメニューを使いこなせるようになると、GASが日常業務の中で本当に役立つようになります。