查找重复项,包括脚本,语法格式

时间:2015-04-16 17:06:48

标签: google-apps-script google-sheets

我需要一个脚本来查找格式完全相同的Google云端硬盘页中的重复项。具体而言,列中可能存在重复数据,但一个实例应为红色,另一个实例应为黑色。我想突出显示两个实例都是黑色的单元格。我有一个脚本来查找重复项,但无论文本颜色如何,它都会突出显示它们。谢谢你的帮助。

我用来查找重复项的脚本是:

//================================


function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{name : "Check Duplicates",functionName : "checkDuplicates"}];
  sheet.addMenu("Scripts", entries);
};

function checkDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange("L:L"); // Set Any Range
  // "L:L" is for Columns L
  // And if you want to check duplicates for whole sheet then try this:
  // var dataRange = sheet.getDataRange();
  var data = dataRange.getValues();
  var numRows = data.length;
  var numColumns = data[0].length;

  var formats = [];
  var values = [];
  for (var i = 0; i < numRows; i++) {
    formats[i] = [];
    for (var j = 0; j < numColumns; j++) {
      formats[i][j] = 'WHITE';
      if (data[i][j] != '') {
        values.push([data[i][j], i, j]);
      }
    }
  }
  var numValues = values.length;

  for (var k = 0 ; k < numValues - 1; k++) {
    if (formats[values[k][1]][values[k][2]] == 'WHITE') {
      for (var l = k + 1; l < numValues; l++) {
        if (values[k][0] == values[l][0]) {
          formats[values[k][1]][values[k][2]] = 'YELLOW';
          formats[values[l][1]][values[l][2]] = 'YELLOW';
        }
      }
    }
  }

  dataRange.setBackgroundColors(formats);
}


//================================

我不熟悉Google云端硬盘的脚本,因此我不确定如何修改以添加格式要求。

1 个答案:

答案 0 :(得分:0)

突出显示L列中的重复项,其中字体颜色为黑色:  被视为重复的单元格必须具有相同的值和字体颜色为黑色。

function checkDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange("L1:L" + sheet.getLastRow());
  dataRange.setBackground("white");
  var data = dataRange.getValues();
  var colors = dataRange.getFontColors();
  var numRows = data.length;
  var highlights = dataRange.getBackgrounds();
  for(var r = 0; r < data.length; r++) {
    data[r].push(colors[r][0]);
    data[r].push(r);
  }
  data.sort();
  for(var r = 0; r < data.length - 1; r++) {
    if(data[r][0] && data[r][1] == "#000000") {
      if(data[r][0] == data[r+1][0] && data[r+1][1] == "#000000") {
        highlights[data[r][2]][0] = "yellow";
        highlights[data[r+1][2]][0] = "yellow";
      }
    }
  }
  dataRange.setBackgrounds(highlights);
}

如果这不符合您的意图,请与我联系。

enter image description here

L3&amp; L6突出显示。 L2&amp; L5不是。