Использование JS для создания динамической схемы рассадки - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь добавить еще одну строку кода в этот код, чтобы «зеленые» ячейки переключались обратно на «желтые» через заданный промежуток времени.я бы добавил еще одну функцию или добавить еще один оператор?Можно ли вложить функцию utilities.sleep еще раз и запустить ее только при выполнении условия больше чем?

Кроме того, если бы я хотел, чтобы это проходило, а не столбцы, и точно указывало конкретные ячейки, представляющие таблицы.Подумайте о хозяйке с ее таблицей рассадки, можно ли это сделать в предложении о смещении для рядов.и может ли этот код также быть запущен на другом листе и просто показывать флажки хозяйке, в то время как изменение цвета и отметка времени выполняются на другом листе?

Сейчас я создал отметку времени, которая удовлетворяет только двум условиям,Если щелкнуть мышью, перейдите к зеленому цвету, а через некоторое время - к красному.Если мне нужно создать другую функцию, для которой я бы запустил обе функции, или я просто добавляю больше var к текущей функции, чтобы включить удовлетворение 3-го условия от зеленого до желтого, показывая таблицу мальчишника, готовую к размещению, в то время как красный показывает, что они имеютбыл за столом долгое время, но он все еще занят

 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);
  }
 }

, каждый раз, когда я пытаюсь добавить еще одно утверждение, я не могу, и если я добавлю еще одно условие к зеленому, еще, если заставить его стать желтымчерез x минут он пропускается, становится зеленым и идет прямо к желтому вместо колебания между двумя

1 Ответ

0 голосов
/ 03 июня 2019

Возможно, вы могли бы использовать что-то вроде этого:

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;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...