블로그

  • 메일 속 엑셀, 자동으로 스프레드시트에 옮기는 법

    메일 속 엑셀, 자동으로 스프레드시트에 옮기는 법

    매일 아침 엑셀 다운받기, 이제 그만 🙅‍♂️

    경영전략실장인 나는 매일 재고 보유 금액을 제품 유형별로 확인해야 해요. 물류 회사에 “현재 재고 데이터 좀 주세요”라고 했더니, 매일 아침 8시에 엑셀 파일을 이메일로 보내주겠다고 하더라고요.

    그런데 문제가 있었죠.

    매일 아침마다 메일을 열고 → 엑셀 다운받고 → 편집해서 → 보고서 만들기… 이 루틴이 너무 귀찮은 거예요. 😫

    “팀원한테 시킬까?” 생각했는데, 팀원들이 날 싫어할 것 같더라고요. (당연하죠)

    그래서 찾았어요. 자동으로 저장하는 방법을요.


    이럴 때 필요한 게 젬미니예요 ✨

    구글 앱스 스크립트 코딩은 ChatGPT보다 **젬미니(Gemini)**가 훨씬 나아요. 실제로 써보면 확실히 체감돼요.

    젬미니한테 이렇게 물어보면 돼요:


    💬 젬미니 프롬프트 (그대로 복사해서 쓰세요)

    넌 구글 스프레드시트 앱스 스크립트 개발 전문가야.
    아래 조건에 맞는 코드를 작성해 줘.
    코드는 최대한 간결하게 작성해 줘.
    코드가 완성되면 오류가 있는지 다시 한번 살펴보고 오류가 없는 코드를 제시해 줘.
    
    * 목적
    매일 아침 8시 10분에 지메일에 수신된 이메일에서 [회사명]에서 보낸 메일을 검색해서 
    첨부된 엑셀 파일을 구글 스프레드시트 데이터로 변환하는 작업
    
    * 찾을 메일
    1. 메일 제목에 "[검색할 제목 키워드]"이 포함되어 있음
    2. 보낸 사람 이메일 도메인이 "@[도메인].com"임
    3. 첨부파일이 있음
    4. 최근 7일에 수신된 메일 중에 가장 최신 메일이어야 함
    
    * 엑셀 파일 변환 방법
    1. Drive API를 사용할 것
    2. 임시 구글 스프레드시트 파일을 만들고, 데이터를 가져온 다음에는 임시파일을 삭제할 것
    
    * 저장할 스프레드시트 정보
    1. 타겟 구글 스프레드시트: [여기에 내 구글 시트 URL 붙여넣기]
    2. 구글 스프레드시트 시트명: [시트 이름]

    : 대괄호 [ ] 안의 내용만 내 상황에 맞게 바꿔서 입력하면 돼요!


    젬미니가 준 코드, 이렇게 설정하세요 ⚙️

    젬미니가 코드를 뚝딱 만들어주면, 이제 설정만 하면 끝이에요.

    1단계: 구글 시트 열기

    데이터를 넣을 구글 스프레드시트를 미리 하나 만들어 두세요. 새로 만들어도 되고, 기존 시트를 써도 OK!

    2단계: 앱스 스크립트 열기

    구글 시트 상단 메뉴에서:
    확장 프로그램 → Apps Script

    3단계: 코드 붙여넣기

    • 기존에 있는 코드는 전부 삭제하고
    • 젬미니가 준 코드를 Ctrl+V로 붙여넣기
    • 저장 버튼 클릭 💾

    4단계: Drive API 추가 (중요! 🚨)

    이 코드는 Drive API를 사용하기 때문에 서비스를 추가해 줘야 해요.

    방법은 간단해요:

    1. 왼쪽 메뉴에서 서비스(Services)+ 버튼 클릭
    2. Drive API 검색 후 선택
    3. 추가 버튼 클릭

    💡 꿀팁: Drive API 추가가 제대로 안 되면, 한 번 삭제했다가 다시 추가해 보세요. 저는 2번 추가했다가 모두 삭제하고 다시 추가하니 작동했어요.


    실행 권한 설정하기 🔐

    이제 실행 버튼을 누르면 “승인 필요” 창이 떠요. 놀라지 마세요, 정상이에요!

    권한 승인 순서

    1. 권한 검토 클릭
    2. 실행할 구글 계정 선택
    3. “안전하지 않은 앱”이라는 무서운(?) 경고가 뜨면 → 고급 클릭
    4. 안전하지 않음(으)로 이동 클릭 (걱정 마세요, 내가 만든 스크립트니까요)
    5. 모든 권한 체크 후 → 계속 버튼

    구글이 좀 과하게 협박하는데, 내가 직접 만든 코드라 전혀 문제없어요. 😎


    혹시 오류가 뜨나요? 🔧

    실행했는데 오류가 발생한다면, 대부분 Drive API가 제대로 설치되지 않은 경우예요.

    해결 방법:

    • Drive API를 삭제하고 다시 추가
    • 2~3번 반복해도 안 되면, 모두 삭제 후 재추가

    저도 처음에 이것 때문에 헤맸는데, 다시 추가하니 바로 해결됐어요!


    이제 자동화 완료! 🎉

    설정이 끝났으면 이제 매일 아침 자동으로 작동해요.

    • 메일이 오면 자동으로 엑셀 파일을 구글 시트로 변환
    • 수동으로 다운받을 필요 없음
    • 보고서 작성 시간 30분 → 5분으로 단축

    혹시 수동으로 한 번 실행해보고 싶다면, 앱스 스크립트에서 실행 버튼만 누르면 돼요.


    마무리하며 💭

    매일 반복되는 단순 작업, 이제 AI와 자동화로 해결하세요.

    이 방법은 재고 데이터 말고도:

    • 일일 매출 보고서
    • 광고 성과 리포트
    • 거래처별 주문 현황

    같은 엑셀 메일에도 똑같이 적용할 수 있어요.

    한 번 설정해 두면 평생 시간을 절약할 수 있어요. 시도해 보시고, 궁금한 점이 있으면 댓글로 물어보세요! 😊


    📌 이 글이 도움이 되었다면 공유 부탁드려요!

  • 메일 속 엑셀, 자동으로 스프레드시트에 옮기는 법

    메일 속 엑셀, 자동으로 스프레드시트에 옮기는 법

    반복 업무는 자동화의 시작점이다 🎯

    업무 자동화 컨설팅을 하다 보면 가장 많이 듣는 고민이 있습니다.

    “매일 아침 똑같은 엑셀 다운받아서 정리하는데, 이거 자동화 안 될까요?”

    전형적인 자동화 적용 케이스죠. 재고 현황, 매출 데이터, 광고 성과 리포트… 협력사나 외부 시스템에서 매일 정해진 시간에 엑셀을 메일로 보내주는 경우가 많은데, 이걸 매번 수동으로 처리하는 건 시간 낭비입니다.

    오늘은 Gmail + Google Apps Script를 활용해서 이 프로세스를 완전 자동화하는 방법을 알려드리겠습니다.


    왜 ChatGPT가 아닌 Gemini인가 🤖

    구글 앱스 스크립트 자동화를 구현할 때는 Gemini를 쓰는 게 압도적으로 유리합니다.

    이유는 간단합니다:

    • Google Workspace API에 대한 이해도가 높음
    • Apps Script 환경의 제약사항을 정확히 파악
    • Drive API, Gmail API 연동 코드 정확도 차이

    실제로 같은 프롬프트를 ChatGPT와 Gemini에 넣어보면, Gemini가 생성한 코드가 첫 실행 성공률이 월등히 높습니다.


    Gemini 프롬프트 엔지니어링 💬

    자동화 구현의 핵심은 명확한 요구사항 정의입니다. 아래 프롬프트를 상황에 맞게 수정해서 사용하세요.

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

    프롬프트 작성 팁:

    • 대괄호 [ ] 부분만 실제 값으로 치환
    • 메일 검색 조건은 구체적일수록 좋음
    • 첨부파일이 여러 개면 우선순위 명시

    구현 단계별 가이드 ⚙️

    Step 1: 환경 준비

    1. 데이터를 저장할 Google Sheets 생성
    2. 해당 시트에서 확장 프로그램 → Apps Script 실행
    3. 기본 코드 전체 삭제

    Step 2: Drive API 활성화

    Apps Script는 기본적으로 Gmail, Sheets API만 활성화되어 있습니다. Excel 파일을 Google Sheets로 변환하려면 Drive API가 필수입니다.

    활성화 방법:

    1. 좌측 메뉴 서비스(Services) 클릭
    2. + 추가 버튼
    3. Drive API 검색 및 추가

    💡 트러블슈팅: Drive API 추가 후에도 오류가 발생하면, API를 삭제했다가 재추가해 보세요. Google의 권한 캐싱 이슈로 첫 번째 추가가 제대로 적용 안 되는 경우가 있습니다.

    Step 3: 코드 배포

    1. Gemini가 생성한 코드를 Ctrl+V로 붙여넣기
    2. 프로젝트 저장 (Ctrl+S)
    3. 함수 선택 후 실행 버튼 클릭

    Step 4: 권한 승인

    처음 실행 시 Google OAuth 인증 플로우가 진행됩니다.

    승인 프로세스:

    1. “승인 필요” → 권한 검토
    2. 계정 선택
    3. “안전하지 않은 앱” 경고 → 고급 → 이동
    4. 요청된 권한 확인 후 허용

    Google이 자체 개발한 스크립트에도 이 경고를 띄우는데, 본인이 작성한 코드니까 문제없습니다.


    자동 실행 트리거 설정 ⏰

    수동 실행으로 정상 작동을 확인했다면, 이제 자동화 트리거를 설정해야 합니다.

    설정 방법:

    1. 좌측 메뉴 트리거(Triggers) 클릭
    2. + 트리거 추가
    3. 함수 선택: importInventoryDataUsingDriveConvert
    4. 이벤트 소스: 시간 기반
    5. 시간 간격: 일 타이머 → 오전 8~9시

    운영 팁:

    • 메일 발송 시간보다 10~15분 여유 두기
    • 실패 알림 이메일 수신 설정 권장
    • 초기 1주일은 수동 검증 병행

    실무 적용 시 체크리스트 ✅

    데이터 검증

    • 원본 엑셀과 변환된 시트의 행/열 수 일치 확인
    • 숫자/날짜 포맷 변환 오류 체크
    • 특수문자나 한글 깨짐 여부 확인

    에러 핸들링

    • 메일이 안 올 경우 대응 로직
    • 첨부파일이 없는 경우 처리
    • Drive API 호출 실패 시 재시도 로직

    보안

    • 스프레드시트 공유 권한 최소화
    • Apps Script 코드 접근 권한 제한
    • 민감 정보(ID, 도메인) 하드코딩 지양

    확장 가능한 자동화 시나리오 🚀

    이 기본 구조를 응용하면 다양한 업무에 적용할 수 있습니다:

    재무/회계팀

    • 일일 매출 데이터 자동 집계
    • 세금계산서 발행 내역 통합
    • 법인카드 사용 내역 자동 분류

    마케팅팀

    • 광고 플랫폼별 성과 리포트 통합
    • SNS 인사이트 데이터 자동 수집
    • 경쟁사 가격 모니터링 데이터 정리

    영업팀

    • 거래처별 주문 현황 실시간 업데이트
    • 재고 부족 알림 자동화
    • 견적서 발송 이력 관리

    자동화의 본질은 시간 확보다 ⏱️

    단순 반복 업무 30분을 자동화하면, 연간 120시간을 확보할 수 있습니다.

    이 시간으로 더 중요한 일에 집중할 수 있죠. 데이터 분석, 전략 수립, 새로운 프로젝트… 자동화는 단순히 편해지는 게 아니라 업무의 질을 높이는 투자입니다.

    처음엔 설정이 번거로워 보일 수 있는데, 한 번 구축해 두면 계속 재사용할 수 있습니다. 궁금한 점 있으면 댓글 남겨주세요.


    📌 실무에 바로 적용해 보고 피드백 공유해 주시면 감사하겠습니다

  • Hello world!

    Welcome to WordPress. This is your first post. Edit or delete it, then start writing!