2014-12-31 32 views
0

我看了涉及基于整个单元格值改变行背景颜色一些剧本,但我期待通过纸张运行并搜索“domaincontrol.com”的实例。我有一个电子表格GoDaddy的域名列表,我试图IF 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查找时三元组无法正常工作。是否有另一种适当的方式来搜索我的函数中的循环单元格中的'域控制'的实例?

感谢

回答

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

我还会注意到,似乎indexOf IS区分大小写。所以做这样的事情,当我运行该脚本为小写和大写的两个实例或字符串运行toLowerCase();所以它抓住正确。

相关问题