Javascript 我如何过滤昨天';谷歌脚本中的日期?

Javascript 我如何过滤昨天';谷歌脚本中的日期?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在编写GoogleSheets脚本,以便从一个工作簿过滤数据并将数据传输到另一个工作簿。我希望转会是有条件的,以昨天的日期为基础(在K栏) 一位用户向我提供了代码,我对代码做了一些调整(包括在下面),当它执行复制粘贴时,日期过滤关闭。代码一直从2019年12月7日(截至2020年1月5日)提取数据,而我希望从昨天提取数据。在这种情况下,昨天是2020年1月4日 我在下面根据几个不同的stackoverflow帖子进行了调整,但无法从昨天的帖子中提取数据,发布回复的用户已经沉默(我已经发表了评

我正在编写GoogleSheets脚本,以便从一个工作簿过滤数据并将数据传输到另一个工作簿。我希望转会是有条件的,以昨天的日期为基础(在K栏)

一位用户向我提供了代码,我对代码做了一些调整(包括在下面),当它执行复制粘贴时,日期过滤关闭。代码一直从2019年12月7日(截至2020年1月5日)提取数据,而我希望从昨天提取数据。在这种情况下,昨天是2020年1月4日

我在下面根据几个不同的stackoverflow帖子进行了调整,但无法从昨天的帖子中提取数据,发布回复的用户已经沉默(我已经发表了评论,几天前不得不删除评论)

有人能帮我从工作簿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
}
更改这些(getday 1~7,getdate 1~31,不带getday和get date,日期不变):

您可以将if更改为:

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

因此,您的迭代只运行一次,而不是两次运行

我认为您的脚本检索昨天行的行号。不幸的是,我不能理解你的问题。那么,为了正确理解您的目标,您能否提供一个包含您期望的输入和输出的示例电子表格?当然,请删除您的个人信息。Hi@tanaike-应从工作簿2的底部提取最后五行(第151-155行),并将其附加到工作簿2中。感谢您的回复。您能否提供不是已发布电子表格的样本电子表格?因为我不确定列“K”的值是否是日期对象,
1/4/2020
是您发布的电子表格中的2020年1月4日。这是因为我的技术差。对此,我深表歉意。您将日期与日期进行比较,因此如果日期与昨天相同,您将得到任何日期。请发布问题中表格的副本/示例,以帮助您。Hi@user11982798-如果我这样做,底部第三行将出错。消息:找不到方法getRange((类),number,number,number)。(第25行,文件“代码”)好的,遵循你现有的if,因为它们的循环方式不同。我不能这样做,因为我没有你的工作表,你能为此制作任何简单的工作表吗?嗨,user11982798,我在另一个线程中找到了解决方案,所以我将结束这个问题。谢谢你的帮助!
if(new Date(timestamps[i-1][0]).getDate()==yesterdayDate.getDate()){
if(new Date(timestamps[i-1][0])==yesterdayDate){
if(....){
  ......;
}
else
{
  ......;
}