似乎永远不会触发onEdit简单触发器

And*_*ndy 2 google-sheets google-apps-script google-apps-script-simple-triggers

我已经使用OnEdit了一段时间并且工作得很好 - 但是刚才我遇到了一个问题 - 基本上当编辑第6列(f)时我希望它检查值 - 如果它是"进行中"我想要它然后运行一个函数来发送一个电子邮件,当我调试它 - 它完全按照我想要的方式工作,但是当我没有调试它似乎永远不会运行.

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);
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是它的主要代码,在调试时,我说它工作正常,但是当我没有调试它似乎永远不会被触发时,有没有其他方法让我这样做?

我在F列上进行了数据验证,但是这会将单元格限制为"已完成","已撤销","已暂停"或"正在进行中" - 这应该不会产生影响吗?

我知道onEdit当我用它来监控电子表格某些部分的更改时,它会被触发.

Ser*_*sas 7

onEdit()触发器是所谓的"简单触发"有作用的领域有限.由于它在活动用户的权限下自动且无声地运行,因此无法执行任何需要授权的操作,例如它无法发送电子邮件!

解决方案很简单:将函数名称更改为其他名称(例如myOnEdit)并设置可安装的onEdit触发器以运行该函数.(菜单ressource/current script trigger /在脚本编辑器中创建新触发器.)

这次当任何人编辑电子表格时,它将以您(您将发送电子邮件)的形式执行.

有关该主题的文档可在此处获得.