GAS トリガー完全ガイド|Google Apps Scriptの自動実行を実務レベルまで解説
Google Apps Script(GAS)を触り始めると、最初は「ボタンを押して処理を実行する」ところから始まります。 でも実務で本当に価値を発揮するのは、その先です。
毎朝9時に自動集計したり、スプレッドシート更新を検知して通知したり、ファイル整理を夜中にまとめて動かしたり。 そんな「人がやっていた作業」を自動化する中心機能がトリガー(Trigger)です。
旅先で朝起きたら予約状況を確認するように、システムにも「決まった時間に決まった動き」をさせる仕組みが必要になります。 GASのトリガーを理解すると、単なるスクリプトが「業務システム」に変わります。
この記事では初心者向けの基礎から、実務で重要になる設計思想までまとめて解説します。
GASトリガーとは?Google Apps Script自動実行の基本
GASのトリガーとは、 決まった条件やタイミングでスクリプトを自動実行する仕組みです。
通常のGASは「実行ボタン」を押して動かします。 しかしトリガーを使えば、人が操作しなくても処理が動きます。
GASトリガーでできること
- 毎日自動で売上集計
- スプレッドシート更新時の通知
- フォーム送信後の処理
- 定期バッチ処理
- 簡易RPAの構築
- ファイル整理の自動化
一言でいうと、
GASを「便利なコード」から「自動化システム」に進化させる核心機能
GASトリガーの種類|シンプルトリガーとインストール型
シンプルトリガー(標準機能)
GASには最初から利用できる自動実行機能があります。 これがシンプルトリガーです。
function onEdit(e) {
// シート編集時に実行
}
代表的なシンプルトリガー一覧
| トリガー | 実行条件 |
|---|---|
| onEdit | シート編集時 |
| onOpen | ファイルを開いた時 |
| onFormSubmit | フォーム送信時 |
特徴
- 設定不要
- 自動で有効
- 権限を必要とする処理は制限あり
初心者が最初に触るのはほぼこのタイプです。
インストール型トリガー(実務の主役)
実務で本格運用するならこちら。 インストール型トリガーは、自分で設定する高機能な自動実行です。
UIから設定する方法
- GASエディタを開く
- 左メニュー「トリガー」
- 「+トリガー追加」
- 実行条件を設定
コードで作成する方法
function createTrigger() {
ScriptApp.newTrigger("main")
.timeBased()
.everyDays(1)
.atHour(9)
.create();
}
これで毎朝9時に自動実行できます。
運用が始まると、「気づいたら毎日処理が回っている」という状態になります。 ここまで来るとかなり楽です。
時間トリガー|GAS自動化で最重要
実務で最も使うのが時間ベースのトリガーです。
毎日決まった時間に実行
function main(){
Logger.log("実行");
}
設定例
- 毎日9時
- 毎週月曜日
- 毎月1日
テスト用の毎分実行
ScriptApp.newTrigger("main")
.timeBased()
.everyMinutes(1)
.create();
開発中は毎分実行を作ることもあります。 ただし本番環境では実行回数に注意です。
onEditイベントトリガー|シート更新を検知する
スプレッドシート運用で圧倒的に使うのがonEditです。
function onEdit(e){
const range = e.range;
const value = e.value;
Logger.log(range.getA1Notation());
}
eventオブジェクトを理解する
| プロパティ | 内容 |
|---|---|
| e.range | 編集セル |
| e.value | 入力値 |
| e.source | 対象スプレッドシート |
例えば営業チームが案件を更新した瞬間、通知を飛ばしたり、ステータス変更を自動化したりできます。
ここから「イベント駆動設計」が始まります。
GASトリガー実務パターン4選
① 定期集計
function dailyJob(){
const sheet =
SpreadsheetApp
.getActiveSpreadsheet()
.getActiveSheet();
const data =
sheet.getDataRange()
.getValues();
}
売上・在庫・アクセス数集計で頻出です。
② 入力チェック
function onEdit(e){
if(e.range.getColumn()===2){
if(e.value===""){
e.range.setBackground("red");
}
}
}
入力漏れ検知に便利です。
③ 更新通知
function onEdit(e){
GmailApp.sendEmail(
"test@example.com",
"変更通知",
"更新されました"
);
}
簡易RPAとして非常に強力です。
④ バッチ処理
function batchProcess(){
const files =
DriveApp.getFiles();
while(files.hasNext()){
const file=files.next();
Logger.log(file.getName());
}
}
夜間処理や定期整理で活躍します。
実務で重要なGASトリガー設計の考え方
冪等性(べきとうせい)
何回実行されても問題が起きない設計です。
if(
sheet.getRange("A1")
.getValue()!=="済"
){
sheet.getRange("A1")
.setValue("済");
}
自動処理では最重要レベルです。
二重実行対策
LockService
.getScriptLock()
.tryLock(10000);
同時実行による事故を防ぎます。
実行時間制限を意識する
- GAS最大実行時間:約6分
- 大規模処理は分割
- 状態管理を活用
エラー対策
try{
//処理
}catch(e){
Logger.log(e);
}
自動実行は「止まって気づかない」が一番危険です。 ログ管理は必須です。
GASトリガー管理方法
一覧取得
const triggers =
ScriptApp
.getProjectTriggers();
削除
ScriptApp.deleteTrigger(trigger);
不要なトリガーが増えると管理が大変になります。 定期整理がおすすめです。
シンプルトリガーとインストール型比較
| 項目 | シンプル | インストール型 |
|---|---|---|
| 設定 | 不要 | 必要 |
| 権限制限 | あり | なし |
| Gmail送信 | 不可 | 可能 |
| 実務向き | △ | ◎ |
結論はシンプルです。
実務ならインストール型トリガーが基本
GASトリガーでよくあるトラブル
onEditが動かない
原因: スクリプト側で変更した値では発火しません。 ユーザー操作のみ対象です。
権限エラー
初回認証を忘れているケースが多いです。
時間がずれる
GASは指定時刻ぴったりではなく、 数分前後する場合があります。
まとめ|GASトリガーを理解すると自動化が始まる
トリガーの本質は非常にシンプルです。
- 時間で動かす
- イベントで動かす
- 安全に設計する
構造としては、
トリガー → 関数 → API処理
という流れになります。
最初は「便利な自動実行機能」に見えます。 でも設計まで考え始めると、GASは単なるスクリプトではなく業務システムになります。
毎日同じ作業を繰り返しているなら、一度トリガー設計を見直してみてください。 自動化できる場所は、想像以上にたくさんあります。







0 件のコメント:
コメントを投稿