@ah0R

Как изменить цвет строчки по условию?

Есть код, который должен сверять дату в стобце "D" и настоящую дату. И если находит совпадение, то перекрашивать фон всей строки в определенный цвет
function EditRow() { 
  const target_column = 'D:D';
  const sheet = SpreadsheetApp.getActiveSheet();
  const col = sheet.getRange(target_column);
  const lr = getColLastRow(col);
  const lastDate = new Date().valueOf();
  const row = col.getRow();
  const column = col.getColumn();
  var values = sheet.getRange(1,col.getColumn(),lr,col.getColumn()).getValues();

  for (var i = lr; i >= 1; i--) {
    var d = values[i-1];
    if (typeof d == 'object' & lastDate > new Date(d).valueOf()) {
      sheet.getRange(row, column).setBackground('#4a86e8');
    }
  }
};

Но он вместо перекрашивания строки меняет цвет только у "D1"
638b71d2b791d184818841.png
Как сделать так, чтобы изменения фона происходила в строчке, что содержит настоящую дату, а не в "D1"?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Dr_Elvis
@Dr_Elvis
В гугле забанен
Давайте пройдемся логикой по коду, думаю будет понятно где что-то пошло не так:
function EditRow() { 
  const target_column = 'D:D';// при запуске функции вы берете весь столбец D
  const sheet = SpreadsheetApp.getActiveSheet();
  const col = sheet.getRange(target_column);// Берете диапазон в виде этого столбца
  const lr = getColLastRow(col);
  const lastDate = new Date().valueOf();
  const row = col.getRow();//Берете номер строки
  const column = col.getColumn();//Берете номер столбца(букву)
  var values = sheet.getRange(1,col.getColumn(),lr,col.getColumn()).getValues();

  for (var i = lr; i >= 1; i--) {//Запускаете цикл с последней записи до начала, перебирая строки
    var d = values[i-1];
    if (typeof d == 'object' & lastDate > new Date(d).valueOf()) {
      sheet.getRange(row, column).setBackground('#4a86e8');// а вот тут вы красите по переменным row и column, которые определены ДО старта цикла и они остаются постоянными.
    }
  }
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы