根据在特定单元格区域中找到的文本部分更改行单元格背景颜色

时间:2014-12-31 15:27:02

标签: jquery datatable

我查看了一些涉及根据整个单元格值更改行背景颜色的脚本,但我希望通过工作表运行并搜索" domaincontrol.com&#34的实例;。我在电子表格中有一个goDaddy域名列表,我试图自动将整行的背景颜色更改为红色如果domaincontrol.com的实例部分存在于单元格G1-Z中(请注意,单元格值包含ns12之类的变体。 domaincontrol.com和ns13.domaincontrol.com因此我只能查找部分字符串" domaincontrol")。

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('MainList');
  var rows = sheet.getRange('g1:z');
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  for (var i = 0; i <= numRows - 1; i++) {
    var n = i+1;
    var bgColor = (values[i].indexOf('domaincontrol') == -1) ? 'white' : 'red';
    sheet.getRange('a'+n+':z'+n).setBackgroundColor(bgColor);
  }
};

这是我最终想出来的,但是当我运行脚本时它似乎并不适合我。

添加注意:在通过Logger.log(values[i]);进行日志记录时,它会记录正确的值,并在日志查看器中的JS数组中显示它们。我很困惑为什么当通过indexOf查找时,三元组没有正常运行。是否有其他合适的方法来搜索&#39; domaincontrol&#39;在我的函数中的循环单元格?

由于

1 个答案:

答案 0 :(得分:0)

我在这里写出了我自己的问题的答案,因为我已经找到了问题。我可以使用此处引用的toString();函数正确搜索部分字符串domaincontrol:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString。这让我可以正确地搜索它,出于某种原因,如果有人可以澄清那将是很好的但是它不允许我在数组格式中搜索domaincontrol的部分实例,因此将其解析为字符串已解决此

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('**YourSheetName**');
  var rows = sheet.getRange('**SpreadSheetRange**');
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  for (var i = 0; i <= numRows - 1; i++) {
    var n = i+1;
    var row = values[i];
    var rowString = values[i].toString();
    var bgColor = (rowString.indexOf("domaincontrol") == -1) ? "white" : "red";
    //Logger.log(row.indexOf);
    sheet.getRange('a'+n+':z'+n).setBackgroundColor(bgColor);
  }
};

我还会注意到,它似乎是区分大小写的。因此,在执行此类操作时,我会为小写和大写的两个实例运行脚本,或者在字符串上运行toLowerCase();,以便正确捕获。