使用Google脚本检查forEach是否达到极限结果

时间:2019-08-26 07:18:53

标签: javascript google-apps-script google-sheets

我在单独的列上有一个由日期和时间组成的数据。我的问题是如何获取达到其极限的数据。

数据链接(Google工作表):https://docs.google.com/spreadsheets/d/1lEfzjG1zzJVPMN8r-OpeZm6q9_IqSwk9DNCEY-q7ozY/edit?usp=sharing

我已经在Google Apps脚本中尝试了以下代码:

Google脚本:

function timeCheck(){
  var lookup = "August 28, 2019";
  var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("Test_Data");  

  var myData = ws.getRange(2, 7, ws.getLastRow()-1, 2).getValues();

  myData.forEach(function(row){
  var lookup = "August 28, 2019"; //this is just a sample search data
  var dte = new Date (row[0]);
  var form = Utilities.formatDate(dte, 'GMT+8', 'MMMM dd, yyyy');
     if(form == lookup){
       Logger.log(row)
    }
  });
}

然后我得到了以下日志:

[19-08-26 15:14:04:073 HKT] [Wed Aug 28 00:00:00 GMT+08:00 2019, 8:00 AM]
[19-08-26 15:14:04:073 HKT] [Wed Aug 28 00:00:00 GMT+08:00 2019, 9:00 AM]
[19-08-26 15:14:04:074 HKT] [Wed Aug 28 00:00:00 GMT+08:00 2019, 10:00 AM]
[19-08-26 15:14:04:075 HKT] [Wed Aug 28 00:00:00 GMT+08:00 2019, 8:00 AM]
[19-08-26 15:14:04:076 HKT] [Wed Aug 28 00:00:00 GMT+08:00 2019, 8:00 AM]
[19-08-26 15:14:04:077 HKT] [Wed Aug 28 00:00:00 GMT+08:00 2019, 9:00 AM]
[19-08-26 15:14:04:077 HKT] [Wed Aug 28 00:00:00 GMT+08:00 2019, 9:00 AM]

我现在的问题是我如何无法获得row[1]中的值,该值达到了3倍。在上面的示例中,我想获得8:00 AM9:00 AM,因为它们是达到极限的值。

在此先感谢您的帮助。我将非常感激。

1 个答案:

答案 0 :(得分:1)

在这里我的一个问题中,我使用push方法和从@Christopher Bradley获得的代码解决了我的问题。

这是我使用的代码的更新:

function timeCheck(){

  var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("Test_Data");  
  var myData = ws.getRange(2, 7, ws.getLastRow()-1, 2).getValues();
  var arrData = [];
  myData.forEach(function(row){

  var lookup = "Aug 28, 2019";
  var dte = new Date (row[0]);
  var form = Utilities.formatDate(dte, 'GMT+8', 'MMM dd, yyyy');

    if(form == lookup){
      arrData.push(row[1]); 
    }    
  });
  var myVals = arrData;
  var CheckLimitReached = function (V)
  {
    var records= {};
    V.forEach(function (x) { records[x] = (records[x] || 0) + 1; });
    var limit_reached = Object.keys(records).filter(function (R) {
      return records[R] >= 3;});
    return limit_reached;

  };
   var dataDisable = CheckLimitReached(myVals);
  Logger.log(dataDisable);

}