1. ホーム
  2. google-apps-script

[解決済み] onEditのシンプルなトリガーがトリガーされることがないようです。

2022-02-19 18:09:13

質問

これまで OnEdit しかし、たった今、問題に出くわしました。基本的に、カラム6(f)が編集されたとき、値をチェックしたいのですが、もしそれが "In Progress" なら、メールを送るための関数を実行させたいのです。

var summary = ss.getSheetByName("Summary")
var data = summary.getRange(4, 1, summary.getLastRow(), summary.getLastColumn());
var learnerObjects = getRowsData(summary, data);
var lastrow = summary.getLastRow();

function onEdit(e){
  var sheet = e.source.getActiveSheet();
  var CellRow = sheet.getActiveRange().getRow();
  var CellColumn = sheet.getActiveRange().getColumn();

  if (sheet.getSheetName() == "Summary"){
    if (CellColumn == 6){
      var learner = learnerObjects[CellRow-4];
      var status = learner.status;
      if (status == "In Progress"){
        var enrolmentdate = learner.enrolmentDateDdmmyyyy;
        var surname = learner.surname;
        var firstname = learner.firstName;
        var qualification = learner.qualification;
        var company = learner.company;
        messagePT3 = firstname + " " + surname + " from " + company + " doing " + qualification + " has been added to your tracker.";
        sendTrackerEmail(messagePT3);
        SpreadsheetApp.getActiveSpreadsheet().toast('Email has been sent to Assessor regarding new learner', 'Assessor Notified', 3);
      }
    }
  }
}

これはそのためのメインコードです、私が言うようにデバッグするとき、それはうまく動作します、しかし、私はデバッグしていないとき、それは決してトリガーされるようです、私はこれを行うための他の方法はありますか?

F列でデータ検証を行っていますが、これはセルを"Completed", "Withdrawn", "Suspended", "In Progress" に制限しています - これは効果がないはずです?

私が知っているのは onEdit は、スプレッドシートの特定の部分の変更を監視するために使用しているため、トリガーされています。

解決方法は?

その onEdit() トリガーはいわゆるシンプルなトリガーで、アクションのフィールドが限定されています。 それは、アクティブなユーザーの権限の下で自動的に、そして、静かに実行されるので、例えば、メールを送ることができないなど、承認を必要とする何もすることができません!

解決方法は簡単です:関数名を他のものに変更し(例えばmyOnEdit)、その関数を実行するインストール可能なonEditトリガーを設定します(メニューリソース/現在のスクリプトトリガー/スクリプトエディタで新しいトリガーを作成します)。

今回は、誰かがスプレッドシートを編集したときに、あなた(メールを送信する人)として実行されます。

その件に関するドキュメントは こちらで購入できます .