0

我有这种格式的列表,我从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 /谷歌Apps脚本,或者使用一些图书馆像UnderscoreGS或添加后,在谷歌表的一些功能做列表到工作表。还没有找到办法做到这一点呢。建议?

回答

2

尝试以此为出发点:

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

} 
相关问题