엑셀 파일 전송은 그만! 파이썬으로 구글 스프레드시트 실시간 업데이트하기

  지금까지 우리는 파이썬으로 내 컴퓨터(로컬)에 있는 엑셀 파일을 읽고 쓰는 방법을 배웠습니다. 하지만 실무에서는 치명적인 단점이 하나 있습니다. 완성된 .xlsx 파일을 매번 팀원들에게 이메일이나 메신저로 '전송'해야 한다는 점입니다. 만약 데이터가 수정되면 "최종보고서_진짜최종_v2.xlsx" 같은 파일들이 무한히 증식하게 되죠. 이 문제를 완벽하게 해결해 주는 것이 바로 클라우드 기반의 구글 스프레드시트(Google Sheets) 입니다. 링크 하나만 공유하면 전 팀원이 항상 최신 데이터를 볼 수 있습니다. 그렇다면 파이썬으로 내가 만든 피벗 테이블이나 크롤링한 데이터를 구글 스프레드시트에 알아서 입력하게 만들 수는 없을까요? '구글 API' 를 사용하면 가능합니다! 1. 파이썬에게 구글 출입증(JSON 키) 쥐여주기 파이썬이 내 구글 계정에 함부로 접속해서 시트를 건드리면 안 되기 때문에, 구글에서 정식으로 '서비스 계정(가상의 로봇 계정)' 을 만들고 출입증을 발급받아야 합니다. 구글 클라우드 콘솔 에 접속하여 새 프로젝트를 만듭니다. 'API 및 서비스'에서 Google Drive API 와 Google Sheets API 를 찾아 '사용 버튼'을 눌러 활성화합니다. '사용자 인증 정보' 메뉴에서 '서비스 계정'을 생성하고, JSON 형식의 키 파일 을 다운로드합니다. 이 파일이 바로 파이썬의 출입증입니다. 이 JSON 파일의 이름을 google_key.json 으로 바꾸고 파이썬 코드가 있는 폴더에 넣어줍니다. 2. 스프레드시트 공유 권한 열어주기 이 부분이 가장 많이 하는 실수입니다. 다운로드한 JSON 파일을 메모장으로 열어보면 client_email 항목에 아주 긴 가상의 이메일 주소(예: bot-123@project.iam.gserviceaccount.com )가 ...

보고서 완성되면 내 스마트폰으로 톡! 파이썬 슬랙 & 텔레그램 알림 봇 만들기

  19편에서 윈도우 작업 스케줄러를 세팅하며 우리는 '무인 자동화'의 꿈을 이루었습니다. 새벽 6시에 컴퓨터가 혼자 깨어나 엑셀 보고서를 척척 만들어내죠. 그런데 문득 출근길 지하철에서 불안감이 엄습합니다. "오늘 아침에 코드가 에러 없이 잘 돌아갔을까? 어제 엑셀 파일을 열어두고 퇴근해서 PermissionError가 난 건 아니겠지?" 컴퓨터 앞에 앉아 직접 확인하기 전까지는 결과를 알 수 없다면 완벽한 마음의 평화를 얻기 어렵습니다. 18편에서 배운 이메일을 써도 되지만, 단순히 "보고서 생성 완료"라는 짧은 상태 메시지를 받기에는 이메일은 너무 무겁고 확인하기도 번거롭죠. 그래서 실무에서는 슬랙(Slack), 잔디(Jandi), 텔레그램(Telegram) 같은 '업무용 메신저' 를 활용해 파이썬이 스마트폰으로 즉각적인 알림(Push)을 쏘게 만듭니다. 1. 텔레그램(Telegram) 봇으로 나만의 알림 비서 만들기 가장 쉽고 강력한 개인용 알림 수단은 텔레그램입니다. 텔레그램 앱에서 'BotFather'라는 공식 계정을 검색해 대화를 걸고 /newbot 명령어를 입력하면, 나만의 봇(Bot)이 생기며 아주 긴 영문/숫자 조합의 '토큰(Token)' 을 발급해 줍니다. 그리고 내 계정의 고유 번호인 'Chat ID' 만 알면 준비는 끝납니다. 파이썬 코드에서 텔레그램으로 메시지를 쏘는 방법은 놀라울 정도로 간단합니다. 17편 웹 크롤링에서 썼던 requests 라이브러리를 다시 꺼내옵니다. import requests def send_telegram_message(text): # BotFather에게 받은 토큰과 내 챗봇 아이디 입력 bot_token = '여기에_토큰을_입력하세요' chat_id = '여기에_Chat_ID를_입력하세요' # 텔레그램 서버로 메...

