見出し画像

GAS学習note:Day6 トリガーで自動実行!〜放っておいても動くGASを作ろう〜

はじめに

前回(Day5)では、関数を整理して再利用できるGASコードを作りました。
でも、まだ手動で「▶ 実行」ボタンを押さないと動きませんよね。

そこで今回は、GASの最大の魅力とも言える機能——

トリガー(Trigger)による自動実行
をマスターします。

「毎朝8時に在庫チェックを自動実行」
「週1回、期限切れをメールで通知」

こうした仕組みを作れば、自分がいなくても動く業務ロボットが完成します。



1️⃣ トリガーとは?

トリガー(Trigger)とは、GASを自動で動かすきっかけのこと。

たとえば:

  • 時間主導型トリガー:毎日・毎週・特定の時刻に自動実行

  • 🧾 編集トリガー:シートの内容が変更された時に動く

  • 📧 フォーム送信トリガー:Googleフォーム送信後に動く

今回は、一番使われる「時間トリガー」を使っていきます。


2️⃣ 例:毎朝8時に期限チェックを自動実行する

ステップ①:スクリプトを開く

  • メニューの「拡張機能」→「Apps Script」をクリック

ステップ②:自動化したい関数(例:dueAlert())を確認

Day4で作った期限チェック関数を使います👇

function dueAlert() {
  const sh = SpreadsheetApp.getActive().getActiveSheet();
  const last = sh.getLastRow();
  const today = new Date();
  today.setHours(0, 0, 0, 0);

  for (let r = 2; r <= last; r++) {
    const due = sh.getRange(r, 6).getValue();
    const status = sh.getRange(r, 7).getValue();
    if (!(due instanceof Date)) continue;
    due.setHours(0, 0, 0, 0);

    if (due < today && status === false) {
      sh.getRange(r, 8).setValue("期限切れ");
      sh.getRange(r, 6, 1, 3).setBackground("#f4cccc");
    } else {
      sh.getRange(r, 8).setValue("");
      sh.getRange(r, 6, 1, 3).setBackground(null);
    }
  }
}

ステップ③:トリガーを設定する

  1. 画面左の⏱️アイコン(トリガー)をクリック

  2. 「トリガーを追加」ボタンを押す

  3. 「実行する関数」→ dueAlert を選択

  4. 「イベントの種類」→「時間主導型」

  5. 「時間ベースのトリガー」→「日付ベースのタイマー」

  6. 「午前8時〜9時」などを選び、「保存」

これで毎朝自動で dueAlert() が実行されます🎉


3️⃣ ChatGPTと一緒に設定を確認してみよう

トリガーは便利ですが、最初は「動かない!」「エラーで止まる!」となることも。
そんな時こそ、ChatGPTを頼ってOKです。


💬 実際のやり取り(スクショ風)

📘 あなた(質問)

トリガーを設定したけど、実行ログに「Exception: You do not have permission to call getActiveSheet」って出ます。

🤖 ChatGPT(回答)

トリガー実行時は「ユーザー操作なし」で動くため、getActiveSheet() は使えません。
代わりにシート名を明示的に指定しましょう👇

const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("タスク管理");

📘 あなた

修正したら動きました! でも、初回実行で「承認が必要です」と出ました。

🤖 ChatGPT

それは正常です。初回だけGoogleがアクセス権限を確認します。
ダイアログで「承認を続ける」→「許可」を選んでください。

📘 あなた

OKです!翌朝ちゃんと自動で「期限切れ」になっていました✨


4️⃣ ChatGPTと学ぶ「自動化の思考法」

ChatGPTはコードだけでなく、仕組みを考える相棒にもなります。
たとえばこんな使い方👇

🧭 「毎週金曜に在庫をチェックして、補充要リストをメール送信するには?」
💡 ChatGPT:「トリガー+MailApp.sendEmail() の組み合わせでできますよ!」

こうして、単なるエラー修正ではなく、
業務設計 × AI × コード の三位一体で学んでいけるのが、生成AI時代の学び方です。


5️⃣ よくあるトラブルと対策

症状原因対処法getActiveSheet が動かないトリガー実行では「アクティブシート」が存在しないgetSheetByName("シート名") に変更権限エラーが出る初回実行時の認証「権限を確認」→「許可」で解決指定時刻に動かないGoogleサーバー側で若干のズレあり実行時刻は±15分の誤差を想定トリガーが消えたスクリプトをコピー・移動した新しいスクリプトで再設定が必要


まとめ:Day6で学んだこと

Day6では、「自分がいなくても動くGAS」 を実現するトリガー設定を学びました。

今日のポイント

  • トリガーは「GASを自動で動かすスイッチ」

  • 時間トリガーを使えば、定時実行が可能

  • ChatGPTを使えば、設定エラーも安心して修正できる

💡 GAS × トリガー × ChatGPT = “AIが支える自動化システム”

これであなたのGASは、毎朝・毎週・毎月、自分で動くようになりました。
次は、通知機能(メール・Slackなど) を組み合わせて、
「自動チェック+自動報告」に発展させていきましょう!

いいなと思ったら応援しよう!

この記事が参加している募集