森田 嶺

知らないと損!GASのトリガーを徹底解説(応用編)

知らないと損!GASのトリガーを徹底解説(応用編)サムネイル画像

前回の記事では、Google Apps Script(以下GAS)  トリガーの基本的な情報について説明しました。「インストール型トリガー」「シンプルトリガー」の概要から、2つのトリガーの違いまで、トリガーを活用する上で最低限の知識は理解できたと思います。今回の応用編の記事では、実際にトリガーを設定するための手順について詳しく解説します。尚、今回説明する内容は、全て「インストール型トリガー」を前提とした手順になります。

基本編はこちら:知らないと損!GASのトリガーを徹底解説(基本編)

GASのトリガーを設定する手順は2種類ある

インストール可能なトリガーの設定方法は、大きく分けて「手動設定」と「プログラムによる設定」の2通りがあります。本章では、それぞれの設定手順について説明します。

GASコンソールから手動で設定する手順

GASエディタの画面からGUI操作でトリガーを設定する方法です。以下の手順で設定を行ってください。  

1。GASプロジェクトを開き、定期実行したいGASプログラムを作成します。
※例えば、以下のようなメールを送信するプログラムを作ったとします。

Javascript
/**
 * @summary メールを送信するGASプログラム
 */
function sendEmail() {
  // 送信先のメールアドレスを設定してください
  const recipient = "送信先のメールアドレス";
  // メールの件名を設定してください
  const subject = "件名を設定してください";
  // メールの本文を設定してください
  const body = "本文を設定してください";

  try {
    // GmailAppを使用してメールを送信します
    GmailApp.sendEmail(recipient, subject, body);
    // メール送信成功のログを出力します
    Logger.log("メールが正常に送信されました: " + recipient);
  } catch (e) {
    // エラーが発生した場合、エラー内容をログに出力します
    Logger.log("メール送信中にエラーが発生しました: " + e.message);
  }
}

2.左側のメニューから「トリガー」(時計のアイコン)をクリックします 。  

1-Jun-26-2025-11-15-43-2174-PM

3.トリガー管理画面が表示されたら、右下にある「トリガーを追加」ボタンをクリックします 。

2-Jun-26-2025-11-15-42-5817-PM

4.「トリガーを追加」ダイアログで、以下の項目(主な項目)を設定します。

設定項目

説明

実行する関数を選択

トリガーによって実行したい関数をスクリプト内から選択します。

実行するデプロイを選択

通常は「Head」(最新のコード)を選択します。

イベントのソースを選択

​​トリガーのきっかけとなるイベントの種類を選択できます。「時間主導型」「カレンダーから」から選択することができます。

時間ベースのトリガーのタイプを選択

※イベントのソースで「時間手動型」を選択した場合

以下からタイプを選択することができます。

  • 特定の日時
  • 分ベースのタイマー
  • 時間ベースのタイマー
  • 日付ベースのタイマー
  • 週ベースのタイマー
  • 月ベースのタイマー

時間の間隔を選択(時間)

1、2、4、6、8、12時間の6つの値から一つを選択することができます。

エラー通知設定

トリガー実行時にエラーが発生した場合の通知頻度を設定できます。

3-Jun-26-2025-11-15-42-6084-PM

5.設定が完了したら「保存」をクリックします。

4-Jun-26-2025-11-15-42-4525-PM

これで、指定した条件で関数が自動実行されるようになります。

GASプログラムで設定する手順

もう一つの手順は ScriptApp サービスを利用して、GASのコード内でトリガーを作成する方法です 。これにより、手動では難しい動的なトリガー設定が可能になります。  基本的な流れは、ScriptApp.newTrigger('実行したい関数名') TriggerBuilder オブジェクトを取得し、続けてメソッドチェーンでトリガーの種類や条件を指定し、最後に .create() メソッドでトリガーを生成します。

例えば、スプレッドシートが編集された時に関数 myFunction を実行するトリガーを作成する場合は、以下のように記述します。

Javascript
function createSpreadsheetEditTrigger() {
  ScriptApp.newTrigger('myFunction')
     .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) // またはスプレッドシートIDを指定
     .onEdit()
     .create();
}

また、毎日午前9時に sendEmail 関数を実行する時間駆動型トリガーは以下のように作成できます。

Javascript
function createTimeDrivenTrigger() {
 ScriptApp.newTrigger('sendEmail')
      .timeBased()
      .atHour(9)
      .everyDays(1) // 1日ごと
      .create();
}

/**
 * @summary メールを送信するGASプログラム
 */
