0

私はGoogle Analytics APIから検索してGoogleシートに出力するこの形式のリストを持っています。Google Scripts/Sheets:値に基づいて行/オブジェクトを集計する方法

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

最初の3つの文字列が同一で、重複したエントリが削除されている場合は、最後に数値を集計したいと思います。私はこれを行うための一つの方法は、追加した後、プレーンJavascriptを/ Google Appsのスクリプトでプログラムそれを行うには、OR UnderscoreGSのようないくつかのライブラリーを使用するか、Googleシートの一部の機能でそれを行うことですと仮定

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

:そのようなことをリストをワークシートに追加します。まだこれを行う方法を見つけることができていない。推薦?

答えて

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

} 
関連する問題