Можно ли изменить цвет строки в зависимости от времени и пустая ячейка или нет? - PullRequest
0 голосов
/ 06 июля 2019

У меня есть электронная таблица, в которой есть 2 листа (Sheet1 и Sheet2). Лист1 связан с формой для получения ответов, тогда как Лист2 - это просто копия информации из Листа1 с сортировкой и форматированием с использованием функции ImportRange. В форме ответов используется только столбец A: G, а столбец H и я будут заполнены позже.

После получения ответа цвет строки, в которой находится ответ, изменится на Желтый. После заполнения столбца H цвет строки изменится на синий, а после заполнения I станет зеленым.

Возможно или нет использование условного форматирования или Google App Script, если после получения ответа (строка становится желтой), если в течение 5 минут данные не введены в столбец H, строка для столбца A: G изменится на " Красный ", и изменится только на" Синий "после заполнения H?

До сих пор я пытался использовать условное форматирование только там, где использовал условие Custom Formula is... =$G2<>"".

Кроме того, кто-то предложил использовать следующий код в скрипте приложения (с использованием различий между Unixtime), но я не смог заставить его работать должным образом (он не становится «красным» через 10 минут, он просто остается желтым) :

function myFunction() {  
  ss = SpreadsheetApp.getActiveSpreadsheet().getDataRange();

  var unixStart = new Date(1970, 1, 1, 0, 0, 0);  
  var nowDate = ss.getCell(2, 13).getValue() - (unixStart * 86400);
  var rows = ss.getLastRow();

  for (var i = 2; i <= rows; i++){
   var checkTime = ss.getCell(i, 7).getValue() - (unixStart * 86400);    
    if (nowDate - checkTime < 600000){
      SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange(i, 1, 1, 7).setBackground("yellow");
    }    
  }
}

1 Ответ

1 голос
/ 06 июля 2019

Вы можете окрашивать ячейки в зависимости от времени, не используя Apps Script, что упрощает ваш файл.

Для вашего случая использования вы можете сделать это, контролируя свой лимит с помощью вспомогательного столбца по следующей формуле:

=time_stamp + 5/24/60

, где time_stamp - метка времени, создаваемая формами.Это добавит 5 минут к тому, когда форма будет отправлена ​​автоматически.

Затем вы можете использовать этот новый столбец в качестве одного из правил условного форматирования для ячеек в диапазоне A:G по следующей формуле:

=AND(NOW()>time_stamp_plus_5, $H2="", $I2="")

и установите цвет заливки на красный.Это изменит все ячейки в A:G, которые удовлетворяют следующим 3 условиям, на красный цвет:

  1. Текущее время, определенное NOW(), наступает через 5 минут после отправки формы.
  2. Пустой столбец H.
  3. Пустой столбец I.

Затем можно добавить дополнительные правила, как обычно, для желтой, синей и зеленой окраски:

  • Желтый: =$time_stamp<>""
  • Синий: =$H2<>""
  • Зеленый: =$I2<>""

Единственный сбой заключается в том, чтопо умолчанию NOW() пересчитывается только при внесении изменений в форму.Вы можете настроить автоматический пересчет каждую минуту, выбрав Файл> Настройки электронной таблицы> Расчет> Пересчет и установите для него значение «При изменении и каждую минуту».Это гарантирует, что NOW() всегда обновляется каждую минуту.


Как вы указали в комментариях, для вашей настройки возникает сложная проблема с тем, как вы сначала отсортировали самые новые отправленные формы.Я бы предложил представить отдельный вопрос по этой проблеме, чтобы увидеть, можно ли сделать какие-то обходные пути для вашей настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...