파이썬 안 깔린 컴퓨터에서도 OK! 내 코드를 완벽한 .exe 실행 파일로 만들기

 21편에서 우리는 까만 도스 창을 없애고 버튼이 달린 예쁜 윈도우 창(GUI)을 만들었습니다. 이제 당당하게 .bat 파일과 코드를 팀장님께 넘겨드렸는데, 팀장님 자리에서 실행해 보니 알 수 없는 에러가 뜨며 프로그램이 켜지지 않습니다. 이유가 뭘까요? 바로 팀장님의 컴퓨터에는 '파이썬'이 설치되어 있지 않기 때문입니다. 우리가 쓰는 한글(.hwp) 파일을 보려면 한컴오피스가 깔려있어야 하듯, 파이썬 코드(.py)를 돌리려면 파이썬이 깔려있어야 합니다. 하지만 바쁜 타 부서 사람들에게 "이걸 쓰시려면 파이썬부터 설치하세요"라고 말할 수는 없죠. 그래서 파이썬과 내 코드를 하나의 보따리로 꽉 묶어서, 더블클릭만 하면 무조건 켜지는 독립적인 실행 파일(.exe) 로 변환하는 작업이 필요합니다. 오늘은 그 마법의 도구인 PyInstaller 를 배워보겠습니다. 1. PyInstaller 설치하기 가장 먼저 파이썬 코드를 .exe로 변환해 줄 공장장 역할을 하는 라이브러리를 설치해야 합니다. 까만색 터미널(명령 프롬프트) 창을 열고 아래 명령어를 입력해 주세요. pip install pyinstaller 2. 마법의 명령어 한 줄: -F 와 -w 설치가 끝났다면, 내가 짠 파이썬 코드 파일(예: auto_report.py )이 있는 폴더로 이동하여 터미널 창을 엽니다. 그리고 아래의 마법의 명령어 딱 한 줄만 입력하고 엔터를 치시면 됩니다. pyinstaller -F -w auto_report.py 여기서 알파벳 옵션 두 가지가 가장 중요합니다. -F (대문자): One File의 약자입니다. 복잡한 폴더나 부수적인 파일들을 흩어놓지 않고, 깔끔하게 .exe 파일 딱 1개 로 뭉쳐서 만들어 달라는 뜻입니다. -w (소문자): Window의 약자입니다. 프로그램을 실행했을 때 뒤에 거슬리게 따라붙는 까만색 도스 창(콘솔 창)을 숨겨달라 는 뜻입니다. (만약 21편의 GUI 창 없이 단순...

까만 도스창은 가라! 파이썬 코드를 버튼 달린 진짜 윈도우 프로그램으로 만들기

  15편에서 배운 .bat 파일을 통해 더블클릭 한 번으로 코드를 실행할 수 있게 되었습니다. 팀장님께 바탕화면 아이콘을 드리며 "이것만 누르시면 됩니다!"라고 자신 있게 말씀드렸죠. 그런데 다음 날 팀장님이 다급하게 부르십니다. "이거 아이콘을 눌렀더니 해커들 쓰는 까만 창(DOS)에 흰 글씨가 막 올라오는데, 내 컴퓨터 바이러스 먹은 거 아니야?" 개발자들에게는 익숙한 터미널 창이지만, 일반 직장인들에게 까만색 도스 창은 미지의 공포를 유발합니다. 아무리 코드를 잘 짜도 겉모습이 투박하면 '정식 프로그램'으로 인정받기 어렵죠. 그래서 오늘은 파이썬 코드를 예쁜 윈도우 창과 클릭 가능한 버튼이 있는 진짜 프로그램, 즉 GUI(Graphic User Interface) 로 둔갑시키는 방법을 알아보겠습니다. 1. 파이썬의 기본 인테리어 도구: Tkinter 파이썬으로 창을 띄우고 버튼을 만드는 도구는 여러 가지가 있지만, 가장 쉽고 다운로드가 필요 없는 기본 도구가 바로 Tkinter (티케이인터)입니다. 파이썬을 설치할 때 기본으로 깔려있기 때문에 pip install 을 할 필요도 없습니다. 먼저 아무것도 없는 텅 빈 도화지(윈도우 창)를 하나 띄워보는 코드를 작성해 볼까요? import tkinter as tk # 1. 윈도우 창 만들기 root = tk.Tk() root.title("월간 실적 자동화 프로그램") # 창 제목 root.geometry("300x200") # 창 크기 (가로x세로) # 2. 창을 닫을 때까지 계속 띄워두기 root.mainloop() 이 코드를 실행해 보세요! 화면에 '월간 실적 자동화 프로그램'이라는 제목을 가진 귀여운 미니 창이 하나 뜰 것입니다. 이제 이 텅 빈 창에 버튼 하나만 달아주면 됩니다. 2. 버튼 클릭 시 내 자동화 코드 실행하기 창을 띄우는 법을 알았으니, 이제 "버...

빨간 글씨에 쫄지 마세요! 파이썬 엑셀 자동화 필수 에러 해결 Top 5

파이썬으로 엑셀 자동화 코드를 짜다 보면 누구나 화면 가득 쏟아지는 빨간색 영어 글씨들을 마주하게 됩니다. 초보 시절에는 이 '에러(Error)' 메시지를 보면 가슴이 철렁하고 내가 컴퓨터를 고장 낸 것은 아닌지 겁부터 나기 마련입니다. 하지만 프로그래머들에게 에러 메시지란 두려움의 대상이 아니라, '어디를 고쳐야 할지 정확히 알려주는 친절한 내비게이션'입니다. 수백 가지의 에러가 있는 것 같지만, 실무 엑셀 자동화에서 발생하는 에러는 사실 5가지로 정해져 있습니다. 오늘은 여러분의 소중한 시간을 아껴줄 악명 높은 파이썬 에러 Top 5와 그 해결법을 총정리합니다. 1. PermissionError: [Errno 13] Permission denied [원인] 엑셀 자동화를 하면서 한국인 실무자들이 가장 많이 겪는 압도적 1위 에러입니다. 파이썬이 엑셀 파일에 데이터를 쓰고 저장하려고 하는데, 누군가(또는 내)가 이미 그 엑셀 파일을 더블클릭해서 화면에 열어두었을 때 발생합니다. 엑셀이 "지금 주인이 이 파일을 보고 있으니까 파이썬 넌 건드리지 마!"라고 권한(Permission)을 막아버린 것입니다. [해결법] 코드 창을 볼 필요도 없습니다. 지금 열려있는 엑셀 파일(혹은 백그라운드에 숨어있는 엑셀)을 찾아서 창을 닫아주기만 하면 1초 만에 해결됩니다. 2. KeyError: '열 이름' [원인] 판다스(Pandas)로 특정 열(Column)을 골라내거나 계산하려고 할 때 df['매출액'] 이라고 적었는데, 표 안에 그런 이름표를 가진 열이 없다고 파이썬이 항의하는 에러입니다. 분명히 눈으로 볼 땐 '매출액'이 있는데 왜 없다고 할까요? [해결법] 십중팔구 '오타' 이거나 '숨겨진 띄어쓰기' 때문입니다. 엑셀 원본을 작성한 사람이 무심코 '매출액 ' 처럼 뒤에 스페이스바(공백)를 하나 넣어둔 경우,...

클릭조차 필요 없다! 윈도우 작업 스케줄러로 파이썬 새벽에 자동 실행하기

 15편에서 우리는 파이썬 코드를 더블클릭 한 번으로 실행할 수 있는 'bat(배치) 파일'을 만들었습니다. 덕분에 매번 파이썬 편집기를 켜는 수고는 덜었지만, 여전히 아침에 출근해서 마우스로 아이콘을 더블클릭하는 '사람의 손길'이 필요합니다. 만약 내가 출근하기도 전인 새벽 6시에, 컴퓨터가 알아서 어제까지의 데이터를 수집하고 엑셀 보고서로 요약한 뒤 팀장님 메일로 쏘아놓는다면 어떨까요? 나는 출근해서 커피 한 잔의 여유를 즐기기만 하면 됩니다. 오늘은 여러분의 파이썬 코드를 완벽한 '무인(Hands-free) 시스템'으로 만들어 줄 윈도우 작업 스케줄러(Task Scheduler) 활용법을 공개합니다. 1. 윈도우 작업 스케줄러 실행하기 이 기능은 윈도우(Windows) 운영체제에 기본으로 탑재되어 있어 별도로 프로그램을 설치할 필요가 없습니다. 키보드의 윈도우 키 를 누릅니다. 검색창에 '작업 스케줄러' (또는 Task Scheduler)를 입력하고 엔터를 칩니다. 시계 모양의 아이콘이 있는 창이 열리면 우측 메뉴에서 [기본 작업 만들기...] 를 클릭합니다. 2. 언제 실행할까요? (트리거 세팅) 작업 만들기 마법사가 실행되면, 컴퓨터에게 '언제' 실행할 것인지 스케줄을 지정해 줍니다. 이름: '일일 자동 보고서 작성' 등 본인이 알아보기 쉬운 이름을 적고 [다음]을 누릅니다. 트리거: 얼마나 자주 실행할지 묻습니다. '매일'을 선택합니다. 시간: 코드가 실행될 시간을 지정합니다. (예: 오전 06:00:00) 지정 후 [다음]을 누릅니다. 3. 무엇을 실행할까요? (동작 세팅) 이제 정해진 시간에 어떤 프로그램을 켤 것인지 알려줄 차례입니다. 작업: '프로그램 시작'을 선택하고 [다음]을 누릅니다. 프로그램/스크립트: [찾아보기]...

아웃룩 켤 필요 없다! 파이썬으로 엑셀 첨부파일 자동 이메일 쏘기

  파이썬으로 흩어진 엑셀 데이터를 모으고, 피벗 테이블로 요약하고, 차트까지 그렸습니다. 이제 이 완벽한 보고서를 30명의 부서장들에게 이메일로 보낼 차례입니다. 보통이라면 어떻게 할까요? 아웃룩이나 지메일 창을 30번 띄우고, "안녕하세요, OOO 부서장님. 이번 달 실적 첨부합니다."라는 똑같은 멘트를 복사해서 붙여넣은 뒤, 실수로 엉뚱한 파일을 첨부하지는 않았는지 조마조마하며 발송 버튼을 누를 것입니다. 데이터 전처리를 아무리 자동화했어도, 배포하는 과정에서 사람의 손을 타면 결국 '야근'을 피할 수 없습니다. 하지만 파이썬은 이메일 발송마저도 단 몇 초 만에 처리해 냅니다. 오늘은 파이썬 코드로 이메일을 작성하고, 엑셀 파일을 첨부해서 자동으로 쏘아 보내는 '이메일 자동화' 의 세계를 안내해 드립니다. 1. 파이썬의 우체부: smtplib와 email 라이브러리 파이썬에서 이메일을 보내려면 기본적으로 내장되어 있는 두 가지 도구를 사용합니다. email 모듈은 편지지와 봉투를 예쁘게 꾸미는 역할을 하고, smtplib 는 완성된 편지를 우체통에 넣어 실제 목적지로 쏘아 보내는 집배원 역할을 합니다. 이메일을 보내기 위해서는 구글(Gmail) 계정을 사용하는 것이 가장 대중적입니다. 단, 보안 문제 때문에 내 원래 구글 비밀번호를 코드에 직접 쓰면 안 되며, 구글 계정 설정에서 '앱 비밀번호(16자리 문자)' 를 따로 발급받아 사용해야 합니다. 2. 엑셀 파일 첨부하고 이메일 보내기 (실전 코드) 백문이 불여일견입니다. 내가 만든 '최종보고서.xlsx' 파일을 팀장님께 자동으로 보내는 전체 코드를 살펴보겠습니다. import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIM...