2016-06-28 7 views
0

저는 스크립팅이 새롭습니다. 편집 할 때 셀 플래시를 만들거나 색상을 변경하는 스크립트를 최근에 발견했습니다. 동일한 스크립트를 구현하고 싶지만 셀 범위를 구현하고 싶습니다. 나는 시도했다 : A7 : 그러나 작동하지 않을 것이다. 나는 어딘가에서 논쟁을 놓치고 있다고 생각한다.Google 스프레드 시트 스크립트로 셀 범위 깜박임

function onEdit(e) 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var mysheet = ss.getSheetByName("Sheet1"); 
    var activeCell = ss.getActiveCell().getA1Notation(); 

    if(activeCell == "A1") 
    { 
    for(var i=0;i<50;i++) 
    { 
     if(i%2 == 0) 
     mysheet.getRange("A1").setBackground("RED"); 
     else 
     mysheet.getRange("A1").setBackground("WHITE"); 

     SpreadsheetApp.flush(); 
     Utilities.sleep(500); 
    } 
    } 
} 

답변

0

A7 : A 범위에있는 경우 편집 된 셀을 깜박이는 것으로 알고 있습니다. 이것은 범위 속성이 활성 범위를 참조하는 event object을 사용하여 아래에서 수행됩니다.

열이 1이고 행> = 7이면 50 번 깜박입니다. (이 방법에 의해 점멸 25 초 의미한다.)

function onEdit(e) { 
    if (e.range.getColumn() == 1 && e.range.getRow() >= 7) { 
    for (var i = 0; i < 50; i++) { 
     e.range.setBackground(i % 2 ? "WHITE" : "RED"); 
     SpreadsheetApp.flush(); 
     Utilities.sleep(500); 
    } 
    } 
} 

당신이 에게 전체 범위 A7 원한다면, •의 세포 중 하나를 편집 할 때을 깜박을 한 후 관련 방법은 setBackgrounds이며, 색상의 두 배 배열을 사용합니다. 이 배열은 제 준비해야하므로 코드 this answer에서 배열 충진 방법을 사용

function onEdit(e) { 
    if (e.range.getColumn() == 1 && e.range.getRow() >= 7) { 
    var range = e.range.getSheet().getRange("A7:A"); 
    var height = range.getHeight(); 
    var whiteArray = Array.apply(null, Array(height)).map(function() { 
     return ["WHITE"]; 
    }); 
    var redArray = Array.apply(null, Array(height)).map(function() { 
     return ["RED"]; 
    }); 
    for (var i = 0; i < 50; i++) { 
     range.setBackgrounds(i % 2 ? whiteArray : redArray); 
     SpreadsheetApp.flush(); 
     Utilities.sleep(500); 
    } 
    } 
} 

된다.

+0

좋은 답변입니다. 몇 가지 고려할 사항 : 끝 부분이 아닌 데이터가있는 부분 만 플래시하십시오. 열 변경 var range = e.range.getSheet(). getRange ("A7 : A"); ~ var lr = e.range.getSheet(). getLastRow(); var range = e.range.getSheet(). getRange ("A7 : A"+ lr); 또한 , 당신이 깜박이는 세포가 range.setBackgrounds (I % 2 whiteArray? redArray)의 배열을 반대로 빨간색을 유지하려는 경우; // 흰색 range.setBackgrounds에게 플래시 후 (? 난 %의 2 redArray : whiteArray) ; // 점멸 후 적색 –

+0

훌륭함, 훌륭하게 작동합니다. 특정 탭에이 링크를 어떻게 연결합니까? 현재 스크립트는 하나의 시트에 대해 작동하지만 많은 탭이있는 통합 문서에 대해서는 작동하지 않습니다. 또한 셀에 특정 텍스트가있을 때이 코드를 구현하려면 다른 항목을 추가 할 수 있습니까? 다시 한 번 도움을 주셔서 감사합니다. – Ozz

+0

@Ozz 단지 깜박 거리기를 원한다면'if', ...'&& e.value = 'blink''에서 다른 비교를 사용하십시오. 이를 특정 시트로 제한하려면 시트 이름 인 e.range.getSheet(). getSheetName() == 'Blinking Sheet'를 비교하십시오. –

관련 문제