brunch

You can make anything
by writing

C.S.Lewis

by Nak Nov 18. 2022

코멘토-Google SQL & Script로 기획하기

코멘토에서 강의중입니다. 오늘은 시트 복사를 해보겠습니다.

1. 코멘토에서 강의를 시작하게 되었읍니다.


2022년 매우 많은 일들이 있었지만, 가장 기억에 남는 일은 멘토와 멘티를 이어주는 교육 사이트 Comento(코멘토)에서 Google Spreadsheet를 활용한 기획 강의를 시작한 일이다.


사실 이렇게 오래할지는 몰랐기 때문에, 초반에는 강의 관련 글을 쓰지 않았지만 벌써 반년이 지났다.

오늘 강의 자료로 App Script 구문을 하나 짜면서, 관련 내용도 좀 공유하고자 오랜만에 글을 쓰게 되었다.


강의 광고를 잠깐 하자면 아래와 같다.


코멘토 사이트: https://comento.kr/

데이터로 소통하고 싶은 PM을 위한 구글 스프레드시트


초기보다 확실히 수강생분들이 많아졌고, 내년 1월에는 벌써 5기째 강의를 시작하게 될 것 같다. 4기는 오늘 마감 되었다.


2. 강의 내용은?


Google Spreadsheet 각종 함수 및 SQL 데이터 분석 그리고 대시보드 만들기가 강의 주 내용이다.

다른 강의와 차별점은 역시 내가 직접 기획한 프로젝트를 실제로 경험해 볼 수 있다는 것이다.(청정원을 운영하는 대상이라는 기업과 진행한 프로젝트이다.)


엑셀 함수들이나(구글 스프레드시트와 동일) SQL 문법들은 경험을 하다보면 누구나 익힐 수 있는 것들이다. 즉, 스킬적인 부분은 익숙해지기까지 시간이 조금 걸릴지언정, 한번 익숙해지면 어렵지 않게 활용할 수 있다.


하지만 기획적인 부분들은 본인이 직접 경험해보기 전까지 절대 느낄 수 없는 부분이다. 강의시간에도 내가 가장 중점적으로 이야기하는 부분은 바로 강의 시간에 쓰는 스킬들을 활용해 어떤 기획을 실제로 낼 수 있느냐에 초점을 맞추고 있다.


물론 강의 시간의 대부분은 스킬적인 부분에 중점을 두고는 있지만, 그 스킬들이 왜 사용되어야 하는지에 대한 당위성을 제공한다. 그리고 마지막에는 모든 스킬들이 합쳐져 하나의 기획안으로 도출되는 경험을 강의를 통해 느낄 수 있도록 하는 것이 나의 가장 큰 목표이다.


3. 오늘의 Apps Script


강의는 주로 실습 시트를 통해서 이루어지는데, 실습 시트를 인원 별로 만들어야 하다보니 조금 귀찮아지기 시작했다. 인원이 2~3명 정도면, 그냥 시트 복사를 누르겠는데 6명, 7명이 되다 보니 더 이상 시트 복사 누르기가 귀찮아지기 시작해 오랜만에 Script 코드를 하나 짜 보았다.


모든 기술의 발전은 귀찮음으로부터 시작한달까.


오늘 만든 코드는 바로 1주차 실습 시트를 복사해서 각 이름별 실습 시트를 만드는 것이다.


나의 강의는 스프레드시트에 수강생들의 실습 시트를 만들어 강의와 함께 진행하고 있다. 강의와 실습이 동시에 진행된다.


아래와 같은 실습 시트 Template을 하나 만든 후, 복사 및 이름을 붙여주려고 한다. 

시트 이름은 "000 시트" 형태가 된다.


참고로 1주차 강의는 실제 내가 기획한 프로젝트로 이루어지며, 데이터를 어디서 가져와야 하는지 그리고 간단한 함수(sumifs, countifs) 등을 배우게 된다.


이 글은 Apps script 글이니(JavaScript로도 가능하다) 코드를 우선 보도록 하자.


Apps Script는 우선 SpreadsheetApp Class를 불러오는게 기본이다. 이 클래스를 불러옴으로써, 스프레드시트를 액티브 시켜야 하며, 현재 활성화된 시트를 불러오기 위해서 getActiveSpreadsheet 메소드를 불러오도록 하자.


Google Developer에 가면 SpreadsheetApp Class와 getActiveSpreadsheet 메소드를 변수 처리하여 대부분 사용하는 것을 발견할 수 있다. 나 역시 ss 변수를 활용하여 이 값들을 넣어두었다.


ss.getSheetByName("실습").getSheetName();

위 함수는 "실습" 이름으로 된 시트를 활성화 한 후 그 시트의 제목을 불러오는 함수이다. 나는 추후에 이 값을 String으로 변환하기 위해서 toString을 써주기도 하였다.


이 값을 가져온 이유는 추후 "실습자 이름" +  실습이라는 시트 이름을 명명하기 위해서이다.


mentee 변수에는 실습자들의 이름을 넣어두었다. 실제 수강생 이름들을 넣을 수는 없어, 월드컵 명단을 넣어놓았다?(사실 못 나가는 사람이 있긴 하지만 나의 최애 플레이어라 넣어 놓았다.)


그 다음 foreach 반복문을 돌렸다.


확실한 것은 아니지만 Apps Script 상에서 for문을 돌릴때보다 foreach문을 돌리는 것이 속도가 더 빠른 것 같은 느낌을 받았다. for문을 돌리면 느렸던 것으로 기억해, 항상 foreach문을 사용하는 편이다.


mentee를 반복문으로 돌리면 총 6명의 실습생이 있으니, 6번이 0~5번까지 돌아갈 것이다. index도 넣어놓았는데, 시트 이름 앞에 번호를 붙일려고 처음에 넣었지만 그냥 번호는 안 넣기로 해서 쓸모없는 parameter가 되어버렸다.


ss.duplicateActiveSheet(): 현재 활성화된 시트를 복사하는 메소드이다.


Developer 사이트에서 복사하면서 시트 이름도 바꾸어주는 메소드를 찾아보았으나, 찾지 못하였다.


ss.renameActiveSheet(): 현재 활성화된 시트의 이름을 바꾸어주는 메소드이다.


Duplicate 메소드에서 시트 이름을 바꿔주는 파라미터는 없었기 때문에 대신 rename 메소드를 활용하였다.



ss.renameActiveSheet(name.toString() + "실습");


foreach문에서 name으로 배열 값을 toString으로 파싱하여 가져오고, 거기에 실습이라는 단어를 붙였다. 아 참고로 스페이스바를 하나 줘서 띄어쓰기를 해야 하는데 하지 못했으므로 수정을 해야겠다.


모두 완료한 후 실행해보았다.



메시 실습, 호날두 실습, 손흥민 실습 등의 이름으로 실습 시트가 복사되어 만들어 진 것을 확인할 수 있다.


앞으로 강의 기수가 바뀔 때마다, mentee 배열 값에 이름만 바꿔주면 몇 명이 되든 시트 복사를 할 수 있다.


끝.

매거진의 이전글 구글스프레드시트 쿼리함수 이용하기 - 1
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari