구글 스프레드시트에서 버튼넣고 원하는 열 모두 감추기

오늘은 간단하게 스크립트(Script)를 이용해서 구글 엑셀인 스프레드시트로 가계부를 만들때 사용된 부분을 나눠서 설명을 드리겠습니다. 엑셀보다는 구글 스프레드시트가 공유성이 좋아서 부부가 서로 재정을 함께 관리하는데 유용할 거라고 봅니다. 물론 인터넷 베이스이기때문에, 속도문제가 엑셀보다 느린 단점, 그리고 기능이 제한되어 있다는 것이 있지만, 그래도 살펴보면 살펴볼수록 방대한 기능이 있기때문에 몰라서 그렇지, 알면 왠만한 것은 다 만들수 있지 않을까합니다.

오늘은 각 월 시트에서 통계를 받아와서 메인에서 뿌려주는데, 카테고리가 메인과 서브카테고리가 있는데, 전체 다 보면 내용이 많아서 메인만 볼 수 있으면 좋겠다 싶어서 버튼을 넣어서 해결했습니다.

 

오늘 처음으로 Script를 사용해보네요. 더 좋은 아이디어가 있으시면 알려주세요.

버튼을 먼저 만듭니다.

메뉴 “삽입 > 그림 “을 클릭하면 아래와 같이 열리는데, 간단하게 텍스트를 이용해서 단추를 만들고 삽입을 합니다. 그리고 난다음에 원하는 위치에 버튼 그림을 놓습니다.

그림버튼과 엑션스크립트를 연결합니다.

처음에 혼돈되었는데, 그림을 클릭하면 오른쪽에 점이 있는 아이콘을 클릭하면 아래처럼 팝업창이 뜹니다. 주의 – 한번 스크립트와 연결되면, 버튼을 클릭하면 스크립트가 실행되기때문에 이때부터는 마우스 오른쪽 버튼을 누르셔서 선택하고 움직이든, 메뉴에 들어가든, 수정하시든 할 수 있습니다.

스크립트 연결하기

팝업창에서 function 으로 들어가는 함수명을 넣습니다. 영어로 넣어야 아무래도 안정되지 않을까요? 한글은 안해봐서 ^^:

이렇게 하면 화면에 아무런 변화가 없습니다. 그냥 선언만 된것입니다. 클릭하면 이런 에러가 뜹니다.

 

스크립트 작성하기

아래 처럼 메뉴를 선택해서 들어가면 새 탭으로 해당 스크립트 에디터가 나타납니다. 전 이미 해놓은게 있는데, 처음하면 권한등등 이리저리 뭐 묻는 게 있는데 대충 하시면 됩니다.

 

하려고 하는 계획 다시 점검. B13에서 아래 원하는 부분의 영역중에서 내용이 아무것도 없는 셀을 선택하고, 그 해당 열을 숨겨라입니다. 

 

아래는 해당 코드입니다.

function closeRows(){   
    // 당연한 소리지만, 현재 시트에서   
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();   
    // 점검할 영역을 선택하고,   
    var subCataRange = ss.getRange("B14:B74");   
    // 값을 배열로 담아라.   
    var subCates = subCataRange.getValues();   

    // 반복해서 돌면서   
    for(var i = 0; i<subCates.length;i++){     
        // 값이 없으면     
        if(subCates[i][0] != ''){       
            // 셀정보를 얻고,       
            var cell = subCataRange.getCell(i+1,1) // getCell은 선택영역에서 상대위치입니다.       
            // 시트지에서 해당 셀을 숨겨라       
            ss.hideRow(cell);     
        }   
    } 
}

저는 아래 사이트를 참고 했습니다.

https://www.benlcollins.com/apps-script/google-sheets-button/

 

그럼 건투를 빕니다