구글 캘린더 + 챗으로 이중 알림 기반 업무 리마인더 시스템 만들기
목차
알림은 한 번이 아니라 흐름으로 반복되어야 한다
Google Calendar 기반 자동 알림 구조 설계하기
Chat 연동 확장과 이중 리마인더 시스템 구현 전략
알림이 흐르면 업무가 흐르고 조직이 움직인다
알림은 한 번이 아니라 흐름으로 반복되어야 한다
: 알림은 한 번이 아니라 ‘흐름’으로 작동해야 한다
업무 일정이 등록되었지만 이를 놓치는 일이 조직 내에서는 빈번하게 발생한다. 회의 시간이 바뀌었는지 모르고 참석하지 못하거나, 마감 일정이 다가오고 있다는 사실을 잊은 채 진행을 미루는 경우도 많다. 특히 재택근무와 분산 업무가 많아진 요즘에는 한 번의 알림으로는 업무 흐름을 완벽하게 지키기 어렵다.
Google Calendar는 강력한 일정 관리 도구지만, 알림은 사용자 개인의 기기 설정에 따라 무시되거나, 소리 없이 지나가기도 한다. 이때 Google Chat과 연동하면 알림의 도달률을 높일 수 있다. Google Chat 스페이스에 리마인더 메시지를 자동 전송하면 담당자뿐 아니라 팀원 전체가 해당 일정을 함께 인식하고 관리할 수 있게 된다.
이번 글에서는 Google Calendar 일정 정보를 기반으로, Google Chat에 자동 알림을 추가로 전송하는 ‘이중 알림 기반 업무 리마인더 시스템’을 구축하는 방법을 안내한다. 이 시스템을 활용하면 일정 누락과 업무 지연을 줄이고, 팀 전체가 일정 중심으로 움직이는 습관을 만들 수 있다.
Google Calendar 기반 자동 알림 구조 설계하기
: Google Calendar 일정 기반 리마인더 시스템 설계
이중 알림 시스템을 만들기 위해선 먼저 Google Calendar에서 일정 데이터를 가져오고, 이를 기반으로 Google Chat에 메시지를 전송할 수 있는 구조를 만들어야 한다.
a. Google Chat Webhook URL 생성하기
Google Chat 스페이스에서 자동 메시지를 수신하려면 Webhook URL을 먼저 생성해야 한다.
Google Chat 접속
스페이스 생성 또는 기존 스페이스 선택
상단 점 세 개 메뉴 클릭 → ‘앱 및 통합 관리’
‘Webhook 추가’ → 이름 입력 (예: 업무 알림봇)
Webhook URL 생성 → 복사
이 URL은 Apps Script에서 메시지를 보낼 때 사용된다.
b. Google Apps Script 프로젝트 만들기
https://script.google.com 접속
새 프로젝트 생성
아래 코드 입력
javascript
복사
편집
function sendDailyReminders() {
const calendar = CalendarApp.getDefaultCalendar();
const today = new Date();
const tomorrow = new Date(today);
tomorrow.setDate(today.getDate() + 1);
const events = calendar.getEvents(today, tomorrow);
const webhookUrl = "여기에 Webhook URL 입력";
let message = "*[오늘의 주요 일정]*\n\n";
if (events.length === 0) {
message += "등록된 일정이 없습니다.";
} else {
for (const event of events) {
const title = event.getTitle();
const start = Utilities.formatDate(event.getStartTime(), "Asia/Seoul", "HH:mm");
message += `• ${start} - ${title}\n`;
}
}
const payload = JSON.stringify({ text: message });
UrlFetchApp.fetch(webhookUrl, {
method: "POST",
contentType: "application/json",
payload: payload,
});
}
c. 시간 기반 자동 실행 트리거 설정
Apps Script 상단 시계 아이콘 클릭 → 트리거 추가
sendDailyReminders() 함수 선택
매일 오전 8시 실행 설정
이로써 매일 아침 Google Chat에 자동으로 오늘의 일정을 알려주는 알림이 발송된다.
Chat 연동 확장과 이중 리마인더 시스템 구현 전략
: 이중 알림 시스템의 확장 구성 전략
기본 알림 시스템이 구성되면, 업무에 더 밀접하게 작동하도록 다양한 확장 기능을 덧붙일 수 있다.
a. ‘3시간 전’ 긴급 리마인더 추가
Google Calendar에서는 기본 알림을 제공하지만, 중요한 일정의 경우 추가적으로 Chat에 ‘3시간 전’ 알림을 보내는 기능을 설정할 수 있다.
javascript
복사
편집
function sendUrgentReminder() {
const now = new Date();
const later = new Date(now.getTime() + 3 * 60 * 60 * 1000); // 3시간 후
const calendar = CalendarApp.getDefaultCalendar();
const events = calendar.getEvents(now, later);
for (const event of events) {
if (event.isAllDayEvent()) continue;
const title = event.getTitle();
const start = Utilities.formatDate(event.getStartTime(), "Asia/Seoul", "HH:mm");
const message = `⏰ *[3시간 후 일정 알림]*\n${start} - ${title}`;
UrlFetchApp.fetch("Webhook URL", {
method: "POST",
contentType: "application/json",
payload: JSON.stringify({ text: message }),
});
}
}
이 스크립트도 트리거로 설정해 하루에 4~5회 실행하면 중요한 일정은 반복 알림 가능
b. 일정 키워드 필터링 기능
"보고", "발표", "회의"와 같은 키워드를 포함하는 일정만 별도로 필터링하여 알림을 보낼 수도 있다.
불필요한 일정까지 전송하지 않아 메시지 피로도를 줄이고, 집중도가 높은 알림 시스템을 구성할 수 있다.
javascript
복사
편집
if (title.includes("보고") || title.includes("회의")) {
// Chat 알림 전송
}
c. 팀별 알림 분리
부서별 Google Calendar와 Chat 스페이스를 분리해 알림을 개별적으로 보낼 수 있다.
예: 마케팅팀은 marketing_calendar@company.com, 개발팀은 dev_calendar@company.com
각 팀의 Webhook URL과 Calendar ID를 따로 지정하면 자동화가 팀 맞춤형으로 작동한다.
d. 전날 저녁 알림 + 아침 리마인더 구조
전날 저녁 18시: 다음 날 일정 요약
당일 아침 08시: 오늘 일정 재알림
특정 이벤트 기준(예: “보고서 마감”)은 일정 1시간 전 추가 알림
이렇게 ‘3중 알림’ 시스템을 구성하면 사람이 일정을 놓칠 확률은 거의 0에 가까워진다.
e. 알림 내에 링크 삽입
Google Calendar 일정에 Google Meet 링크나 Google Docs 첨부 링크가 있을 경우, Chat 메시지에 해당 링크를 자동 삽입하여 사용자가 일정과 동시에 관련 자료도 바로 열 수 있게 만든다.
알림이 흐르면 업무가 흐르고 조직이 움직인다
: 알림은 사람의 기억을 시스템으로 대체하는 도구다
사람은 중요한 업무일수록 자꾸 까먹는다. 그리고 일정은 등록되었어도, 리마인드되지 않으면 존재하지 않는 것과 다를 바 없다.
Google Calendar와 Google Chat을 연동한 이중 알림 시스템은 이러한 현실을 반영하여 알림의 전달력을 극대화하는 구조다.
특히 실무 환경에서는 한 번의 알림보다는 흐름 속에서 반복적으로 전달되는 알림이 더 효과적이며, 팀 전체가 동일한 일정을 공유하고 준비할 수 있도록 만든다.
이번에 소개한 시스템을 기반으로 일정 알림을 ‘단순 기능’이 아닌 ‘조직 내 업무 리듬’으로 바꿔보자.
그 변화는 일정을 지키는 조직으로, 일에 집중하는 팀으로 전환되는 출발점이 될 것이다.