我正在尝试在此代码中添加另一行代码,以使“绿色”单元格在给定的时间后切换回“黄色”。我应该添加其他功能还是添加其他else语句?是否可以再嵌套一次Utilityutils.sleep函数,并且仅在满足大于条件的条件时才触发它?
此外,如果我想让它遍历而不是列,并查明代表表格的特定单元格。想想女主人的座位表可以在行的offset子句中完成。并且此代码是否也可以在另一张纸上运行,而只是在颜色更改和时间戳记在另一张纸上运行的同时,向女主人显示复选框?
现在,我创建了仅满足2个条件的时间戳。一定时间后,Un单击变为绿色,然后单击变为红色。如果我需要创建另一个函数,我将同时运行这两个函数,或者只是向当前函数添加更多var,以包括满足我的第三个条件,即绿色到黄色,这表明鹿角网桌准备就位,而红色则表明它们已经到餐桌旁已经很长时间了,但仍然被占用
function onEdit(e) {
var s = SpreadsheetApp.getActiveSheet(); // the active sheet (no need to check if the sheet == sheet1 as the active sheet will always be the one that's being edited)
var r = e.range; // the range of the edited cell
var c = r.getColumn(); // the column of the range
var timeDelay = 5; // number in seconds
var checkbox = r.getValue(); // the value of the checkbox after being
edited
var date = new Date(); // the date for the timestamp
if (c == 3 && checkbox === true) { // if the checkbox has been checked,
change the color to red
var nextCell = r.offset(0,1);
Utilities.sleep(timeDelay * 100); // Utilities.sleep takes a number in
milliseconds
nextCell.setValue(date).setBackground("red");
} else if (c == 3 && checkbox === false){ // unchecked switch to green
var nextCell = r.offset(0,1);
nextCell.setValue(date).setBackground("green");
Utilities.sleep(timeDelay * 1);
}
}
任何时候我尝试添加另一个else语句都不会,并且如果我向绿色添加了另一个条件,如果要使其在x分钟后变为黄色,它会跳到绿色,然后变成黄色而不是黄色两者之间摇摆不定
答案 0 :(得分:0)
也许您可以使用类似这样的东西:
function onEdit(e) {
var r = e.range;
var c = r.columnStart;
var date = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyyMMdd HH:mm:ss");
if(e.range.columnStart==3 && e.value) {
switch (Number(e.value)) {
case 1:
e.range.offset(0,1).setValue(date).setBackground("red");
break;
case 2:
e.range.offset(0,1).setValue(date).setBackground("green");
break;
default:
e.range.offset(0,1).setValue(date).setBackground("yellow");
break;
}
}
}