Google apps script 查找重复项,包括脚本格式、语法

Google apps script 查找重复项,包括脚本格式、语法,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我需要一个脚本,以找到我的谷歌驱动器表的格式完全相同的副本。具体来说,列中可能存在重复数据,但一个实例应为红色,另一个实例应为黑色。我想突出显示两个实例均为黑色的单元格。我有一个脚本来查找副本,但不管文本颜色如何,它都会突出显示它们。谢谢你的帮助 我用于查找重复项的脚本是: //================================ function onOpen() { var sheet = SpreadsheetApp.getActiveSpreadsheet();

我需要一个脚本,以找到我的谷歌驱动器表的格式完全相同的副本。具体来说,列中可能存在重复数据,但一个实例应为红色,另一个实例应为黑色。我想突出显示两个实例均为黑色的单元格。我有一个脚本来查找副本,但不管文本颜色如何,它都会突出显示它们。谢谢你的帮助

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

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


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


//================================
//================================
函数onOpen(){
var sheet=SpreadsheetApp.getActiveSpreadsheet();
var entries=[{name:“检查重复项”,functionName:“检查重复项”}];
添加菜单(“脚本”,条目);
};
函数检查重复项(){
var sheet=SpreadsheetApp.getActiveSheet();
var dataRange=sheet.getRange(“L:L”);//设置任何范围
//“L:L”表示L列
//如果要检查整张图纸的副本,请尝试以下操作:
//var dataRange=sheet.getDataRange();
var data=dataRange.getValues();
var numRows=data.length;
var numColumns=数据[0]。长度;
var格式=[];
var值=[];
对于(变量i=0;i

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

突出显示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);
}
函数检查重复项(){
var sheet=SpreadsheetApp.getActiveSheet();
var dataRange=sheet.getRange(“L1:L”+sheet.getLastRow());
数据范围。背景(“白色”);
var data=dataRange.getValues();
var colors=dataRange.getFontColors();
var numRows=data.length;
var highlights=dataRange.getBackgrounds();
对于(var r=0;r
如果这不是你想要的,让我知道


L3和L6突出显示。L2和L5不是。

发布一些您迄今为止尝试过的代码。这些代码与我的意图非常接近。但是,我只希望将两个实例的格式都设置为黑色的副本高亮显示。这里有一个例子。在示例中,单元格L3和L6应高亮显示,但L2和L5不应高亮显示。再次感谢您的帮助。请在运行代码后准确地告诉我错误所在。假设示例链接中的L列是地址。我将数据复制到电子表格中,运行代码,结果完全符合预期。L3和L6是唯一突出显示的项目。我道歉!您提供的代码完全符合预期。我错误地运行了旧代码。非常感谢你的帮助。