我一直在使用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);
}
}
}
}
这是它的主要代码,当我说调试时它工作正常,但是当我不调试时它似乎永远不会被触发,我还有其他方法可以做到这一点吗?
我在 F 列上进行了数据验证,但这将单元格限制为“已完成”、“撤回”、“暂停”或“进行中” - 这不应该产生影响,不是吗?
我知道onEdit
当我使用它来监视电子表格某些部分的更改时,将被触发。
The onEdit()
触发器是所谓的“简单触发器”,其作用范围有限。
由于它在活动用户的授权下自动且静默地运行,因此它无法执行任何需要授权的操作,例如它无法发送电子邮件!
解决方案很简单:将函数名称更改为其他名称(例如 myOnEdit)并设置可安装的 onEdit 触发器来运行该函数。(菜单资源/当前脚本触发器/在脚本编辑器中创建新触发器。)
这次,当有人编辑电子表格时,它将像您一样执行(您将发送电子邮件)。
关于该主题的文档是可以在这里找到 https://developers.google.com/apps-script/understanding_triggers#Simple.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)