Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google脚本/工作表:如何基于值聚合行/对象?_Javascript_Google Apps Script_Google Sheets_Google Spreadsheet Api_Google Sheets Api - Fatal编程技术网

Javascript Google脚本/工作表:如何基于值聚合行/对象?

Javascript Google脚本/工作表:如何基于值聚合行/对象?,javascript,google-apps-script,google-sheets,google-spreadsheet-api,google-sheets-api,Javascript,Google Apps Script,Google Sheets,Google Spreadsheet Api,Google Sheets Api,我有这种格式的列表,我从谷歌分析API检索,然后想输出到谷歌工作表 ['dog', 'brown', 'mammal', 12], ['cat', 'black', 'mammal', 18], ['dog', 'brown', 'mammal', 7], ['goldfish', 'gold', 'chordata', 2] 如果前三个字符串是相同的,我想在末尾加总数字,并删除重复条目。以便: ['dog', 'brown', 'mammal', 19], ['cat', 'black',

我有这种格式的列表,我从谷歌分析API检索,然后想输出到谷歌工作表

['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脚本中以编程方式实现,或者在将列表添加到工作表后,使用一些库(如下划线)或Google Sheets中的一些函数实现。我还没有找到一个方法来做这件事。建议?

尝试将此作为起点:

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

}
函数分组依据(数据、列、sumCol)
{
数据=数据| |['狗','棕色','哺乳动物',12],
[“猫”,“黑”,“哺乳动物”,18],
[“狗”,“棕色”,“哺乳动物”,7],
[goldfish',gold',chordata',2]];
columns=columns | |[0,1,2];//从零开始
sumCol=sumCol | | 3;
var result={};
var行=[];
var键=“”;
var值=0;
var-prev=0;
对于(var numRow=0,h=data.length;numRow-1)
{
键=“”+键+行[numColumn]+',';
}
else如果(sumCol==numColumn){value=row[numColumn];}
}
prev=结果[键];
//写入结果
如果(prev==未定义){result[key]=value;}
else结果[键]+=值;
数值=0;
键='';
}
Logger.log(结果);
}

尝试将此作为起点:

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

}
函数分组依据(数据、列、sumCol)
{
数据=数据| |['狗','棕色','哺乳动物',12],
[“猫”,“黑”,“哺乳动物”,18],
[“狗”,“棕色”,“哺乳动物”,7],
[goldfish',gold',chordata',2]];
columns=columns | |[0,1,2];//从零开始
sumCol=sumCol | | 3;
var result={};
var行=[];
var键=“”;
var值=0;
var-prev=0;
对于(var numRow=0,h=data.length;numRow-1)
{
键=“”+键+行[numColumn]+',';
}
else如果(sumCol==numColumn){value=row[numColumn];}
}
prev=结果[键];
//写入结果
如果(prev==未定义){result[key]=value;}
else结果[键]+=值;
数值=0;
键='';
}
Logger.log(结果);
}