javascript - 使用谷歌脚本达到一定数量时显示值

标签 javascript google-apps-script duplicates countif

我有一个包含日期列的 Google 工作表,如果我的列上的值达到 4 次(例如 2019 年 7 月 1 日),我无法在单元格中显示或设置该值

      Date Column
Row1: July 1, 2019
Row2: July 2, 2019
Row3: July 1, 2019
Row4: July 4, 2019
Row5: July 1, 2019
Row6: July 1, 2019
Row7: July 5, 2019

我在谷歌脚本中尝试了以下代码:

  function countDate(){

    var ss = SpreadsheetApp.openByUrl(url);
    var ws = ss.getSheetByName("Test_Data");
    var dateRg = ws.getRange(1, 9, ws.getLastRow(), 1).getValues();

    for (var i =1; i < dateRg.length; i++){
      var dateTest = dateRg[i];

      if (dateTest > 5){
         ws.getRange(2,4).setValue(dateTest);
    }
  }   

在上面的示例中,我希望电子表格中的一个单元格具有值“2019 年 7 月 1 日”,因为它在列中出现了 4 次。预先感谢您。

最佳答案

这是一种可能的方法。计算每个日期的出现次数,将计数存储在对象中,然后找到出现次数最多的日期。

function countDate(){  
  var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("Test_Data");
  var dateRg = ws.getRange(1, 1, ws.getLastRow(), 1).getDisplayValues();
  var data = {}
  for (var i =0; i < dateRg.length; i++){
    data[dateRg[i]] = data[dateRg[i]] || 0;
    data[dateRg[i]]++;  
  }
  var max = Object.keys(data).reduce(function(a, b){ return data[a] > data[b] ? a : b });  
  ws.getRange(2,4).setValue(max);
}

关于javascript - 使用谷歌脚本达到一定数量时显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57068956/

相关文章:

javascript - JS 按两列日期对数组进行排序

javascript - 触发以获取 google-apps-script 中的 "Exceeded maximum execution time"附近

python - 有什么方法可以从两个数据帧创建一个新的数据帧,其中一个 df 的每一行都必须重复?

Javascript:Concat boolean 函数

javascript - 为什么 Google 文档脚本中的 body.replaceText 函数的 for 循环停止了?

javascript - 循环中的链式 promise : Firebase read works fine, Firebase 写入不

java - Spring Integration Listener 中 FileReadingMessageSource 中的 scanEachPoll

Python:从嵌套列表中删除重复项

javascript - 使用对象方法显示对象属性值

javascript - 转换JS代码有一些问题