2014-12-31 3 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 배열에서 로그 뷰어에 표시합니다. indexOf를 통해 찾을 때 3 자 정보가 제대로 작동하지 않는 이유가 혼란 스럽습니다. 내 함수에서 루프가있는 셀에서 'domaincontrol'의 인스턴스를 검색 할 수있는 또 다른 적합한 방법이 있습니까?

감사

답변

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는 대소 문자를 구분합니다. 그래서 이런 식으로 할 때 제대로 캡처 할 수 있도록 문자열에 toLowerCase();을 실행하여 소문자와 대문자 모두의 스크립트를 실행합니다.

관련 문제