javascript - 使用 google 脚本检查 forEach 是否达到限制结果

标签 javascript google-apps-script google-sheets

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

数据链接(谷歌表格):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,因为它们是达到限制的值。

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

最佳答案

我通过使用 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);

}

关于javascript - 使用 google 脚本检查 forEach 是否达到限制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57653378/

相关文章:

google-sheets - Google 工作表中已完成/到期任务的条件格式

google-sheets - 使用数组公式对所有行中的所有值求和

javascript - 设置 SocketIO 和 Flask 我收到此错误 : "UnboundLocalError: local variable ' ssl_socket' referenced before assignment"

javascript - 使用谷歌脚本自动将 CSV 输出到谷歌表格

javascript - 如何检测行并相对转到下一列的单元格?

javascript - 如何在 google scriptlet 中传递 javascript 变量?

google-apps-script - Google 脚本正在重新处理电子邮件

javascript - Rx 随机间隔

javascript - 如何动态计算 Angular 类变量

javascript - 如何检查 Canvas 框架