Как мне отфильтровать вчерашнюю дату в скриптах Google? - PullRequest
0 голосов
/ 05 января 2020

Я пишу сценарии Google для фильтрации и передачи данных из одной книги в другую. Я хотел бы, чтобы перевод был условным, исходя из вчерашней даты (в столбце K).

Пользователь предоставил мне код в другом посте , который я немного подправил (включая ниже) и пока выполняется копирование-вставка, фильтрация даты отключена. Код продолжает извлекать данные с 7/7/2019 (по состоянию на сегодня, 5 января 2020 г.), когда я хотел бы получить данные со вчерашнего дня. Вчера, в данном случае, 1/4 / 2020.

Я подправил ниже, основываясь на нескольких различных сообщениях stackoverflow, но не могу заставить его получать данные со вчерашнего дня, и пользователь, который опубликовал ответ, ушел молчал (я прокомментировал и должен был удалить комментарии за пару дней go).

Может ли кто-нибудь помочь мне получить вчерашние строки из Рабочей книги 1?

function runOne() { 
  var ss=SpreadsheetApp.openById('Workbook 1 ID');
  var tsh=ss.getSheetByName('sheet1');
  var ss2=SpreadsheetApp.openById('Workbook 2 ID');
  var tsh2=ss2.getSheetByName('sheet1');
  var lastRow=tsh.getLastRow();
  var timestamps=tsh.getRange(1,11,lastRow,1).getValues();
  var d = new Date();
  d.setDate(d.getDate() - 1); // get the date from yesterday
  var yesterdayDate=new Date(d);   
  for(var i=lastRow;i>1;i--){              // get the last row from yesterday
    if(new Date(timestamps[i-1][0]).getDay()==yesterdayDate.getDay()){
     var lastRowYesterday=i;
      break;
    }
  }
  for(var j=lastRowYesterday-1;j>1;j--){  // get the first row from yesterday
    if(new Date(timestamps[j-1][0]).getDay()!=yesterdayDate.getDay()){
      var firstRowYesterday=j+1;
      break;
    }
  }
  var rowNumber=lastRowYesterday-firstRowYesterday+1;
  var columnNumber=tsh.getLastColumn();
  var toCopy=tsh.getRange(firstRowYesterday,1,rowNumber,columnNumber).getValues(); //values  from yesterday
  var lastRow2=tsh2.getLastRow();
  tsh2.getRange(lastRow2+1,1,rowNumber,columnNumber).setValues(toCopy);  //append to workbook 2
}

1 Ответ

0 голосов
/ 06 января 2020

измените их (getday 1 ~ 7, getdate 1 ~ 31, без getday и дата получения, дата как есть):

if(new Date(timestamps[i-1][0]).getDay()==yesterdayDate.getDay()){

на

if(new Date(timestamps[i-1][0]).getDate()==yesterdayDate.getDate()){

или

if(new Date(timestamps[i-1][0])==yesterdayDate){

и вы можете изменить свой if на:

if(....){
  ......;
}
else
{
  ......;
}

, поэтому ваша итерация будет выполняться только один раз, а не дважды

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