[카테고리:] 구글 스프레드시트

  • 구글 스프레드시트 QUERY 함수 완전정복 — IMPORTRANGE부터 PIVOT까지

    구글 스프레드시트 QUERY 함수 완전정복 — IMPORTRANGE부터 PIVOT까지

    나는 회사에서 엑셀만 20년 넘게 쓰다가 구글 스프레드시트로 갈아탄 사람이다. 처음엔 “엑셀이 짱이지” 했는데, QUERY 함수를 알고 난 뒤로는 구글 스프레드시트를 주로 사용한다.

    ( 엑셀 추가기능 아별툴의 단축키가 그리워 가끔씩 엑셀을 키곤하지만, 구글 시트가 대세다.)

    VLOOKUP 하나 걸려고 수식 복사하고, 피벗테이블 만들려고 시트 옮기고, 필터 걸었다 풀었다 하는 그 삽질을 한 방에 해결해주는 녀석이기 때문이다.

    이 글에서는 QUERY 함수의 기본기부터 IMPORTRANGE로 다른 파일 데이터를 끌어오는 방법, 정규표현식 필터링, 피벗테이블 구현까지 실무에서 바로 쓸 수 있는 내용을 총정리한다.


    📌 먼저 알고 가자: QUERY 함수의 기본 구조

    =QUERY( 데이터_범위, "쿼리문", 헤더_수 )
    
    구성 요소설명예시
    데이터_범위데이터를 가져올 출처 (시트 및 범위)B4:F11
    “쿼리문”어떻게 가져올지 조건과 방법을 기술“SELECT B, SUM(F) GROUP BY B”
    헤더_수범위의 첫 몇 줄이 제목(헤더)인지 지정1

    ⚠️ 열 지정 방식: A,B,C vs Col1, Col2, Col3

    같은 파일 안에서는 SELECT A, B, C처럼 열 알파벳을 써도 동작한다. 하지만 처음부터 Col1, Col2, Col3 방식으로 쓰는 습관을 들이자. 이유는 두 가지다.

    1. IMPORTRANGE로 외부 파일을 참조하면 반드시 Col 방식을 써야 한다. (A,B,C 안 먹힌다.)
    2. 데이터 범위 앞에 열을 추가하면? A,B,C 방식은 쿼리문을 전부 수정해야 하지만, Col 방식은 수정할 필요가 없다.

    💡 Col은 대소문자를 구분한다. col1이나 COL1은 에러가 난다. 반드시 Col1으로 쓸 것.

    아래 설명에서는 이해를 돕기 위해 A,B,C 방식으로 설명하되, 실무에서는 Col 방식을 쓰자.


    🔎 1단계. 데이터를 ‘선택’하고 ‘걸러내기’ — SELECT와 WHERE

    SELECT: 어떤 열을 볼 것인가

    =QUERY(B4:F11, "SELECT *", 1)                     -- 모든 열 다 보기
    =QUERY(B4:F11, "SELECT B, D", 1)                   -- B열과 D열만 보기
    =QUERY(B4:F11, "SELECT B, C, (D / 100) * 7", 1)   -- 산술 연산도 가능
    

    합계를 구할 때는 SUM을 쓴다. 단, 반드시 GROUP BY와 함께 써야 한다.

    =QUERY(B4:F11, "SELECT SUM(E)", 1)                 -- E열 전체 합계
    =QUERY(B4:F11, "SELECT C, SUM(F) GROUP BY C", 1)   -- 분류별 금액 합계
    

    WHERE: 어떤 조건으로 걸러낼 것인가

    WHERE는 QUERY의 핵심이다. 엑셀에서 자동필터 걸고, 복사하고, 다시 풀고 하던 그 작업을 한 줄로 해결한다.

    📅 날짜 조건

    -- 특정 일자
    WHERE C = DATE '2022-04-01'
    
    -- 기간 범위
    WHERE C >= DATE '2022-04-01' AND C <= DATE '2022-12-31'
    

    날짜는 반드시 DATE '연-월-일' 형식으로 써야 한다. 작은따옴표로 감싸는 것을 잊지 말자.

    📝 문자 조건

    -- 정확히 일치
    WHERE B = '외환차손'
    
    -- 공백 제외 (값이 있는 행만)
    WHERE C IS NOT NULL
    
    -- 공백인 행만
    WHERE C IS NULL
    

    🔢 숫자 조건

    WHERE E = 50000           -- 정확히 50,000인 것
    WHERE E >= 1000           -- 1,000 이상
    WHERE E >= 1000 AND E <= 10000   -- 1,000 ~ 10,000 사이
    WHERE E != 50000          -- 50,000이 아닌 것
    

    🔎 2단계. 텍스트 필터링의 세계 — CONTAINS, LIKE, MATCHES

    여기서부터가 QUERY의 진짜 실력이 나오는 구간이다. 엑셀의 기본 필터로는 구현하기 힘든 세밀한 조건을 한 줄로 처리할 수 있다.

    CONTAINS: 특정 문자가 포함된 항목 찾기

    SELECT B WHERE B CONTAINS '월별'          -- '월별'이 포함된 항목
    SELECT B WHERE NOT B CONTAINS '재무제표'  -- '재무제표'가 포함되지 않은 항목
    

    LIKE: 와일드카드(%) 패턴 매칭

    %는 “아무 글자나 0개 이상”이라는 의미다. 엑셀의 *와 같은 역할이다.

    SELECT B WHERE B LIKE '%월별%'         -- '월별'이 어디든 포함
    SELECT B WHERE B LIKE 'DB%'            -- 'DB'로 시작
    SELECT B WHERE B LIKE '%월별'          -- '월별'로 끝남
    SELECT B WHERE NOT B LIKE '2022년%'    -- '2022년'으로 시작하지 않는 것
    

    starts with / ends with: 직관적인 표현

    LIKE 대신 좀 더 읽기 쉬운 표현도 있다.

    SELECT B WHERE B starts with 'DB'
    SELECT B WHERE B ends with '월별'
    SELECT B WHERE NOT B starts with '2022년'
    

    ⭐ MATCHES: 정규표현식으로 초정밀 필터링

    MATCHES는 QUERY 함수의 최종 병기다. 엑셀에서는 VBA를 동원해야 가능하던 정규표현식 필터링을 수식 한 줄로 할 수 있다.

    기본 사용법 — 여러 값 중 하나와 일치하는 항목 찾기

    -- 김과장, 이대리, 박사원의 데이터만 가져오기
    SELECT Col1, Col5 WHERE Col1 MATCHES '김과장|이대리|박사원'
    

    |는 “또는(OR)”을 의미한다. 이게 얼마나 강력하냐면, 엑셀에서 다중 필터 체크박스를 하나하나 클릭하던 그 작업이 파이프(|) 하나로 끝난다.

    정확히 일치 vs 포함 — 이 차이를 반드시 구분하자

    실무에서 가장 많이 실수하는 부분이다.

    목적패턴예시설명
    정확히 일치'^단어$'MATCHES '^사과$'“사과”만 찾음. “빨간 사과”는 안 걸림
    포함'.*단어.*'MATCHES '.*사과.*'“사과”가 어디에 들어있든 다 찾음
    ~로 시작'^단어.*'MATCHES '^서울.*'“서울”로 시작하는 모든 것
    ~로 끝남'.*단어$'MATCHES '.*동$'“동”으로 끝나는 모든 것

    실무에서 자주 쓰는 정규표현식 패턴 총정리

    필터링 유형패턴예시설명
    특정 단어로 시작^단어.*'^서울.*'서울특별시, 서울역 등
    특정 단어로 끝남.*단어$'.*동$'명동, 여의도동 등
    정확히 일치^단어$'^사과$'오직 “사과”만
    여러 단어 중 하나로 시작^(A|B).*'^(김|이|박).*'김철수, 이영희, 박사원 등
    특정 글자 수만^.{숫자}$'^.{3}$'정확히 3글자 (바나나, 토마토)
    숫자 포함 항목.*[0-9].*'.*[0-9].*'아이폰15, 갤럭시S24 등
    한글로만 된 항목^[가-힣]+$'^[가-힣]+$'숫자·영어·기호 없이 한글만
    특정 단어 제외NOT MATCHESNOT ... MATCHES '.*품절.*'“품절” 포함 행 제외

    💡 정규표현식 기호 해독기 — 이 5개만 알면 된다

    기호의미
    ^문장의 시작
    $문장의
    .아무 문자 1개 (줄바꿈 제외)
    *바로 앞 문자가 0개 이상 반복
    |또는 (OR)

    이 다섯 개를 조합한 '.*( 노란|빨강|파란).*'는 **”앞뒤로 무슨 글자가 있든 ‘노란’이나 ‘빨강’이나 ‘파란’이 들어간 모든 텍스트를 찾아라”**라는 뜻이 된다.

    ⚠️ 주의: MATCHES 조건의 텍스트는 반드시 **작은따옴표(‘ ‘)**로 감싸야 한다.


    📊 3단계. 정렬과 그룹화 — ORDER BY, GROUP BY

    ORDER BY: 결과 정렬

    SELECT * ORDER BY C ASC       -- C열 기준 오름차순 (기본값)
    SELECT * ORDER BY C DESC      -- C열 기준 내림차순
    

    GROUP BY: 그룹별 집계

    분류별 합계, 개수 등을 구할 때 쓴다. 엑셀의 피벗테이블을 수식 한 줄로 만드는 셈이다.

    -- 분류별 항목 수와 금액 합계
    =QUERY(B50:F57, "SELECT C, COUNT(B), SUM(F) GROUP BY C", 1)
    

    여러 열의 합계를 하나로 묶기 — 예를 들어 1월~3월 합계를 “1분기”로 묶고 싶다면:

    =QUERY(B92:G99, "SELECT C, SUM(D)+SUM(E)+SUM(F) WHERE B IS NOT NULL GROUP BY C LABEL SUM(D)+SUM(E)+SUM(F) '1분기'", 1)
    

    💡 LABEL은 결과 헤더의 이름을 바꿔주는 명령어다. 2개 이상 열의 레이블을 바꾸려면 콤마(,)로 구분한다.


    🔗 4단계. 다른 파일 데이터 가져오기 — IMPORTRANGE + QUERY 콤보

    여기서부터가 구글 스프레드시트의 엑셀 대비 압도적 장점이다. 다른 파일에 있는 데이터를 실시간으로 참조해서 원하는 조건으로 가공할 수 있다.

    IMPORTRANGE 기본 사용법

    =IMPORTRANGE("구글시트URL", "시트명!셀범위")
    

    예시:

    =IMPORTRANGE("https://docs.google.com/spreadsheets/d/abc123...", "BS!A1:E")
    

    IMPORTRANGE + QUERY 콤보

    다른 파일에서 데이터를 가져오면서 동시에 조건 필터링까지 하는 조합이다. 이때 열 지정은 반드시 Col1, Col2, Col3 방식을 써야 한다.

    -- 다른 파일에서 '외환차손' 데이터만 가져오기
    =QUERY(IMPORTRANGE(C10, D10), "SELECT Col1,Col2,Col3,Col4,Col5 WHERE Col2='외환차손' AND Col3 = DATE '2022-01-18'", 1)
    

    헤더 없이 데이터만 가져오기

    쿼리문의 마지막 인수를 0으로 설정하면 헤더를 제외하고 데이터만 가져온다.

    =QUERY(IMPORTRANGE(C11, D11), "SELECT Col1,Col2,Col3,Col4,Col5 WHERE Col2='잡손실'", 0)
    

    2개 이상의 파일 데이터를 합쳐서 조회하기

    중괄호 { }와 세미콜론 ;으로 여러 IMPORTRANGE를 하나로 합칠 수 있다.

    =QUERY(
      {IMPORTRANGE(C10, D10); IMPORTRANGE(C11, D11)},
      "SELECT Col1,Col2,Col3,Col4,Col6,Col8,Col9 WHERE Col2='잡손실' AND Col4<>'[ 전 월 이 월 ]'",
      1
    )
    

    세미콜론(;)은 세로로 합치는 것이다. 즉, 두 파일의 데이터를 위아래로 쌓는다.


    📐 5단계. QUERY로 피벗테이블 만들기 — PIVOT

    엑셀에서 피벗테이블 만들 때 마우스로 필드를 드래그하고, 값 영역 설정하고, 필터 걸고… 이 작업을 수식 한 줄로 끝내는 방법이다.

    GROUP BY로 간단한 피벗 구현

    -- 분류별, 구분별 금액 합계
    =QUERY(B50:F57, "SELECT C, B, SUM(F) GROUP BY C, B", 1)
    

    PIVOT으로 행/열 전환 피벗 구현

    PIVOT을 쓰면 특정 열의 값을 열 헤더로 변환할 수 있다. 엑셀 피벗테이블의 “열 영역”에 해당한다.

    -- 단가별로 열을 나눠서 피벗테이블 생성
    =QUERY(B50:F57, "SELECT C, B, SUM(F) GROUP BY C, B PIVOT E", 1)
    

    행과 열을 뒤집고 싶으면 TRANSPOSE를 감싸면 된다.

    =TRANSPOSE(QUERY(B50:F57, "SELECT E, SUM(F) GROUP BY E PIVOT C, B", 1))
    

    💡 참고: QUERY 피벗으로는 “1분기 합산”처럼 여러 열을 묶어서 계산하는 것이 안 된다. 이런 경우에는 위에서 본 SUM(D)+SUM(E)+SUM(F) 방식을 쓰자.


    🎨 6단계. 마무리 다듬기 — LABEL, FORMAT, OFFSET

    LABEL: 결과 헤더 이름 바꾸기

    LABEL Col14 '현재 수량'
    

    여러 열의 레이블을 한 번에 바꾸려면 콤마로 구분한다.

    LABEL '아마란스 재고' '출처', Col32 '재고 수량'
    

    FORMAT: 날짜·숫자 표시 형식 지정

    FORMAT Col2 'yy.MM.dd'
    

    OFFSET: 첫 N줄 건너뛰기

    헤더 다음의 특정 행을 건너뛰고 싶을 때 사용한다.

    OFFSET 1    -- 첫 번째 데이터 행 건너뛰기
    

    실전 조합 예시:

    =QUERY(
      'DB창고별재고현황'!$A:$AG,
      "SELECT Col2, Col3, Col14
       WHERE Col2 IS NOT NULL
       ORDER BY Col14 DESC
       LABEL Col14 '현재 수량'
       FORMAT Col2 'yy.MM.dd'
       OFFSET 1",
      1
    )
    

    🧩 7단계. 실전 응용 — 배열 수식과 조합하기

    접두사 붙여서 가져오기

    배열 수식과 QUERY를 결합하면 데이터를 가공하면서 가져올 수 있다.

    원본 데이터가 이런 구조라고 하자:

    구분금액
    감자5,000
    사과3,000

    아래 수식을 쓰면 구분 앞에 “🔹썩은 : “이라는 접두사를 붙여서 가져올 수 있다.

    =ARRAYFORMULA(CONCAT("🔹썩은 : ",QUERY($J$70:$M$73,"SELECT K WHERE L > 2000",0)))

    텍스트로 저장된 날짜를 변환하기

    FORMAT 명령어를 활용하면 QUERY 결과의 날짜 표시 형식을 원하는 대로 바꿀 수 있다.

    SELECT Col2, Col3, Col14 WHERE Col2 IS NOT NULL ORDER BY Col14 DESC LABEL Col14 '현재 수량' FORMAT Col2 'yy.MM.dd' OFFSET 1


    ✅ 최종 정리: QUERY 쿼리문 핵심 명령어 치트시트

    명령어역할사용 예시
    SELECT열 선택SELECT A, B, C
    WHERE조건 필터링WHERE B = '사과'
    ORDER BY정렬ORDER BY C DESC
    GROUP BY그룹화GROUP BY B
    PIVOT열 헤더 전환PIVOT E
    LABEL헤더명 변경LABEL Col3 '합계'
    FORMAT표시 형식FORMAT Col2 'yy.MM.dd'
    LIMIT결과 행 수 제한LIMIT 10
    OFFSET첫 N행 건너뛰기OFFSET 1
    CONTAINS텍스트 포함 여부WHERE B CONTAINS '월별'
    LIKE와일드카드 매칭WHERE B LIKE '%월별%'
    MATCHES정규표현식 매칭WHERE B MATCHES '사과|배|귤'
    IS NOT NULL빈 값 제외WHERE C IS NOT NULL
    SUM / COUNT / AVG집계 함수SELECT SUM(E)

    마치며

    QUERY 함수를 처음 접하면 SQL 같은 문법이 낯설 수 있다. 하지만 SELECT, WHERE, ORDER BY 이 세 가지만 익히면 실무 보고서의 80%는 커버된다.

    거기에 MATCHES로 정규표현식 필터링, IMPORTRANGE로 다른 파일 연동, PIVOT으로 피벗테이블까지 더하면, 지금까지 엑셀에서 몇 시간씩 걸리던 작업이 수식 한 줄로 끝나는 경험을 하게 될 것이다.

    칼퇴의 비결은 결국 도구를 아는 것이다. 오늘부터 QUERY 함수를 하나씩 써 보자. 한 번 맛보면 VLOOKUP으로 돌아가지 못한다.

  • 구글 스프레드시트에서 AI함수 사용하기

    구글 스프레드시트에서 AI함수 사용하기

    나는 구글 스프레드시트를 좀 쓰는 사람이다.

    2025년 10월부터 구글 스프레드시트의 AI함수를 한글로도 사용할 수 있게 되어 활용 방안을 공유한다.

    개인 계정도 Google Labs에 가입하면 사용할 수 있다.
    https://workspace.google.com/labs-sign-up

    기본적인 사용법은 간단하다.

    =AI("프롬프트", [참조할 셀/범위])
    구성 요소설명예시
    “프롬프트”AI에게 내릴 명령“내용을 한 문장으로 요약하세요.”
    [참조할 셀/범위]AI가 분석할 데이터가 있는 셀이나 범위. (생략 가능)A2 또는 B5:B10


    AI함수 활용 예제


    스프레드시트 안에서 자연어를 입력하면 AI가 바로 결과물을 만들어 줘서 챗GPT, 클로드, 제미나이 등에 자료를 업로드하고 결과물을 복사해서 붙여넣는 작업이 없어지기 때문에 편리하다.

    ✅ 시트에 결과물을 바로 생성하면 좋은 예제는 아래와 같다.

    =AI(“이 문장을 자연스럽게 영어로 번역해줘”, A2)

    =AI(“오늘 점심 메뉴 추천 3개”)

    =AI(“이 데이터를 요약해줘”, A1:A50)

    =AI(“다음 리뷰를 읽고, 한국어로 정중한 고객 서비스 응답을 생성하세요. 고객 리뷰에 대한 필요한 조치를 ‘감사 댓글’, ‘담당자 배정’, ‘관찰 대상’으로 분류하고 분류 결과를 답변 첫 줄에 표시하세요. 분류에 맞는 적절한 응답을 아랫 줄에 작성해주세요.”,D22)

    → 담당자 배정
    고객님, 저희 제품 사용에 불편을 드려 정말 죄송합니다. 제품이 설명과 다르고 사용한 지 하루 만에 고장 났다는 점을 매우 심각하게 받아들이고 있습니다. 환불 요청을 신속하게 처리해 드리기 위해 담당 부서에 바로 내용을 전달하겠습니다. 빠른 시일 내에 담당자가 고객님께 연락드려 환불 절차를 안내해 드릴 수 있도록 조치하겠습니다. 다시 한번 불편을 드린 점 사과드립니다.

    =AI("매출 추세를 한 줄로 요약해줘", B2:B20)

    → “지난주 대비 12% 상승 추세”

    =AI("리뷰 요약 10단어 이내로", C2)

    → “배송 빠르고 품질 만족”

    자세한 예제는 아래 구글 스프레드시트를 참조하면 된다.

    https://docs.google.com/spreadsheets/d/1OE6JCMhzsOSB0hjHBLrEWp_TU7bNWCAV5xyZSPD6Sjw/edit?gid=1271097780#gid=1271097780


    참고 사항


    구글에서 제공하는 도움말

  • 구글 스프레드시트에서 다른 파일 참조하기

    구글 스프레드시트에서 다른 파일 참조하기

    나는 재무팀장이다.

    새로 입사한 회사에서 흥미로운 광경을 목격했다.
    창고 별로 수불부 파일이 있었는데, 각각의 파일에 원가표를 복사해 넣고 있었다.

    “회사 기준 정보는 한 파일에 모아 두고, 불러다 사용하면 어떨까요?”
    “아, 구글 시트는 그게 안되는 걸로 알고 있어요.”

    아익후..


    IMPORTRANGE 함수 하나면 된다.


    구글 스프레드시트에는 IMPORTRANGE라는 함수가 있다.
    다른 스프레드시트 파일의 데이터를 실시간으로 가져올 수 있는 기능이다.

    사용법은 간단하다.
    =IMPORTRANGE(“스프레드시트URL”, “시트명!범위”)


    이런 이점이 있다.
    – 기준정보 파일 하나만 관리하면 됨
    – 수정사항이 자동으로 모든 파일에 반영됨
    – 파일 복사할 필요 없음
    – 버전 관리 걱정도 사라짐
    – 여러 파일을 통합하기 쉽다.


    믿지 않는 눈치다. 회의실에서 시연해줬다.


    ✅교육 전에 예시에 대한 상황을 설명했다.

    영업 지점별 매출 내역이 각각 다른 파일에 있을 때 통합하기
    → 강남점과 압구정점 매출을 “취합”이라는 파일로 통합한다.

    1️⃣ 데이터를 가져올 구글 시트 정보를 정리한다.

    • 필요한 정보
    =IMPORTRANGE(“스프레드시트URL”, “시트명!범위”)

    • 확인한 정보

    스프레드시트URL : https://docs.google.com/spreadsheets/d/1dwldD9FbgqylQTi1Gf9YBdqTtIN7o-lENrjCT6lGAvg/edit?gid=0#gid=0
    
    시트명!범위 : 강남점!B5:G15

    2️⃣ 취합할 구글 시트를 새로 만들고, 아래와 같이 수식을 입력한다.

    =IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dwldD9FbgqylQTi1Gf9YBdqTtIN7o-lENrjCT6lGAvg/edit?gid=0#gid=0","강남점!B5:G15")

    수식을 입력하면, #REF! 에러가 생긴다.
    원래 그런거다. 쫄지 않아도 된다.

    수식이 입력된 셀을 선택하면, 아래와 같이 엑세스를 허용하라는 메시지가 나온다. “엑세스 허용”을 클릭한다.

    데이터가 잘 불러와 지는 것을 확인할 수 있다.

    같은 요령으로 압구정점 매출도 아래 수식으로 가져올 수 있다.

    =IMPORTRANGE("https://docs.google.com/spreadsheets/d/1eo1yddkAyc7Zm5CckQhd9RyZW_4K3qmTtmo4RA18hc0/edit?gid=1853046104#gid=1853046104","압구정점!B5:G15")


    강남점과 압구정점 매출 통합하기


    배열 수식으로 2개의 배열을 묶어주면 된다.

    🔹데이터를 아래쪽으로 쌓는 방식 → 배열 사이에 “;”를 넣으면 행으로 추가된다.
    ={ 배열1; 배열2 }

    🔹데이터를 오른쪽으로 붙이는 방식 → “배열 사이에 ,”를 넣으면 열이 추가된다.
    ={ 배열1, 배열2 }

    강남점과 압구정점 매출이 같은 열구조이므로, 아래와 같이 아래쪽 즉 행 방향으로 쌓는 방식을 사용하면 된다.

    ={ IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dwldD9FbgqylQTi1Gf9YBdqTtIN7o-lENrjCT6lGAvg/","강남점!B5:G15");
    IMPORTRANGE("https://docs.google.com/spreadsheets/d/1eo1yddkAyc7Zm5CckQhd9RyZW_4K3qmTtmo4RA18hc0/","압구정점!B6:G15") }

    압구정점은 제목 행을 제외하기 위해서 B5가 아닌 B6부터 가져왔다.

    수식이 길면, URL에서 구글 스프레드 시트 ID만 표시해도 된다.

    ={ IMPORTRANGE("1dwldD9FbgqylQTi1Gf9YBdqTtIN7o-lENrjCT6lGAvg","강남점!B5:G15");
    IMPORTRANGE("1eo1yddkAyc7Zm5CckQhd9RyZW_4K3qmTtmo4RA18hc0","압구정점!B6:G15") }

    매장이 늘어나도 같은 방식으로 계속 추가 가능!!


    심화학습 단계다. 초보자는 안봐도 된다.


    1️⃣ 구글 시트 URL대신 칩을 사용해도 된다.

    아래 이미지처럼, 구글 시트 URL위치에 칩이 들어가 있는 셀 주소를 넣으면 된다.

    ✅ 구글 시트를 복사한 URL을 입력한 셀을 더블 클릭하면 칩으로 변환할 수 있는 메뉴가 팝업는데, “칩”을 클릭하면 변환할 수 있다.

    2️⃣ 가져올 데이터 소스가 “표” 객체로 되어 있다면 시트명과 영역으로 지정하지 않아도 표 이름 지정만으로 쉽게 데이터를 가져올 수 있다.

    또한 데이터 범위가 확장되어도 표 영역이 자동으로 확장되므로, 셀 주소를 변경하지 않아도 된다.

    강남점 매출은 t강남매출이라는 표로 입력했고, 압구정점 매출은 t압구정매출이라는 표로 만들었다. 강남매출은 제목줄이 필요해서 t강남매출[#ALL]로 표시했고, 압구정매출은 데이터만 필요해서 표 이름만 표기를 했다.

    ✅ 표 영역을 참조하는 방식은 MS 도움말을 참조하자.

    https://support.google.com/docs/answer/15637642?sjid=2692537847315675731-NC

    ✅ “표” 객체로 만드는 방법은 아래와 같다.

    변환할 영역을 선택하고, 메뉴에서 “서식” > “표로 변환”을 클릭하면 된다.


    다음 시간에는 QUERY함수를 사용하여 필요한 데이터만 골라오는 방법에 대해서 알아 보자.

    다음 시간이 기대된다면 댓글을 달아서 푸쉬하면 좀 더 빨리 볼 수 있다.


  • 메일에 첨부된 엑셀 파일 구글 스프레드시트로 변환하기

    메일에 첨부된 엑셀 파일 구글 스프레드시트로 변환하기

    나는 경영전략실장이다.
    매일 아침 현재 재고 보유 금액을 누군가가 내 책상에 올려놨음 좋겠다.

    애들한테 시킬까했는데, 그러면 애들이 나를 싫어할 것 같아서.. 자동으로 하는 방법을 찾아봤다.

    다행히 물류 업체 빵토스가 매일 아침 8시에 재고 현황을 엑셀 파일로 보내주기로 했다.

    제미나이에게 아래처럼 물어보면, 필요한 코드를 바로 만들어 준다.
    코드를 복사해서 앱스 스크립트에 붙여 넣기만 하면 된다.
    (구글 앱스 스크립트 작성은 챗GPT보다 제미나이가 조금 낫다.)

    넌 구글 스프레드시트 앱스 스크립트 개발 전문가야.
    아래 조건에 맞는 코드를 작성해 줘.
    코드는 최대한 간결하게 작성해 줘.
    코드가 완성되면 오류가 있는지 다시 한번 살펴보고 오류가 없는 코드를 제시해 줘.
    
    - * 목적
    매일 아침 8시 10분에 지메일에 수신된 이메일에서 물류회사에서 보낸 메일을 검색해서 첨부된 엑셀 파일을 구글 스프레드 시트 데이터로 변환하는 작업
    - * 찾을 메일
    1. 메일 제목에 "일일 재고 현황"이 포함 되어 있음
    2. 첨부파일이 있음
    
    - * 엑셀 파일 변환 방법
    1. Drive API를 사용할 것
    2. 임시 구글 스프레드시트 파일을 만들고, 데이터를 가져온 다음에는 임시파일을 삭제할 것
    - * 저장할 스프레드시트 정보
    1. 타겟 구글 스프레드 시트 : https://docs.google.com/spreadsheets/d/1NnKb2U10vIjttlTuyD82bdted2IOhG_JcmmFBbdu___/
    2. 구글 스프레드시트 시트명 : 현재재고


    제미나이가 아래와 같이 답변해 줬다.



    아래부터는 위에서 복사한 코드를 사용해서 사용하는 방법이다.

    천천히 따라하다 보면 어느 순간.. 오~~하는 순간이 온다.


    1️⃣ 구글 시트 메뉴에서 “확장 프로그램 ” > “Apps Script”를 선택한다.

    2️⃣ 샘플로 들어가 있는 코드는 제거해버리고, 위에서 복사한 코드를 붙여 넣은 다음 3가지 정보를 내 환경에 맞게 수정한다.

    SPREADSHEET_ID : 구글 시트 URL의 아이디 부분

    SHEET_NAME : 저장할 구글 시트의 시트명

    SEARCH_QUERY : 검색할 메일 제목 설정

    3️⃣ 위 이미지를 보면, 화면 왼쪽 패널에 “서비스” 옆의 +를 누르면 Drive API를 추가할 수 있는 창이 뜬다. 선택하고 “추가”버튼을 누른다.

    4️⃣ 저장 버튼을 눌러 저장한다. 그리고 실행 버튼을 누른다.

    5️⃣ 처음 실행할 때만 승인을 받으라고 뜬다.
    원래 뜨는 것이니 쫄지 않아도 된다.

    권한검토 → 계정 선택 → 경고창이 뜨는데.. 왼쪽 아래 “고급”을 눌러서 프로젝트로 이동을 누른다. → 엑세스 권한을 모두 부여하고 “계속”을 클릭!

    6️⃣ 구글 시트에 정보가 잘 들어가는지 확인한다. 끝!



    매일 8시에 자동으로 실행되게 설정해 보자.


    ⏹️ 자동 실행 트리거 설정

    왼쪽 패널의 시계모양의 트리거 아이콘을 클릭한다.

    오른쪽 아래에 있는 “트리거 추가”버튼을 눌러서 트리거를 추가한다.

    시간 기반 → 일단위 → 오전8시~9시사이로 설정하고 저장한다.

    이제 매일 아침 8시에 물류 회사가 재고 현황을 엑셀로 보내주면, 첨부된 엑셀을 구글 시트로 저장해 준다.


    작업 결과를 메일로 확인해보고 싶다면, 제미나이에게 이렇게 요청하면 코드를 업데이트해준다.

    작업이 완료되면 작업 완료 메일을 아래와 같이 보내주는 코드를 추가해 줘.
    # 메일 내용 :
    작업 성공 여부, 수신된 이메일 제목, 이메일 받은 시간, 데이터 저장된 구글 시트의 url
    # 메일 수신인 :
    abyul@naver.com, joowonoh@gmail.com


    메일을 보내는 코드를 추가하지 않더라도, 실행된 결과는 화면 왼쪽 패널의 실행 아이콘을 클릭하면 볼 수 있다.


    다음 시간에는 구글 시트로 변환한 재고 자료로 리포트를 만들어서 메일로 보고하는 것까지 해보자.

    다음 시간이 기대된다면 댓글을 달아서 푸쉬하면 좀 더 빨리 볼 수 있다.