четверг, 4 мая 2017 г.

Когда настанет час X?

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


function onEdit() {

  var sheet = SpreadsheetApp.getActiveSheet();

  var data = sheet.getDataRange().getValues();

  for (var i = 1; i < data.length; i++) {

  var timeX = sheet.getRange(i+1,6).getDisplayValue().split(':')[0];

  var nowX = new Date();

  var timeXX=timeX*1000*60*60;

  var finish = new Date(data[i][4]);

  var finishTime = new Date(finish.getTime()+timeXX);

  var cell = sheet.getRange(i+1,7);

  var dayX=(finishTime-nowX)/1000/60/60/24;

  if (Math.abs(dayX)>1){

    cell.setValue(dayX.toString().split('.')[0]+" д");

  if (dayX<0)

  {

    cell.setBackground('red');

    cell.setFontColor('white');

  }

    else{

  if (dayX<3) {

    cell.setBackground('yellow');

    cell.setFontColor('red')

  }

    else{

    cell.setBackground('green');

    cell.setFontColor('white')

  }

    }}

else

{

  if (Math.abs(dayX*24)<1){

    cell.setValue((dayX*24*60).toString().split('.')[0]+" м");

  }

  else {

    cell.setValue((dayX*24).toString().split('.')[0]+" ч");

  }

  cell.setBackground('red');

  cell.setFontColor('white')

}

}

}


Что же делает скрипт? 
  1. Вычисляет текущее время
  2. Берёт данные из столбиков E и F - дату и время финиша выполнения работы в цикле
  3. Вычисляет разницу между текущим временем и часом X
  4. В столбик Осталось  прописывает оставшееся время (или просроченное) в цикле в днях или часах или минутах округляя в меньшую сторону
  5. Раскрашивает ячейки в зависимости от времени
  6. Происходит всё это при изменении данных в таблице
Добавляем триггер выполнения каждый час, триггер на открытие. Можно добавить отправку оповещений на почту при достижении времени, например, 1 час.
Надеюсь, скрипт кому-то принесёт пользу.

4 комментария:

  1. Бог интернета есть

    ОтветитьУдалить
    Ответы
    1. Согласен. Сидит в облаках и воздаёт каждому за флуд в комментариях. Превозносит и делает равным себе за дела интернетоугодные.

      Удалить
  2. Условное форматирование решает эту задачу.

    ОтветитьУдалить
    Ответы
    1. Доброго дня.
      Да, конечно же решает. И даже 4 года назад решало когда была написана статья.)

      Удалить