簡體   English   中英

如何根據列中的日期在谷歌表格中獲取一組數據?

[英]How to get an array of data in google sheets based on date in column?

我每天都試圖將數據的子部分從一個谷歌表拉到另一個谷歌表。 拉動是基於日期的,這就是我掙扎的原因。

上下文 - 我有“工作簿 1”,它每天記錄不同 NBA 球隊的價格數據。 每天都會捕獲數據並將其添加到表格的底部(因此最新的價格數據位於底部)。 它在 K 列中使用 =today().. 標有日期戳記是“Pull Date”。

我有一個單獨的工作簿,我們將其稱為 NBA 的“工作簿 2”,我想在其中包含工作簿 1 中的相同價格數據,但只包含過去 15 天的數據(以使其更加靈活)。 為了實現這一點,我想讓腳本每天早上從“工作簿 1”到“工作簿 2”逐步添加昨天的值(現在我將手動刪除任何超過 15 天的行)。

目的 - 我在工作簿 2 中的表格上構建了一份報告,並進行了為期兩周的分析,因為工作簿 1 文件太大了(可以追溯到幾個月前)。

問題 - 我有一些來自不相關工作簿的舊代碼,我將數據從一張紙拉到另一張紙,但它不是基於拉取日期的條件。 對於此腳本,我希望我的“工作簿 2”工作簿從“工作簿 1”請求數據並將其添加到“工作簿 2”上第 1 頁的底部,但僅適用於包含昨天日期(或 =today()- 1)。 包含昨天日期的行數是動態的,並且會隨着時間的推移而縮小,所以我今天移動的行數與上周不同,例如。

我的數組有 15 列寬,但行數每天都會改變。 下面是我的出發點:

function runOne() { 
  var ss=SpreadsheetApp.openById('Workbook 1 sheet id');
  var tsh=ss.getSheetByName('sheet 1');
  ???

我不知道如何有條件地提取昨天的數據並使行數動態化。 獲得正確的值后,我需要將其粘貼到“工作簿 2”中標題為“工作表 1”的選項卡底部。

我對腳本編寫的經驗很少,因此將不勝感激任何幫助。 我試圖盡可能多地澄清上述問題,但如果需要進一步澄清,請告訴我。

  • 您的日期戳在第 11 (K) 欄
  • 您想每天自動運行腳本(按時觸發)
  • 您想將工作簿 1 工作簿 1 中的帶有昨天時間戳的工作簿 2 工作表 1 條目添加到工作簿中

這是你可以實現它的方式

  • 編寫一個代碼,計算昨天的日期並將其與 K 列中的時間戳進行比較
function runOne() { 
  var ss=SpreadsheetApp.openById('Workbook 1 spreadsheet id');
  var tsh=ss.getSheetByName('sheet 1');
  var ss2=var ss=SpreadsheetApp.openById('Workbook 2 spreadsheet id');
  var tsh2=ss2.getSheetByName('sheet 1');
  var lastRow=tsh.getLastRow();
  var timestamps=tsh.getRange(1,11,lastRow,1).getValues();
  var yesterdayMs=new Date().getTime()-24*60*60*1000;  //get the date from yesterday in ms
  var yesterdayDate=new Date(yesterdayMs);   // get the date from yesterday
  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
}

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM