使用JS创建动态座位表

时间:2019-06-02 19:25:31

标签: javascript if-statement google-apps-script google-sheets

我正在尝试在此代码中添加另一行代码,以使“绿色”单元格在给定的时间后切换回“黄色”。我应该添加其他功能还是添加其他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分钟后变为黄色,它会跳到绿色,然后变成黄色而不是黄色两者之间摇摆不定

1 个答案:

答案 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;
    }
  }
}