2016-06-16 2 views
2

Google Apps Script을 사용하여 스프레드 시트 시트의 짝수 행에 다른 배경색을 설정했지만 매우 매우 느립니다 ... 어떤 아이디어로 어떻게 최적화 할 수 있습니까?Google 스프레드 시트의 대체 배경 행 색상에 대한 최적화

예 스프레드 시트 : https://docs.google.com/spreadsheets/d/1yRotjooCRpuuSTjjgFEzw4xxqPLJwMZJPchYQeNvUyw/edit?usp=sharing

도구로 이동하여 GS 코드를 참조하십시오 -

코드는 ...> 스크립트 편집기 : 대신 셀의 라인으로

function myFunction() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var range = ss.getRange("A1:Z1000"); 
    ss.setActiveRange(range); 
    var totalRows = SpreadsheetApp.getActiveRange().getNumRows(); 
    var totalColumns = SpreadsheetApp.getActiveRange().getNumColumns(); 
    var startRow = SpreadsheetApp.getActiveRange().getRow(); 
    var startColumn = SpreadsheetApp.getActiveRange().getColumn(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var row = startRow; 
    while (row < totalRows+startRow) 
    { 
    var column = startColumn; 
    while (column < totalColumns+startColumn){ 
     if(row%2 == 0){ 
     sheet.getRange(row, column).setBackground("#F3F3F3"); 
     } 
     column++; 
    } 
    row++; 
    } 
} 

답변

2

이동 라인 셀. 변경할 행에서 직접 루프 할 수도 있습니다.

function setBackgroundColorOnEvenLines() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 

    var sheet = ss.getActiveSheet(); 
    var totalRows = sheet.getMaxRows(); 
    var totalColumns = sheet.getMaxColumns() 

    for (var i=2; i <= totalRows; i+=2){ 
     sheet.getRange(i, 1, 1, totalColumns).setBackground("#F3F3F3"); 
    } 
} 

This reference은 위와 같은 전체 줄을 참조하는 방법을 보여줍니다.

+0

나는 해결책을 알고 있지만 제대로 작동하지는 않습니다. – Valip

+0

@PavelValeriu 지금 시도해보십시오! –

+0

이제 내 코드보다 10 배 빠릅니다. 감사합니다! – Valip

1

Google Apps Script 솔루션을 요청했지만 스크립팅 된 솔루션이 아닌 수식을 사용하여 조건부 서식을 설정하는 편이 더 쉽습니다. 복잡하지 않고 빠르고 직관적입니다.

=mod(A1,2)=0 

정의 된 범위의 모든 짝수 행을 포맷합니다.

1

또한이 호출을 조사하는 것 같아서 :

https://developers.google.com/apps-script/reference/spreadsheet/range#getbackgrounds

와 자매 호출

https://developers.google.com/apps-script/reference/spreadsheet/range#setbackgroundscolor

이 모든 배경 색상의 전체 범위에 대한 두 가지 차원 배열을 반환 .

이것을 사용하여 전체 범위의 배열을 가져 와서 2 단계 씩 단계별로 실행하고 각 행의 모든 ​​요소를 ​​원하는 대체 배경색으로 설정할 수 있습니다 (여기에 설명 된 방법 중 하나를 사용하는 것이 좋습니다. Javascript | Set all values of an array). 그런 다음 setBackgroundColors (color)를 호출하여 색상을 설정합니다.

이렇게하면 끝에있는 스프레드 시트를 실제로 업데이트하기 위해 한 번 전화를 걸면됩니다.이 부분은 가장 많은 시간이 걸리고 원본 코드의 속도가 가장 느려질 것입니다.

관련 문제