如何解决在Google Apps脚本中设置计时器
在表格中修改单元格后,我试图将计时器设置为24小时。如果24小时未编辑过该行,则该行必须锁定;否则在24小时之前进行编辑时必须将计时器重置为24小时。 Google Apps脚本编程的新手;任何建议将不胜感激
function onEdit(e) {
var range = e.range;
range.setNote('Last modified: ' + new Date());
ScriptApp.newTrigger("functionToLockCells").timeBased().after(24 * 60 *60 * 1000).create()
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
if ( triggers[i].getHandlerFunction() == "functionToLockCells") {
ScriptApp.deleteTrigger(triggers[i]);
}}
}
function functionToLockCells() {
//First cell to lock
var col = 1;
// Get last row with data in sheet
var lastRow = sheet.getLastRow();
//Loop until last row in sheet is passed
lockRange(lastRow,col);
}
解决方法
您可以在您的onEdit()
函数中添加代码,以创建计划的一次性触发器,以执行在单元格编辑后24小时内锁定单元格的功能。>
ScriptApp.newTrigger("functionToLockCells")
.timeBased()
.after(24 * 60 *60 * 1000)
.create()
}
如果此单元格在24小时内进行了编辑,则可以使用以下代码删除此触发器:
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
if ( triggers[i].getHandlerFunction() == "functionToLockCells") {
ScriptApp.deleteTrigger(triggers[i]);
}}
并再次使用此答案中的第一个代码段创建一个新的
。该过程可以如下:编辑感兴趣的单元格时,删除活动触发器并创建一个新触发器,该触发器将在24小时后执行该功能。如果24小时过去了,该单元将被锁定,因此可以/不应再对其进行编辑。因此,只需将触发器删除部分(第二个代码段)放在触发器创建代码(第一个代码段)之前,就可以正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。