구글 캘린더에 새 일정이 추가될 때마다 팀원들에게 슬랙 메시지가 자동으로 가면 좋겠다고 생각한 적 있으세요? Python과 몇 가지 API만 있으면 30분 안에 구현할 수 있어요. 실제로 제가 팀 프로젝트하면서 만들어본 자동화 시스템을 소개할게요.
왜 구글 캘린더 자동화가 필요했을까요?
매번 미팅 일정을 수동으로 공유하는 게 너무 번거로웠어요. 누군가는 깜빡하고 공유를 안 하기도 하고, 급하게 잡힌 일정은 아예 놓치는 경우도 많았죠.
특히 재택근무가 늘어나면서 이런 문제가 더 심해졌어요. 캘린더에 일정만 추가하면 자동으로 슬랙에 알림이 가는 시스템이 있다면 얼마나 편할까 싶었죠.
처음엔 유료 서비스를 찾아봤는데 생각보다 비싸더라고요. 그래서 직접 만들어보기로 했어요.
실제로 구현해본 자동화 프로세스
가장 먼저 Google Cloud Console에서 프로젝트를 만들고 Calendar API를 활성화했어요. OAuth2 인증을 통해 크레덴셜 파일을 다운로드받는 과정이 처음엔 복잡해 보였는데, 한 번 해보니 생각보다 간단했어요.
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
creds = Credentials.from_authorized_user_file('token.json',
['https://www.googleapis.com/auth/calendar.readonly'])
service = build('calendar', 'v3', credentials=creds)
이렇게 기본 설정을 마치고 나니 캘린더에서 일정을 가져오는 건 정말 쉬웠어요.
다음으로 슬랙 웹훅을 설정했어요. 슬랙 워크스페이스에서 Incoming Webhooks 앱을 추가하고 URL을 발급받으면 돼요.
import requests
def send_slack_message(message):
webhook_url = "https://hooks.slack.com/services/YOUR_WEBHOOK_URL"
payload = {"text": message}
response = requests.post(webhook_url, json=payload)
이 두 가지를 연결하는 게 핵심이에요. 구글 캘린더에서 오늘 일정을 조회하고, 특정 키워드가 포함된 일정만 필터링해서 슬랙으로 보내는 거죠.
실무에서 써보니 알게 된 꿀팁들
처음엔 모든 일정을 다 알림으로 보냈는데, 너무 많은 메시지가 와서 오히려 스팸처럼 느껴지더라고요. 그래서 제목에 '미팅'이나 '회의'가 들어간 일정만 필터링하도록 수정했어요.
target_summary = '미팅'
filtered = [ev for ev in events if target_summary in ev.get('summary', '')]
시간대 설정도 중요해요. 한국 시간 기준으로 설정하지 않으면 새벽에 알림이 올 수도 있어요. timeMin 파라미터를 'Asia/Seoul' 타임존으로 맞춰주는 게 필수예요.
일정이 변경됐을 때도 알림이 가도록 하려면 Calendar API의 watch 기능을 쓰면 돼요. 하지만 이건 서버가 필요해서 저는 5분마다 실행되는 크론잡으로 대체했어요.
에러 처리도 꼭 넣어주세요. API 호출 제한이나 네트워크 오류가 생각보다 자주 발생해요. try-except 문으로 감싸고 실패했을 때 재시도하는 로직을 넣으면 안정적으로 돌아가요.
이메일 알림도 함께 설정하기
슬랙을 안 쓰는 팀원들을 위해 이메일 알림도 추가했어요. Gmail API를 쓰면 되는데, 간단하게 SMTP로도 구현할 수 있어요.
import smtplib
from email.mime.text import MIMEText
def send_email(subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = 'your_email@gmail.com'
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login('your_email@gmail.com', 'your_app_password')
smtp.send_message(msg)
Gmail은 앱 비밀번호를 따로 생성해야 해요. 2단계 인증을 켜고 앱 비밀번호를 만들어 사용하면 보안상 안전해요.
더 나아가서 시도해볼 만한 것들
카카오톡 알림도 가능해요. 카카오 개발자 사이트에서 API를 신청하면 되는데, 개인용은 무료로 쓸 수 있어요.
일정 30분 전에 리마인더를 보내는 기능도 유용해요. 일정 시작 시간을 파싱해서 30분 전에 알림을 예약하면 돼요.
참석자 목록을 함께 보내면 누가 참석하는지 미리 알 수 있어서 좋아요. Calendar API에서 attendees 필드를 가져와서 이름만 추출하면 돼요.
주간 일정 요약을 월요일 아침에 보내는 것도 팀원들이 좋아해요. 한 주의 모든 미팅을 정리해서 한 번에 보여주면 일정 관리가 편해져요.
이렇게 만든 자동화 시스템 덕분에 이제는 일정 공유를 깜빡하는 일이 없어졌어요. 무엇보다 반복적인 작업에서 해방되니까 더 중요한 일에 집중할 수 있게 됐죠.
Python 기초만 알아도 충분히 만들 수 있으니 한번 도전해보세요. 생각보다 어렵지 않고, 만들고 나면 정말 편해요.
2025.04.29 - [생산성] - 계획 잘 세우는 사람들의 비밀 : 구글 캘린더 활용법
계획 잘 세우는 사람들의 비밀 : 구글 캘린더 활용법
요즘 바쁜 일상 속에서 일정 관리는 필수가 되었어요. 회의 시간을 놓치거나 약속을 깜빡한 경험이 다들 있으실 텐데요. 그런 문제를 해결해주는 도구가 바로 구글 캘린더예요. 무료로 사용할
qwanjk.tistory.com
'IT' 카테고리의 다른 글
| 파이썬으로 자동화해서 매일 아침 뉴스 요약 메일 받기 (3) | 2025.07.23 |
|---|---|
| 파이썬으로 엑셀 일간 업무보고서 자동 생성하는 완벽 가이드 (2) | 2025.07.23 |
| 무료 백신 프로그램 진짜 써도 되나요? (3) | 2025.07.22 |
| 외장하드와 NAS의 차이점: 백업용으로 뭘 사야 후회 안 할까요? (3) | 2025.07.22 |
| 테슬라는 어떻게 탄소배출권으로 연간 3조원을 벌었을까요? (3) | 2025.07.22 |