
Make를 사용하여 Slack 멘션으로부터 Google Calendar 일정을 가져와 퇴근 시 근태 회고를 자동화하기
요약
Make를 활용하여 Slack 멘션 시 Google Calendar의 당일 일정을 자동으로 가져와 채널에 공유하는 자동화 워크플로우 구축 방법을 설명합니다. 노코드 도구를 통해 Webhook, Router, API 연동을 조합하여 퇴근 전 근태 회고를 효율화할 수 있습니다.
핵심 포인트
- Make를 이용한 Slack과 Google Calendar 간의 노코드 연동
- Webhook과 Router를 활용한 Slack URL 검증 및 이벤트 처리
- Text aggregator를 통한 다수 일정의 메시지 정형화
- HTTP 모듈을 사용한 Slack API의 세밀한 메시지 제어
작성 계기
퇴근할 때, 근태를 입력하기 전에 "오늘 무엇을 했더라?"라며 Google Calendar를 다시 여는 일이 있었습니다. 일정은 캘린더에 입력해 두는데, Slack에 있는 상태에서 목록을 볼 수 없는 것이 답답하여 Make로 연결했습니다.
Slack에서 Bot에게 멘션을 보내면, 그날의 Google Calendar에서 일정을 가져와 시간과 내용을 채널에 반환하도록 했습니다. 퇴근 전 회고용입니다. @finish_work 오늘의 일정
과 같이 보내는 것만으로 그날의 태스크 목록이 나옵니다.
이하, 시나리오 구성과 설정 절차를 작성합니다.
완성 이미지

시나리오의 전체 모습은 다음과 같습니다.
Webhooks (Custom webhook)… Slack으로부터 이벤트를 수신합니다 -
Router… 일반적인 이벤트 알림과, Slack 최초 설정 시의 URL 검증을 분기합니다 -
Google Calendar (Search Events)… 대상일의 일정을 검색합니다 -
Tools (Text aggregator)… 여러 일정을 하나의 메시지로 정형화합니다 -
HTTP (POST)… Slack API의 chat.postMessage로 결과를 게시합니다
왜 이 구성으로 했는가
| 요소 | 선정 이유 |
|---|---|
| Make | 노코드(No-code)로 Webhook · 분기 · API 연동을 조합하기 쉽기 때문입니다 |
| ... | url_verification과 일반 이벤트를 동일한 입구에서 처리할 수 있기 때문입니다 |
| Text aggregator | Search Events의 여러 건을 1개의 메시지로 묶을 수 있기 때문입니다 |
| HTTP (Slack API) | 표준 Slack 모듈보다 메시지 형식을 세밀하게 제어하기 쉽기 때문입니다 |
근태 관리 용도로는, 캘린더에 입력한 일정 = 그날 한 일로 취급한다는 전제입니다. 회의 · 작업 블록 · 태스크명 등을 캘린더에 기록해 두고, 퇴근 전에 멘션하는 운용 방식으로 하면 효과적입니다.
전제 조건 · 필요한 것
- Make 계정 (무료 플랜으로도 구축 가능합니다. 실행 횟수에 주의하세요)
- Slack 워크스페이스 (앱 생성 권한)
- Google 계정 (Calendar 연동용)
- 일정을 기록하고 있는 Google Calendar
구축 후에는 Make의 시나리오를 ON으로 설정하지 않으면 Slack으로부터 이벤트를 받을 수 없습니다. 동작 확인 타이밍에도 잊기 쉬우므로 Step 7에서 다시 다루겠습니다.
작성 절차 개요
- Slack 앱을 생성하고, Event Subscriptions와 Bot Token을 설정합니다
- Make에서 Custom Webhook을 생성하고, URL을 Slack에 등록합니다
- Router로 URL 검증용 응답 루트를 준비합니다
- Google Calendar 연동과 "오늘의 일정" 검색을 설정합니다
- Text aggregator로 메시지를 정형화합니다
- HTTP로
chat.postMessage를 실행합니다 - 시나리오를 ON으로 하여 동작을 확인합니다
작성 절차 상세
Step 1: Slack 앱 권한 설정
1-1. 앱 생성
Slack API에 접속합니다.
Create New App을 클릭합니다.

From scratch로 앱을 생성합니다.

App Name에 앱 이름을 입력합니다 (이것이 멘션 이름이 됩니다).

1-2. Bot Token Scopes
사이드 메뉴에서 OAuth & Permissions를 선택합니다.
Scopes에서 최소한 다음을 추가합니다.

보충
app_mentions:read … 멘션 감지 -
chat:write … 메시지 게시
Step 2: Make 준비 및 Slack의 Event Subscriptions 설정
2-1. Make의 Webhooks를 설정하기
Make에 로그인하여 Scenarios를 클릭합니다.
Create scenario를 클릭합니다.

