首页 > 解决方案 > 如果使用谷歌脚本从 forEach 达到限制结果,则检查值

问题描述

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

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

我在 Google Apps Script 中尝试过这段代码:

谷歌脚本:

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]

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

预先感谢您的帮助。我会非常感激。

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


我在这里的一个问题中使用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);

}

推荐阅读