function sendEmail() {
  // 送信先のメールアドレスを設定してください
  const recipient = "送信先のメールアドレス";
  // メールの件名を設定してください
  const subject = "件名を設定してください";
  // メールの本文を設定してください
  const body = "本文を設定してください";

  try {
    // GmailAppを使用してメールを送信します
    GmailApp.sendEmail(recipient, subject, body);
    // メール送信成功のログを出力します
    Logger.log("メールが正常に送信されました: " + recipient);
  } catch (e) {
    // エラーが発生した場合、エラー内容をログに出力します
    Logger.log("メール送信中にエラーが発生しました: " + e.message);
  }
}

createTimeDrivenTrigger関数をGASで実行すると、トリガーが作成され、以下のようにトリガー画面でも設定データが表示されるようになります。これにより、毎日午前9時にメール送信処理が実行されるようになります。

5-Jun-26-2025-11-15-42-4396-PM

プログラムによるトリガー設定は、単に手動設定をコードで代替するだけでなく、より高度な自動化シナリオを実現する上で非常に強力です。例えば、ユーザーが特定の設定を行った場合にのみ新しいトリガーを自動で作成したり、不要になったトリガーを自動で削除したりするような、自己管理型のスクリプトを構築できます。また、スクリプトを他のユーザーに配布する際に、初期設定として必要なトリガーをプログラムで組み込んでおくことで、ユーザー側の設定の手間を省くことも可能です。このような柔軟性は、手動設定では得られない大きな利点です。

トリガーを利用する場合の注意点

インストール型トリガーの挙動で特に注意すべき点は、トリガーが常にそれを作成したユーザーのアカウント権限で実行されるという仕様の部分です。

これは、例えばスプレッドシートを複数人で共有して編集している状況で、あるユーザーAが「編集時にメールを送信する」というインストール可能なトリガーを設定したとします。その後、別のユーザーBがそのスプレッドシートを編集した場合でも、送信されるメールはトリガーを作成したユーザーAのアカウントから送信されます 。実際に編集操作を行ったユーザーBのアカウントから送信されるわけではありません。 

この仕様は、権限管理をシンプルにし、セキュリティを確保するための設計と考えられます。しかし、共有環境でスクリプトを利用する際には、この挙動を正しく理解しておくことが非常に重要です。理解していないと、誰がトリガーを設定し、誰の権限でスクリプトが動作しているのかが不明確になり、意図しないユーザー権限での処理実行や、メールの送信元に関する混乱、さらにはトリガー作成者のアカウントが停止された場合に全てのトリガーが機能しなくなるといった運用上の問題を引き起こす可能性があります。チームでGASを利用する際は、誰がトリガーを設定・管理するのか、そのアカウントの権限でどのような処理が行われるのかを明確にしておく必要があります。

トリガー管理とトラブルシューティング

トリガーを設定しても期待通りに動作しない、あるいはエラーが発生するといった問題に直面することは少なくありません。ここでは、トリガーの管理方法と、よくあるトラブルの原因およびその対処法について解説します。

トリガーの管理

設定したインストール可能なトリガーは、GASエディタの「トリガー」ページで管理します 。  トリガーの編集を行う場合は、ペンのアイコンをクリックし、削除や実行数等の詳細を確認したい場合は、トリガー一覧のレコード一番右のアイコンをクリックし、任意のメニューをクリックします。

6-Jun-26-2025-11-15-42-4841-PM

GASプログラムからトリガーを削除したい場合

不要になったトリガーはGASプログラムからも削除できます。プログラムからトリガーを削除する場合は、ScriptApp.getProjectTriggers() でトリガーのリストを取得し、対象のトリガーオブジェクトまたはトリガーIDを指定して ScriptApp.deleteTrigger() メソッドを使用します 。  
また、GASのトリガーには直接的な「一時停止」機能は用意されていません。しかし、トリガーの設定を残したまま実質的に動作を止めたい場合は、トリガーが実行する関数を、何も処理を行わない空の関数や、単にログを出力するだけの関数に一時的に差し替えるという方法で、擬似的な一時停止状態を作り出すことができます 。  

Javascript
function dummyFunctionForPausingTrigger() {
  Logger.log('トリガーは現在、一時停止中です。');
}

上記のような関数を作成し、一時停止したいトリガーの「実行する関数」をこれに変更します。

よくある原因と対応策

トリガーが期待通りに動作しない場合、考えられる原因は多岐にわたります。以下に代表的な原因とその対処法を挙げます。

よくある原因

対応策

設定ミス

トリガーの種類の選択ミス

「編集時」と「変更時」を間違えている、時間主導型トリガーで意図しない時間を設定しているなど 。設定内容を再確認しましょう。

実行する関数名の誤指定

トリガーに紐付ける関数名を間違って入力している 可能性があります。大文字・小文字も区別されるため正確に指定してください。

権限不足

スクリプトが実行に必要な権限(例: メール送信、カレンダー操作、外部APIアクセスなど)を得ていない場合、トリガーは失敗します 。 

GASエディタから、トリガーで実行したい関数を手動で一度実行してみてください。承認を求めるダイアログが表示されるので、許可を与えることで必要な権限が付与されます。

