2014-12-31 4 views
0

Я просмотрел некоторые сценарии, связанные с изменением цвета фона на основе всего значения ячейки, но я ищу, чтобы пробежать лист и искать экземпляр «domaincontrol.com». У меня есть список доменов 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 в средстве просмотра журналов. Я смущен, почему terniary не работает должным образом при поиске через indexOf. Есть ли другой подходящий способ поиска экземпляра «domaincontrol» в ячейках с циклом в моей функции?

Благодаря

ответ

0

я напишу ответ на свой вопрос здесь, как я понял, вопрос. Я смог правильно найти элемент управления доменом в домене с помощью функции toString();, указанной здесь: 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); 
    } 
}; 

Я также отмечу, что кажется, что индексOf чувствителен к регистру. Поэтому, когда вы делаете что-то вроде этого, я запускаю скрипт для обоих экземпляров строчных и прописных букв или запускаю toLowerCase(); в строке, чтобы он правильно записывался.

Смежные вопросы