GAS『Trigger Already Exists』エラーの原因・対処まとめ
- 作成日 2025.10.20
- その他
この記事では、Google Apps Script(GAS)で頻発する『Trigger Already Exists』エラーの発生条件や、対処方法を具体例やサンプルコードと共にまとめています。WordPressのブログに直接貼り付けてすぐ使えるよう、h1とh3タグのみで構成しています。
目次
『Trigger Already Exists』エラーとは
GASで同一スクリプトに同一トリガーを複数回追加しようとすると発生するエラー。既に同じ種別や同じ関数、同一イベントのトリガーが存在することが原因。
エラーが発生する主な条件
- すでに追加されているトリガーと同一種類・関数・イベントのトリガーをcreateメソッドなどで再度追加した場合
- デプロイやテスト時にスクリプトの初期化コードが繰り返し実行された場合
トリガー一覧の確認方法
function listTriggers() {
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
Logger.log(triggers[i].getHandlerFunction() + ' : ' + triggers[i].getEventType());
}
}このコードで、現在設定されている全トリガーの関数名とイベントタイプを確認できる。
トリガーの重複を防ぐ方法
function createUniqueTrigger() {
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
if (triggers[i].getHandlerFunction() === 'myFunction' && triggers[i].getEventType() === ScriptApp.EventType.TIME_DRIVEN) {
return;
}
}
ScriptApp.newTrigger('myFunction')
.timeBased()
.everyDay()
.atHour(8)
.create();
}同じ関数とイベント種別のトリガーが無い場合のみ新規作成することで、重複を防げる。
不要トリガーの削除手順
function deleteTriggersByFunction(funcName) {
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
if (triggers[i].getHandlerFunction() === funcName) {
ScriptApp.deleteTrigger(triggers[i]);
}
}
}トリガー作成前や不要なトリガー整理の際に活用できる。
トリガー作成のベストプラクティス
- トリガー作成時には必ず既存トリガーとの重複チェックを行う
- 初回セットアップやデプロイ用関数では明示的にトリガー管理の処理を実装する
自動実行コードサンプル
function setupTriggers() {
deleteTriggersByFunction('myFunction');
ScriptApp.newTrigger('myFunction')
.timeBased()
.everyDay()
.atHour(8)
.create();
}事前に同名関数の既存トリガーを削除してから新規作成することで、意図しない重複エラーを防ぐ。
トリガー管理で注意したいポイント
- プロジェクト全体のトリガー設計を整理しておく
- 必要がないタイミングでトリガー追加処理が動作しないようガードロジックを入れる
- 予期せぬ重複登録を検出できる機能も加えるとより安全
まとめ
- 『Trigger Already Exists』は重複トリガー作成によって発生
- 事前チェック・既存トリガー削除などで確実に回避できる
- トリガー管理用関数を1つ用意しておくと運用がラク
-
前の記事
GAS『Insufficient Permissions』の原因と対処法 2025.10.20
-
次の記事
GAS『Invalid Argument: Expected』の原因と対処法 2025.10.21
コメントを書く