我在单独的列上有一个由日期和时间组成的数据。我的问题是如何获取达到其极限的数据。
数据链接(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 AM
和9:00 AM
,因为它们是达到极限的值。
在此先感谢您的帮助。我将非常感激。
答案 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);
}