1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS初歩】いらないトリガーを削除して新しいトリガーを設定する

Last updated at Posted at 2021-09-13

Googleフォームで定期的に回答を収集するときなど、イベントを設定するときにトリガーを作っては消して作っては消してと手作業で繰り返すことが面倒臭かったので、コードを書いた。

const TM_OP = 'YYYY-MM-DD HH:mm'; //実行してほしい時間

ScriptApp.getProjectTriggers()
         .forEach(i=>ScriptApp.deleteTrigger(i)); //不要なトリガーの除去
ScriptApp.newTrigger('setFormActive') //トリガーの作成
         .timeBased()
         .at(new Date(TM_OP))
         .create();

肝は、先にすべてのトリガーを削除してから新しいトリガーを追加する点。
まず ScriptApp クラスgetProjectTriggers() でプロジェクト内のトリガーを全部取得して、 deleteTrigger() でひとつずつ削除する。地道。

応用

もし特定のトリガーを削除したくない場合…例えば関数を基準にふるい分けをするときは getHandlerFunction() で関数名調べて、削除する・しないを決める。

ScriptApp.getProjectTriggers()
         .forEach(i=>{
           if(i.getHandlerFunction()!='[Function name]')
            ScriptApp.deleteTrigger(i)
         });

コード全体

form_open-close.gs(アンケートフォームの開閉)- GitHub(@togazo)

機能解説(補足)
  • 決まった時間になったらアンケートフォームの回答を受け付ける
  • 決まった時間になったらアンケートフォームの回答を締め切る
  • スクリプト実行後のフォームの表示確認での回答の締め切りのON/OFFを繰り返していると締め切り忘れる場合があるので、一通りの作業が終了したであろう5分後に締め切る
  • ついでにスプレッドシートに収集している過去の回答を非表示にする(フォームを使い回す時にアクティブな回の分だけパッと見たいから)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?