시나리오 이름을 입력합니다.

예시로 finish_work를 입력합니다.

Webhooks를 선택합니다.

Custom webhook을 선택합니다.

Create a webhook을 클릭합니다.

Webhook name을 입력합니다.

Webhook 엔드포인트를 복사하고 Save 버튼을 클릭합니다.

2-2. Slack의 Event Subscriptions 설정하기
사이드 메뉴에서 Event Subscriptions를 선택합니다.
Enable Events를 OFF에서 ON으로 변경합니다.

2-1에서 복사한 Webhook 엔드포인트를 붙여넣습니다.

아래 이미지와 같이 Our Request와 Your Response가 표시되는지 확인합니다.

보충
- Slack의 Event Subscriptions는 response의 body에 challenge라는 문자열이 포함되어 있기를 기대합니다. 이 표시가 나타나지 않는 경우, Make의 Webhook 모듈에서 Redetermine data structure를 선택한 후, Slack의 Event Subscriptions에서 Request를 재전송해 주세요.
2-3. Make에서 Router 모듈을 설정하여 Slack의 Event Subscriptions 설정 완료하기
Make의 Webhook 모듈에 있는 + 아이콘에 커서를 대고 Add module을 선택합니다.

Router를 선택합니다.

※ 모듈 번호가 연속되지 않더라도 동작에는 문제가 없습니다 (작업 중에 모듈을 삭제한 경우 등).
1st를 클릭합니다.

1st 루트 (URL 검증) 필터는 다음과 같습니다.
| 항목 | 값 |
|---|---|
| 필드 | type (Webhooks > Custom webhook) |
| 조건 | Equal to |
| 값 | url_verification |
아래와 같이 입력하고 Save 버튼을 클릭합니다.

1st 다음에 이어지는 모듈로 Webhooks를 선택합니다.

Webhook response를 선택합니다.

Body에는 다음을 입력합니다 (challenge는 Custom webhook에서 매핑합니다).
{
"challenge": "{{1.challenge}}"
}
※ 1은 Custom webhook의 모듈 번호입니다. 환경에 맞춰 변경하여 사용하세요.

Run once 버튼을 클릭합니다.

Slack의 Event Subscriptions에서 Retry 버튼을 클릭하여 요청을 재전송합니다.

Slack의 Event Subscriptions 검증이 완료되었는지 확인합니다.

Add Bot User Event를 클릭하여 app_mention을 선택합니다.

Save Changes를 클릭합니다.

Step 3: 워크스페이스에 설치
3-1. OAuth & Permissions를 통한 설치
사이드 메뉴에서 OAuth & Permissions를 선택합니다.
OAuth Tokens의 Install App (Install to Workspace)를 클릭합니다.

finish_work가 실행할 수 있는 액션을 허용합니다.
OAuth Tokens에서 출력된 Bot User OAuth Token (xoxb-
로 시작하는 것)을 따로 적어두세요. Step 6의 HTTP 모듈에서 사용합니다.
3-2. 채널에 초대
대상 채널에서 /invite @finish_work (본인의 Bot 이름)를 실행하여, Bot을 채널에 참여시킵니다.
Step 4: Google Calendar와의 연동 구축
4-1. Router의 2nd 루트 구축
Make에서 Run once를 클릭하고, Slack에서 한 번 멘션(Mention)을 보내 데이터 구조를 확정합니다.

Slack에서 @finish_work (본인의 Bot 멘션)를 게시합니다.

2nd를 클릭합니다.

**2nd 루트(멘션 시의 본 처리)**의 필터(Filter)는 다음과 같습니다.
| 항목 | 값 |
|---|---|
| 필드 (Field) | type |
| ... |
아래와 같이 입력한 후, Save 버튼을 클릭합니다.

4-2. Google Calendar 모듈 생성
Google Calendar 모듈을 추가합니다.

Search Events를 선택합니다.

Connection이 설정되지 않았다면 Add를 클릭하여 Google에 로그인합니다.

일정을 가져오고 싶은 Calendar ID를 선택합니다.
Start Date에는 다음을 입력합니다.
{{parseDate(formatDate(now; "YYYY-MM-DD"; "Asia/Tokyo"); "YYYY-MM-DD"; "Asia/Tokyo"))}}
End Date에는 다음을 입력합니다 (당일의 다음 날 0시까지 = 당일 전체).
{{addDays(parseDate(formatDate(now; "YYYY-MM-DD"; "Asia/Tokyo"); "YYYY-MM-DD"; "Asia/Tokyo"); 1)}}
Single Events… Yes -
Order By… Start Time (ascending)
Save 버튼을 클릭합니다.

