删除Google表格中的重复行

时间:2018-04-15 06:16:10

标签: javascript google-apps-script

我在Google表格中有很多行,有些行是一样的。 看图片:https://tof.cx/images/2018/04/15/4cc45aff5aa8f357527731e0bae3a1bc.png

我试图清除重复的行,使其变得像下一个屏幕。 看图片:https://tof.cx/images/2018/04/15/8a16f3bb8dfcc758b649074574fafbfa.png

我在脚本编辑器中使用了这段代码,但是当我运行脚本时没有任何反应。

是否有人帮助我找到了好方法。

function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = new Array();

for(i in data){
  var row = data[i];
  var duplicate = false;
  for(j in newData){
    if(row[0] == newData[j][0] && row[1] == newData[j][1] && row[2] == newData[j][2] && row[3] == newData[j][3] && row[4] == newData[j][4]){
      duplicate = true;
    }
  }
  if(!duplicate){
    newData.push(row);
  }
}

sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

谢谢你

1 个答案:

答案 0 :(得分:1)

这些修改怎么样?

修改要点:

  • 使用getDisplayValues()代替getValues()
    • 通过此,“日期”可以作为电子表格中单元格中显示的字符串进行比较。
  • 如果duplicate为真,则将值添加到row
    • 这样就添加了重复的行。

修改后的脚本:

function removeDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getDisplayValues(); // Modified
  var newData = new Array();
  data.forEach(function(_, i){ // Modified
    var row = data[i];
    var duplicate = false;
    for(j in newData){
      if(row[0] == newData[j][0] && row[1] == newData[j][1] && row[2] == newData[j][2] && row[3] == newData[j][3] && row[4] == newData[j][4]){
        duplicate = true;
      }
    }
    if(!duplicate){
      newData.push(row);
    } else {
      newData.push(["", "", "", "", "", row[5], row[6]]); // Added
    }
  });
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

参考文献:

如果这不是你想要的,我很抱歉。