본문 바로가기
기타 대외활동/투두몰 서포터즈

[구글 앱스 스크립트] 3주차 두 번째 : 스프레드시트 쿼리문과 데이터 호출

by bri9htstar 2023. 7. 16.

낭패다. 스프레드시트도 점점 어려워진다.

솔직히 말해 스프레드시트는 따옴표 하나와 괄호 하나로 그 의미가 완전히 달라지니 그 점에만 유의하면 된다.

그리고 있는 그대로를 갖다 쓸 때는 복붙이 귀찮다고 따라 적기보다는 무조건 Ctrl + C / Ctrl + V를 꼭 하길 …

내가 하는 말이 뭔지 다들 이해할 것이다.

진짜 이해는 다 했는데 왜 내 시트에서는 실현이 안 되는지 기이한 현상이 발생할 수도 있다. ㅜ

오늘도 시작해보자.


다른 시트의 데이터 불러오기

구글 스프레드시트의 가장 큰 장점은 서로 다른 시트의 데이터를 자유롭게 불러올 수 있다는 점이다.

IMPORTRANGE 함수를 사용하면, 다른 워크 시트의 데이터 호출할 수 있다.

 

 

너무 복잡해보이지만 어떻게 하느냐.

 

=IMPORTRANGE("스프레드시트 URL", "'워크시트 이름'!셀 범위"

 

범위 문자열을 보면, 표기 구조가 '{워크 시트 이름}'!{셀 범위} 인 걸 확인할 수 있다. 데이터를 불러올 때 필요한 단서는 위에서 알 수 있듯이 세 가지나 되는 것이다. URL, 워크 시트, 셀 범위까지.

꽤나 걸린다.

 

데이터를 불러올 때 꽤나 시간이 걸린다. 그래서 뽑아올 때마다 기다려야 해서 맥 빠짐.

 

진짜 이 함수를 쓰면서 느낀 게 사소한 실수 하나로 이게 데이터가 불러와지지 않을 수가 있다.

다행히 나는 실수가 많이 없었다

https://twitter.com/overflow_meme/status/1321565204912705538

 

트위터에서 즐기는 Meme Overflow

“Why is this IMPORTRANGE formula not working? https://t.co/mgmOw1KA3M #importrange #googlesheetsformula #googlesheets”

twitter.com

이 사람이 어떻게 실수했는지 보면 스프레드시트가 얼마나 소중히 다뤄줘야 하는지 알 수 있다.

 

그런데 이 IMPORTRANGE는 해당 모든 원본 데이터를 불러오기 때문에 불필요한 정보가 있을 수도 있다.

흔히 말해 필터링을 하고 싶다면 어떻게 해야할까? 이 때 필요한 게 QUERY문이다.

 

QUERY문 사용하기

구글 스프레드 시트는 SQL에 사용하는 쿼리문을 그대로 사용할 수 있는 QUERY 함수를 제공한다. QUERY는 데이터베이스에서 특정한 데이터를 보여달라고 요청하는 것이다. 그러나 나는 SQL을 사용해본 적이 없어서 이 QUERY를 하나의 필터로 생각했다. 이 QUERY 함수는 세 개의 입력값을 받는다.

 

 

데이터는 쿼리문, 즉 필터를 적용할 데이터를 불러오는 것이고 검색어는 이 셀 범위 안에서 어떤 데이터를 불러올지를 정의한 SQL문을 입력한다. 검색어가 필터가 된다고 생각하면 편했다. 마지막 헤더는 선택한 셀의 범위에서 열 이름이 어느 행까지 있는지 정의하는 것이라, 보통 적지 않으면 첫 번째 행이 이름 열이라고 생각한다.

여기서 아까 배운 IMPORTRANGE 함수를 이용해 데이터를 불러오고, QUERY 함수를 이용해 필요한 데이터만 필터링할 수 있다.

 

 

“=QUERY(IMPORTRANGE(”스프레드 시트 URL", "’시트 이름'!A:C"), "SELECT Col1, Col2, Col3")”

위 예시에서 다음과 같이 입력하면, A:C 열의 내용이 모두 불러와진다. 그러면 그냥 IMPORTRANGE 함수랑 똑같은 거 아니야? QUERY 함수의 검색어 값을 보면 “SELECT Col1, Col2, Col3”이 적혀있다. 이는 IMPORTRANGE 함수로 불러온 셀 범위에서 첫 번째 열(Col1), 두 번째 열(Col2), 세 번째 열(Col3)의 데이터를 모두 선택(SELECT)해서 보여주겠다는 의미라서 모두 불러와졌다. 여기서 내가 첫 번째 열만 필요하면 "SELECT Col1"만 입력하면 된다.

 

필요한 데이터만 호출하기

위에서는 특정 열을 불러올 수 있었는데, 이제 데이터 내에서 조건을 걸어 필터링다운 필터링을 해보자. 어떻게 할까?

사실 아까 쿼리문 내 검색어에서 뒤에 WHERE만 붙이면 된다. 이게 무슨 소리냐면 …

 

“=QUERY(IMPORTRANGE(”스프레드 시트 URL", "’시트 이름'!A:C"), "SELECT Col1 WHERE …”)

 

이 WHERE 뒤에 이제 걸어주고 싶은 조건을 걸어주면 된다. SQL을 배웠으면 즉각 알텐데 몰라서 찾아봤다. ㅠ

 

Col1 CONTAINS 'A' 'A'를 가지고 있는 것만 (부분일치)
Col1 STARTS WITH 'A' 문자열 맨 앞이 'A'로 시작하는 것
Col1 ENDS WITH 'A' 문자열 맨 뒤가 'A'로 끝나는 
Col1 MATCHES '정규 표현식' 정규 표현식을 사용한다는 특징
Col1 contains 'A' AND Col3 >= 40 Col1에서 'A'를 가지고 있는 것과 Col3이 40보다 큰 

 

CONTAINS의 경우 꽤나 현업에서 자주 쓰인다고 강조 아닌 강조가 되는 함수이기에 기억하기.투두몰 강의 내용을 가져올 수는 없어서 구글링으로 좋은 참고 사이트를 찾았다.

https://m.post.naver.com/viewer/postView.nhn?volumeNo=29666784&memberNo=6454847

 

참고 바람. 


아직 이 정도 경지는 아니다

 

오늘도 공부를 마치고 쉬러 갑니다. 다들 수고 많으셨어요!


위 글은 투두몰 서포터즈 활동의 일환으로 작성된 글입니다.

https://edu.todomall.kr/?utm_source=supporters&utm_medium=contents

 

투두몰 ㅣ 일잘러의 투두리스트를 훔치다

일잘러의 투두리스트를 훔치다! 오피스 툴을 직접 따라하며 배우고, 과제를 통해 결과물을 만들어요.

edu.todomall.kr

 

댓글