Step 5: Google Calendar 정보 정형화
5-1. Tools 모듈 구축
Tools를 선택합니다.

Text aggregator를 선택합니다.

Source Module에 Google Calendar (Search Events)를 지정합니다.
Advanced settings를 열고, 다음과 같이 입력한 후 Save 버튼을 클릭합니다.
Text 예시 (모듈 번호는 환경에 맞춰 변경해 주세요):
{{formatDate(9.start; "HH:mm"; "Asia/Tokyo")}}-{{formatDate(9.end; "HH:mm"; "Asia/Tokyo")}} {{9.summary}}
※ 9는 Google Calendar (Search Events) 모듈의 번호입니다.
Row separator(행 구분자)는 New row를 선택합니다.

일정이 0건일 때는 Text가 비어 있게 되어, Slack에는 빈 메시지에 가까운 내용이 전송됩니다. 필요하다면 필터(Filter)로 분기하여 "오늘의 일정은 없습니다"라고 응답하는 루트를 추가해도 좋습니다.
Step 6: Slack으로 응답 반환
6-1. HTTP 모듈 구축
HTTP 모듈을 선택합니다.

Make a request를 선택합니다.

Authentication type… No authentication -
URL… 다음을 입력합니다
Method… POST -
Body content type… application/x-www-form-urlencoded
(Slack Web API의 chat.postMessage
가 일반적입니다.)
Body content는 다음과 같습니다.
| Field | Name | Value |
|---|---|---|
| Field1 | token | 3-1에서 취득한 Bot User OAuth Token |
| Field2 | channel | Webhooks > event > channel |
| Field3 | thread_ts | Webhooks > event > ts |
| Field4 | text | Tools > text |
Save 버튼을 누릅니다.
보충: HTTP 모듈 입력 후의 이미지




Step 7: 동작 확인
7-1. 시나리오를 ON으로 설정하고 Slack에서 멘션하기
Google Calendar에 당일 일정을 등록합니다.

Make의 시나리오 화면 왼쪽 하단에서 시나리오를 ON (활성화) 상태로 만듭니다. OFF 상태에서는 Slack에서 호출할 수 없습니다.
Run once 버튼을 누릅니다.

Slack에서 @finish_work를 멘션하여 게시합니다.

Google Calendar의 일정이 스레드에 출력되면 완료입니다.

운용 이미지 (퇴근 시의 근태 회고)
- 근무 중에 Google Calendar에 회의·작업 블록을 기록합니다.
- 퇴근 전에 Slack에서
@finish_work와 같이 멘션합니다. - Bot이 그날의 시간대 + 일정 제목 목록을 반환합니다.
캘린더를 정확하게 업데이트할수록 회고의 정밀도가 높아집니다. "캘린더 = 작업 로그"라는 전제로 팀에 공유하면 운용이 정착되기 쉽습니다.
주의해야 할 포인트 (Troubleshooting)
URL 검증이 통과되지 않을 때
- Router의
url_verification경로에 Webhook response가 있는지 확인하세요. - 응답이
{"challenge":"..."}형식인지 확인하세요. - Make 시나리오가 ON 상태인지 확인하세요.
멘션을 해도 반응이 없을 때
- Event Subscriptions에서
app_mention을 구독하고 있는지 확인하세요. - 생성한 Bot이 채널에 참여하고 있는지 확인하세요.
- Router의 2nd 경로 필터(
event_callback+app_mention)가 올바른지 확인하세요.
일정이 0건이거나 예상과 다른 날짜일 때
- Search Events의 Start Date / End Date와 타임존(
Asia/Tokyo)을 확인하세요. - 참조하고 있는 캘린더가 올바른지 확인하세요.
- 종일 이벤트 처리 방식(
date/dateTime으로 필드가 다름)을 확인하세요.
Slack에 게시할 수 없을 때
- Bot Token에
chat:write권한이 있는지 확인하세요. channelID가 이벤트로부터 올바르게 매핑되었는지 확인하세요.- 프라이빗 채널인 경우 Bot을 초대했는지 확인하세요.
요약
Make에서 Slack의 멘션을 트리거로 하여 Google Calendar에서 일정을 가져오고, Text aggregator와 HTTP (chat.postMessage)를 통해 목록을 반환하는 구성을 구축했습니다. Slack 연동에서는 Router로 URL 검증 (url_verification)을 처리해 두는 것이 특히 중요했습니다.
퇴근 시 "오늘 무엇을 했는지"를 즉시 회고할 수 있게 되어, 근태 입력이나 일일 보고의 부담이 줄었습니다. 동일한 구성으로 개인용 Bot부터 시작하여, 캘린더 작성 규칙이 확립되면 팀 단위로 확장하는 것이 좋습니다.
참고 링크
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기