🐈

GAS トリガーの設定をスクリプトから設定する方法

2024/05/30に公開

はじめに

これまで、GASのトリガーの設定をトリガーのページで行っていました。
今回は、スクリプトからも設定できることを知ったので、その方法を共有します。

スクリプトでトリガーを設定する方法

以下のコードで、スクリプトからトリガーを設定することができます。ScriptApp.newTrigger('実行したい関数名')の'実行したい関数名'部分に、トリガーへ登録したい関数名を記述します。

スプレッドシートを編集したときや、時間条件で発動するなど、トリガーの発動条件を決めます。

  • スプレッドシートを編集したときにトリガーを発動
const 実行したい関数名 = (e) => {
  //実行したい機能
};

const createEditTrigger = () => {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  ScriptApp.newTrigger('実行したい関数名')
    .forSpreadsheet(spreadsheet)
    .onEdit()
    .create();
};
  • 指定した日時にトリガーを発動
const 実行したい関数名 = (e) => {
  //実行したい機能
};

const setTrigger = () => {
    ScriptApp.newTrigger('実行したい関数名')
      .timeBased()
      .onWeekDay('トリガーを実行したい曜日') 
      .create();
};

既存のトリガーの設定を削除する

これだと、スクリプトを実行するたびにトリガーの設定が増えていきます。
スクリプトを実行するたびにトリガーの設定が増えていかないように、既存のトリガーの設定を削除する関数を追加します。

const deleteExistingTriggers = () => {
  const triggers = ScriptApp.getProjectTriggers();
  triggers.forEach(trigger => {
    if (trigger.getHandlerFunction() === '実行したい関数名') {
      ScriptApp.deleteTrigger(trigger);
    }
  });
};

const createEditTrigger = () => {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  deleteExistingTriggers(); // 既存のトリガーを削除
  ScriptApp.newTrigger('実行したい関数名')
    .forSpreadsheet(spreadsheet)
    .onEdit()
    .create();
};

おわりに

今回は、「GASのトリガーの設定をスクリプトから設定する方法」の共有でした。
最後まで読んでいただき、ありがとうございました!!

Discussion