繁体   English   中英

Google脚本/表格:如何基于值汇总行/对象?

[英]Google Scripts/Sheets: How to aggregate row/objects based on values?

我有这种格式的列表,可以从Google Analytics(分析)API中检索出来,然后将其输出到Google表格。

['dog', 'brown', 'mammal', 12],
['cat', 'black', 'mammal', 18],
['dog', 'brown', 'mammal', 7],
['goldfish', 'gold', 'chordata', 2]

如果前三个字符串相同,我想在末尾汇总数字,然后删除重复的条目。 这样:

['dog', 'brown', 'mammal', 19],
['cat', 'black', 'mammal', 18],
['goldfish', 'gold', 'chordata', 2]

我想一种方法是在普通的Javascript / Google Apps脚本中以编程方式完成此操作,或者在将列表添加到工作表后使用UnderscoreGS之类的库,或者在Google表格中使用某些功能来执行此操作。 尚未找到实现此目的的方法。 建议?

试试这个作为起点:

function groupBy(data, columns, sumCol)
{
  data = data || [['dog', 'brown', 'mammal', 12],
                  ['cat', 'black', 'mammal', 18],
                  ['dog', 'brown', 'mammal', 7],
                  ['goldfish', 'gold', 'chordata', 2]];

  columns = columns || [0, 1, 2]; // zero-based

  sumCol = sumCol || 3;

  var result = {};
  var row = []; 
  var key = '';
  var value = 0;
  var prev = 0;
  for (var numRow = 0, h = data.length; numRow < h; numRow++)
  {
    row = data[numRow];
    // join another row
    for(var numColumn = 0, w = row.length; numColumn < w; numColumn++)
    {
      if (columns.indexOf(numColumn) > -1)
      {
          key = '' + key + row[numColumn] + ',';

      }
      else if(sumCol == numColumn) { value = row[numColumn]; }                    
    }
    prev = result[key];
    // write result
    if (prev == undefined) { result[key] = value; }
    else result[key] += value;

    value = 0;
    key = '';

  }

  Logger.log(result);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM