Установка цвета фона на основе даты плюс - PullRequest
2 голосов
/ 26 сентября 2019

Мне нужно создать скрипт на основе даты в столбце B, чтобы изменить цвет фона строки с столбца B на столбец d на основе того, является ли дата в столбце b одним днем, двумя днями, тремя днями и т. Д.. впереди сегодняшнего дня.

Я нашел код из другого поста, однако он оценивает несколько строк с датами

function formatting() {
  var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Schedule Fields');
  var rg=sheet.getDataRange();//this range starts at column 1
  var vA=rg.getValues();
  var today = new Date();
  for(var i=0;i<vA.length; i++){
    for(var j=1;j<=1;j++){//j=2 is the third column
      var bullDate = new Date(vA[i][j]);  
      if (bullDate < today){
        sheet.getRange(i+1,j+1).setBackgroundColor('yellow');
      }
    }
  }
}

Мне удалось изменить этот код достаточно, чтобы получить цвет фона даты в столбце B. Я не уверен, как изменить это, чтобы установить цвет фона ColB-ColD, а затем добавить к условию if, чтобы приравнять к 1 день 2 день 3 дня и т. Д. В будущем сегодня.

function formatting() {
  var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
  var rg=sheet.getDataRange();//this range starts at column 1
  var vA=rg.getValues();
  var today = new Date();
  for(var i=0;i<vA.length; i++){
    for(var j=2;j<=4;j++){//j=2 is the third column
      var bullDate = new Date(vA[i][j]);  
      if (bullDate < today){
        sheet.getRange(i+1,j+1).setBackgroundColor('yellow');
      }
    }
  }
}

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

1 Ответ

1 голос
/ 27 сентября 2019

попробуйте это:

function colors(){
  var ss = SpreadsheetApp.getActive().getSheetByName("allGroups");
  var data = ss.getDataRange().getValues();
  var colors = ss.getDataRange().getBackgrounds();
  var today = new Date();
  var date = new Date(data[2][1])
  var diffTime, diffDays

  for (var i = 0; i < data.length; i++){
    date = new Date(data[i][1]); // Current date to evaluate in the sheet.
 // diffTime = today - date;
    diffTime = date - today;  
    diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
    if (diffDays == 1){
      colors[i][1] = "red";
      colors[i][2] = "red";
      colors[i][3] = "red";
    }
    else if (diffDays == 2){
      colors[i][1] = "yellow";
      colors[i][2] = "yellow";
      colors[i][3] = "yellow";
    }
  }
  ss.getDataRange().setBackgrounds(colors);
}

Этот код будет сравнивать дату в столбце B с сегодняшним днем, и если через 2 дня он установит ячейку даты в желтый, если через один день он будетустановите его на красный.

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