使用Google应用脚本

时间:2017-04-09 13:02:13

标签: javascript google-apps-script google-sheets google-spreadsheet-api google-sheets-api

我是谷歌应用程序脚本和javascript的新手。需要一些关于这个主题的帮助。

当前数据:

第1周美国
第1周荷兰
第1周南非
第2周土耳其
第2周英国
第2周美国
第1周美国
第2周英国

修改为:
第1周美国2
荷兰1
南非1
第2周美国1 英国2
土耳其1

2 个答案:

答案 0 :(得分:0)

这是一种可能的解决方案。只需将代码复制到脚本编辑器中并保存即可。 然后,您可以在电子表格中使用它,如下所示:=countCountries(A1:B8)

function groupValues(array2D) {
  var result = {};
  for(var i = 0; i < array2D.length; i++) {
    if(!(array2D[i] instanceof Array) || array2D[i].length < 2) throw new Error("two columns are needed");
    if(!result[array2D[i][0]]) result[array2D[i][0]] = [];
    result[array2D[i][0]].push(array2D[i][1]);
  }
  return result;
}

function countValues(array) {
  var result = {};
  for(var i = 0; i < array.length; i++) {
    if(!result[array[i]]) result[array[i]] = 0;
    result[array[i]] = result[array[i]] + 1;
  }
  return result;
}

function toArray(o) {
  var result = [];
  for(key in o) {
    result.push([key, o[key]]);
  }
  return result;
}

function countCountries(range) {
  var grouped = toArray(groupValues(range));
  grouped.sort();
  grouped.forEach(function(values) {
    values[1] = toArray(countValues(values[1]));
  });
  var result = [];
  for(var i = 0; i < grouped.length; i++) {
    result.push([grouped[i][0], grouped[i][1][0][0], grouped[i][1][0][1]]);
    for(var j = 1; j < grouped[i][1].length; j++) {
      result.push(["", grouped[i][1][j][0], grouped[i][1][j][1]]);
    }
  }
  return result;
}

答案 1 :(得分:0)

  =QUERY(A14:B21,"Select A,B,Count(B) group by A,B")