GASプロジェクトにセットされているトリガーをすべて削除するGoogle Apps Scriptです。使う機会はあんまりないかもしれませんがなんとなく作りました。
特にありませんが、スプレッドシートのコンテナバインド型として実装しています。
少し書き換えればスライドやドキュメント等でも動作すると思います。
サンプルとして3つのトリガーを用意しました。
上のメニューにある「スクリプト実行」から「すべてのトリガーを削除する」を実行します。
「このGASプロジェクトにセットされているトリガーをすべて削除します よろしいですか?」という確認メッセージが表示されます。
キャンセルを押せばスクリプトが終了します。
トリガーをまとめて消すことはあまり無いと思いますので、確認を一枚挟んでいます。
ちょっと待つと終了メッセージが表示されます。
削除した件数及び、トリガーによって呼び出されていた関数一覧が出ます。
トリガーのページを見ると、消えていますね!
もし消えていない場合はページをリロードしてみてください。
トリガーが消えた(無い)状態でもう一度スクリプトを実行してみると、
「セットされているトリガーはありませんでした」とメッセージが表示されます。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00123/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('すべてのトリガーを削除する', 'delete_all_triggers');
// メニューを画面に追加する
menu.addToUi();
}
function delete_all_triggers() {
// メッセージを表示するためにUIオブジェクトを取得
const ui = SpreadsheetApp.getUi();
// 実行前の確認メッセージを表示する
const response = ui.alert('このGASプロジェクトにセットされているトリガーをすべて削除します\nよろしいですか?', ui.ButtonSet.OK_CANCEL);
// キャンセルが押されたらスクリプトを終了する
if (response == ui.Button.CANCEL) {
return;
}
// すべてのトリガーを取得する
const triggers = ScriptApp.getProjectTriggers();
// もしトリガーが1個もセットされていない場合はスクリプトを終了する
if (triggers.length == 0) {
ui.alert('セットされているトリガーはありませんでした');
return;
}
// 最後にメッセージに表示するため、トリガーで呼び出している関数名を格納する配列を用意
const result = [];
// トリガーの数だけループする
for (let i = 0; i < triggers.length; i++) {
// トリガーで呼び出される関数名を取得
let handler_function = triggers[i].getHandlerFunction();
// 関数名を結果格納用配列に追加
result.push(handler_function);
// トリガーの削除を実行
ScriptApp.deleteTrigger(triggers[i]);
}
// 削除完了メッセージを表示
ui.alert(result.length + '件のトリガーを削除しました\n\n呼び出されていた関数は以下です\n' + result.join('\n'));
}