実行制限超過

1日の総実行時間やトリガーの実行回数などのクォータ上限に達している可能性があります 。GASエディタの「実行数」やGoogle Cloud Platformのダッシュボードで利用状況を確認しましょう。

スクリプト自体のエラー

トリガーによって呼び出される関数そのものにバグが含まれている場合、トリガーは正常に完了しません 。実行ログを確認し、エラーメッセージに基づいてスクリプトを修正してください。

ファイルが読み取り専用モードで開かれている

シンプルトリガーや一部のインストール型トリガーは、対象のファイルが読み取り専用(表示、またはコメント)の状態で開かれていると実行されません 。編集権限がある状態でファイルを開いてください。

トリガーのトラブルシューティングは、このように「トリガー自体の設定」「スクリプトのコード」「実行権限」「利用環境」「Googleサービスの制限」といった複数の側面から原因を探る必要があります。問題が発生した際には、これらのポイントを一つ一つ確認していくことで、解決の糸口が見つかるはずです。

実行ログで問題解決の手がかりを掴む

トリガーが期待通りに動作しない場合やエラーが発生している疑いがある場合、実行ログは問題解決のための最も重要な手がかりを提供してくれます。GASエディタの左側メニューにある「実行数」を選択すると、過去に実行された関数の履歴(トリガーによる実行も含む)を一覧で確認できます 。  

各実行履歴には、以下の情報が含まれています。

  • 実行された関数名
  • 実行開始時刻
  • 実行にかかった時間
  • ステータス(完了、失敗など)

ステータスが「失敗」となっている場合は、エラーメッセージと、エラーが発生したスクリプト内の行番号が記録されているため、バグの特定と修正に非常に役立ちます 。  

また、スクリプト内で Logger.log('メッセージ')console.log('メッセージ') を使用して出力したログも、この実行履歴の詳細画面で確認できます。これにより、処理がスクリプトのどの部分まで進んでいるのか、変数の値が期待通りになっているかなどを追跡し、デバッグを効率的に進めることができます。

実行ログは、特に時間駆動型トリガーやバックグラウンドで動作するイベント駆動型トリガーのように、ユーザーが直接実行の様子を目にすることがない処理の動作を可視化し、問題の原因を特定するための不可欠なツールです。ただし、ログが反映されるまでに数分程度の遅延が生じることがある点には留意しましょう 。トリガーを使った自動化を行う際には、この実行ログの確認方法を必ず覚えておきましょう。  

まとめ

今回の応用記事では、GASトリガーの具体的な設定方法からトラブルシューティングに至るまで、幅広く解説しました。まずは、この記事で得た知識を元に、身近な業務の中から簡単な自動化対象を見つけ、シンプルトリガーや基本的なインストール可能なトリガーから試してみることをお勧めします。小さな成功体験を積み重ねることで、GASとトリガーの便利さを実感できると思います。

そして、基本に慣れてきたら、次はより複雑な条件分岐を伴う自動化や、複数のGoogleサービスを連携させる高度なワークフローの構築、さらには外部APIとの連携といった、GASが持つさらなる可能性に挑戦してみてください。トリガーを使いこなす道は、業務改善のアイデアを形にし、日々の仕事をよりスマートで快適なものへと変えていく、エキサイティングな経験になるはずです。

森田 嶺
森田 嶺
大学卒業後、 AWS や Google Cloud 等、主にクラウドを基盤とした新規サービス開発の経験を経て、YOSHIDUMIに入社。Google ドライブ拡張サービス「Cmosy」「共有ドライブマネージャー」等、 Google Cloud を活用した自社サービスの開発に従事。現在、 Google 等が提供する生成AIを活用したサービスを開発中。
AIとセキュリティでビジネスを次のステージへ! StarterからEnterpriseまで最適なアップグレード戦略セミナー

14:00-15:00 オンライン

AIとセキュリティでビジネスを次のステージへ! StarterからEnterpriseまで最適なアップグレード戦略セミナー

詳細はこちら

ぶっちゃけどうなの? 経験者が語るグループウェア移行の落とし穴セミナー

13:00-14:00 オンライン

ぶっちゃけどうなの? 経験者が語るグループウェア移行の落とし穴セミナー

詳細はこちら

データはすべてドライブへ!Google ドライブ運用まるわかりセミナー

14:00-15:00 オンライン

データはすべてドライブへ!Google ドライブ運用まるわかりセミナー

詳細はこちら

Google Workspace ユーザー必見! AppSheet & Google Apps Script 連携で実現する業務改善セミナー

14:00-15:00 オンライン

Google Workspace ユーザー必見! AppSheet & Google Apps Script 連携で実現する業務改善セミナー

詳細はこちら

オンラインセミナー開催中

お申込みはこちらをCheck!

関連する他の記事をよむ