使用Google脚本达到一定数值时显示值

时间:2019-07-17 05:21:04

标签: javascript google-apps-script duplicates countif

我有一个带有日期列的google工作表,并且如果我的列中的值达到4倍(例如,2019年7月1日),我将无法显示或将其设置为一个单元格

        [OperationContract]
        [WebInvoke(ResponseFormat =WebMessageFormat.Json,RequestFormat =WebMessageFormat.Json)]
        List<Product> SayHello();

    public class Product
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public List<Animal> Animals { get; set; }


    }
    public class Animal
    {
        public int ID { get; set; }
        public string Name { get; set; }

}

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

      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

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

1 个答案:

答案 0 :(得分:1)

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

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);
}