листы Google Скрыть строки на основе сегодняшней даты - PullRequest
0 голосов
/ 30 августа 2018

В Google Sheets мне нужен скрипт для автоматического скрытия строк на листе 1, когда дата в столбце A равна или до сегодняшней даты.

поэтому, если сегодня 29 августа 2018 года, а дата в ячейке A3 - 28 августа 2018 года, вся строка 3 будет скрыта

Но если бы в ячейке A3 была дата 30 августа 2018 года, то вся строка 3 была бы видна до текущей даты 31 августа 2018 года.

спасибо за любую помощь, которую вы можете оказать.

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

  function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuItems=[{name: 'HideRows', functionName: 'hideRows'}];
  ss.addMenu('Script', menuItems);    
  };

 function hideRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Sheet1");
  var v = s.getRange("A:A").getValues();
  var today = new Date();
  var m = today.getMonth();
  for(var i=3;i<v.length;i++)
    if(v[i][0]=="" || v[i][0].getMonth()>=m) break;
  if(i>3) s.hideRows(4,i-3)
  };

1 Ответ

0 голосов
/ 30 августа 2018

Итак, как я отметил в моем комментарии выше, фильтр может работать. Но если вы хотите привыкнуть к hideRows и сценариям, это следует сделать ниже:

function hideRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("Sheet1");
var v = s.getRange("A:A").getValues();
var today = new Date();
today.setHours(0, 0, 0, 0);
for (var i = s.getLastRow(); i > 2; i--) {
    var t = v[i - 1];
    if (t != "") {
        var u = new Date(t);
        if (u < today) {
            s.hideRows(i);
        }
    }
}

} Вы можете очистить имена переменных и, возможно, немного сжать их. Сегодня занимает текущее время, и я установил его обратно на сегодня в полночь, чтобы не думать, что я не должен показывать 29.08.2008, потому что сейчас 11 часов вечера. Я также работал снизу вверх, чтобы быть в безопасности. Также было немного не заметно, что массив из диапазона основан на 0, но нумерация строк основана на 1.

...