🚀 슬랙 업무 자동화:
워크플로와 봇 완벽 정복하기
반복 업무는 줄이고, 중요한 일에 집중하는 방법
반복 업무는 줄이고, 중요한 일에 집중하는 방법
📅 2025년 1월
💼 사내 교육 자료
코딩 없이 워크플로를 활용해 간단한 업무 자동화를 구현할 수 있습니다.
슬랙봇의 작동 원리와 핵심 기능을 이해하고, 제작 과정을 파악합니다.
사내 실제 사례를 통해 업무에 바로 적용할 아이디어를 얻어갑니다.
반복적인 단순 작업을 줄여 더 중요한 일에 집중할 수 있게 됩니다.
코딩 지식 없이, 슬랙 내에서 반복적인 업무를 자동화하는 '레고 블록' 같은 기능입니다.
이전 단계의 정보를 담아 다음 단계로 전달하는 '데이터 보관함'입니다.
예시: 사용자가 폼에 입력한 '이름'을 채널 메시지에 "OOO님이 휴가를 신청했습니다."라고 표시할 때 사용.
매주 금요일 오후 4시, '주간보고' 채널에 리마인더 알림 보내기
/복지 명령어를 입력하면, 복지 혜택 안내와 관련 링크 버튼이 나오게 하기
공지 메시지에 '✋' 이모지를 누르면 신청자 정보(이름, 이메일)를 구글시트에 자동 기록
A. ➡️ Part 2. 슬랙봇 (Pro-Code)이 필요합니다!
슬랙봇을 이해하기 위해 필요한 3가지 핵심 개념
사용자가 보는 화면
웹 브라우저, 슬랙 앱 등 우리가 직접 사용하는 프로그램입니다.
예시: 슬랙 메신저 화면
뒤에서 일하는 컴퓨터
요청을 받아서 처리하고 결과를 돌려주는 컴퓨터입니다. 24시간 켜져 있습니다.
예시: 슬랙봇 프로그램이 실행되는 곳
정보를 저장하는 창고
데이터를 체계적으로 저장하고 필요할 때 꺼내 쓸 수 있게 해주는 시스템입니다.
예시: 구글시트, MySQL 등
어떻게 연결되나요?
① 클라이언트가 서버에 요청 → ② 서버가 데이터베이스에서 정보 조회 → ③ 서버가 클라이언트에 결과 전송
예시: 투표 버튼 클릭 → 서버 처리 → 결과 업데이트
Slack API를 활용해 직접 개발하는 커스텀 애플리케이션입니다.
워크플로보다 훨씬 강력하고 유연합니다.
서버가 필요합니다.
(AWS, GCP 또는 사내 서버)
코딩이 필요합니다.
(Python, Node.js, Java...)
외부 서비스(사내 시스템, DB 등)와 자유로운 연동이 가능합니다.
세 가지 도구의 조합으로 서버와 데이터베이스 없이 슬랙봇을 만들 수 있습니다.
ChatGPT, Claude 등
"구글시트에서 체크박스 클릭하면 슬랙에 메시지 보내는 코드 작성해줘"
→ AI가 코드를 생성해줍니다!
장점: 코딩 몰라도 자연어로 요청 가능
구글에서 제공하는 무료 서버
별도 서버 없이 구글 클라우드에서 24시간 실행
구글시트 메뉴에서 바로 접근 가능
설치나 설정 불필요
장점: 무료, 간편, 구글 서비스와 쉽게 연동
익숙한 스프레드시트 = 데이터베이스
복잡한 DB 대신 구글시트 사용
엑셀처럼 직관적으로 데이터 확인/수정
실시간 협업 가능
장점: 누구나 쉽게 관리, 시각적으로 확인
이 조합으로 만들어진 봇들
• Dinner Poll (투표 봇)
• Review Scrapper (리뷰 수집)
• Slack DM Sender (DM 발송)
모두 이 방식으로 만들어졌습니다!
"개발자가 아니어도 AI + 구글 도구만으로 충분히 슬랙봇을 만들 수 있습니다!"
오늘 배운 케이스 스터디들이 바로 이 방식으로 만들어진 실제 사례입니다.
봇이 "무엇을" 하느냐에 따라 필요한 기능(설정)이 다릅니다.
기능: 외부(내 서버)에서 슬랙 채널로 메시지를 보내기만 할 때 (단방향)
예시: 시스템 장애 알림, 배포 완료 알림
기능: 사용자가 /명령어를 입력하여 봇을 호출할 때
예시: /배포 [서비스명], /회의실 예약
기능: 봇이 채널의 이벤트를 항상 듣고(Listen) 반응할 때
예시: 특정 키워드 감지, 이모지 반응, 채널 입장 감지
기능: 봇이 스스로 행동(메시지 쓰기, 읽기, 수정)하기 위한 만능 열쇠
필수: 위 2, 3번 기능을 사용하거나, 봇이 능동적으로 메시지를 보낼 때 반드시 필요
| 구분 | Bot User Token (봇 토큰) | User Token (유저 토큰) |
|---|---|---|
| 시작 문자 | xoxb- |
xoxp- |
| 주체 | 봇 (앱) 자신 | 봇을 설치/사용한 특정 유저 |
| 권한 | 봇에게 부여된 Scopes 만큼만 행동 (예: chat:write, reactions:read) |
해당 유저가 가진 모든 권한을 위임받아 행동 (유저의 비공개 채널 접근, 유저 대신 글쓰기) |
| 특징 | 사용자와 무관하게 봇이 독립적으로 작동 | 매우 강력하고 민감한 권한 |
| 용도 | 99%의 일반적인 봇 활동 (알림, 응답, 키워드 감지 등) |
유저 개인을 대신하는 작업 (개인 캘린더 연동, 개인 DM 정리) |
특별한 경우가 아니면 항상 봇 유저 토큰(xoxb-)을 사용해야 합니다.
특정 구글시트가 수정되면, 변경 내용을 슬랙 채널에 알림
Incoming Webhook (가장 간단) 또는 Bot Token (chat:write)
#문의 채널에 '장애' 키워드가 포함되면 → '🚨' 이모지 달기 & #긴급대응 채널에 해당 내용 전송
Event Subscription + Bot Token (chat:write, reactions:write)
① 구글시트 '승인' 체크박스 클릭 → ② 슬랙 채널에 '승인 요청' 글 + '확인' 버튼 전송 → ③ 관리자가 '확인' 버튼 클릭 → ④ 원본 글에 '확인자(@admin)' 태그 & 구글시트 '확인자' 셀에 이름 업데이트
Bot Token, Event Subscription (버튼 클릭 감지), Google Apps Script, Google Sheets API
팀원들이 저녁 메뉴를 투표로 결정할 수 있는 슬랙 봇
구글시트에서 간단히 설정하면 슬랙에 투표가 자동 생성됩니다.
• 매번 저녁 메뉴 결정할 때 대화가 길어짐
• 누가 뭘 선택했는지 파악 어려움
• 마감 시간 관리가 수동적
• 버튼으로 간편하게 투표
• 실시간으로 결과 확인
• 자동 마감 처리
• 구글시트 "송부" 체크박스 체크 시 자동 실행
• 행 데이터 읽기 (제목, 선택지, 마감시간)
• pollId 생성으로 중복 방지
• Slack chat.postMessage API 호출
• 버튼 클릭 시 doPost 함수 호출
• LockService로 동시 접근 제어
• 구글시트에서 투표 결과 조회/업데이트
• Slack chat.update로 실시간 업데이트
• 시간 기반 트리거 (주기적 실행)
• 모든 투표의 마감 시간 확인
• 버튼 제거 및 "🔒 마감" 표시
• "[마감됨]" 태그로 재처리 방지
• chat.postMessage: 새 투표 메시지
• chat.update: 투표 결과 실시간 업데이트
• chat.postEphemeral: 개인 에러 메시지
투표 옵션을 변수로 받아서 동적으로 버튼 생성
구글시트의 각 행 = 하나의 투표
버튼 클릭 → 서버 처리 → 원본 메시지 수정
워크플로로는 불가능!
LockService로 여러 사람이 동시에 투표해도 데이터 충돌 없음
onEdit: 즉시 실행
checkDeadlines: 주기적 실행
| 채널ID | 날짜 | 제목 | 선택지1 | 선택지2 | 마감시간 | 송부☑️ | 메시지TS | 투표결과(JSON) |
|---|---|---|---|---|---|---|---|---|
| C01ABC... | 2025-01-15 | 오늘 저녁 뭐 먹을까요? | 치킨 | 피자 | 18:00 | ✅ | '1234.5678 | {"치킨": ["@user1"], "피자": ["@user2"]} |
"단 200줄의 코드로 실시간 투표 시스템을 구축할 수 있습니다.
서버 비용 0원, 데이터베이스 설정 0분!"
매일 전날의 주문 데이터를 자동으로 수집하여 구글시트에 저장하고
슬랙으로 알림을 보내는 완전 자동화 시스템
• 매일 아침 수동으로 Redash 접속
• 데이터 복사 → 구글시트 붙여넣기
• 담당자들에게 일일이 공유
• 반복적이고 시간 낭비
• 매일 오전 8시 자동 실행
• Redash → 구글시트 자동 저장
• 슬랙 자동 알림
• 완전 무인 자동화
• 매일 오전 8시 자동 시작
• 사람 없어도 자동 실행
• 워크플로 시작점
• 오늘 날짜 - 1일 = 어제
• YYYY-MM-DD 형식 포맷
• 다음 노드로 전달
• Redash 쿼리 실행 요청
• POST → job_id 받아옴
• 처리 진행 중 ID
• Redash 데이터 처리 대기
• 일정 시간 후 다음 단계
• 결과 준비 확인
• job_id로 결과 조회
• JSON 형태 데이터
• 배열 형태 (여러 행)
• JSON 배열 개별 분리
• 각 행 별도 데이터화
• 구글시트용 형태 변환
• 데이터 자동 저장
• appendOrUpdate 모드
• user_id 기준 중복 확인
• 채널에 완료 알림
• "○○ 일자 ○건 완료"
• 구글시트 링크 포함
비주얼 인터페이스 (코드 없이 드래그 앤 드롭) | 다양한 통합 (Redash, Slack, Sheets 지원) | 에러 처리 (실패 시 재시도) | 디버깅 쉬움 (각 단계별 데이터 확인)
코드를 거의 쓰지 않음
비주얼 워크플로로 구축
JavaScript는 날짜 계산용으로만 사용
Redash + 구글시트 + 슬랙
각각 별도 로그인/API 필요
n8n이 모두 연결
사람 개입 0%
매일 자동 실행
에러 발생 시에만 확인
매일 10분 절약 = 연간 40시간
사람의 실수 방지
서버 비용 최소화
"코드를 직접 작성하지 않아도 n8n 같은 노코드 도구로
복잡한 업무 자동화가 가능합니다!
중요한 것은 '어떤 흐름으로 동작해야 하는지' 이해하는 것"
구글 플레이스토어와 애플 앱스토어의 앱 리뷰를 자동으로 수집하여
구글시트에 저장하고 슬랙으로 실시간 알림을 보내는 모니터링 시스템
• 매일 앱스토어 접속해서 리뷰 확인
• 신규 리뷰 놓치기 쉬움
• 여러 앱 관리 시 더욱 복잡
• 개발자 답변 관리 어려움
• 일일 자동 리뷰 수집
• 슬랙으로 즉시 알림
• 개발자 답변을 스레드로 연결
• 중복 방지 & 이력 관리
• App_List 시트에서 앱 목록 읽기
• storeType 확인 (google/apple)
• 스토어별 수집 함수 호출
• 시간 기반 트리거 (매일 1회)
• 외부 Playwright 서버 HTTP POST
• appId, appName 전달
• 브라우저로 실제 페이지 크롤링
• JSON으로 데이터 수신
• 애플 공식 RSS 피드 사용
• XmlService로 파싱
• 최근 10일 리뷰 필터링
• 최대 50개 제공
• Reviews: reviewId로 중복 확인
• Slack_Map: 포스팅 이력 관리
• Set 자료구조로 빠른 조회
• 행 삭제해도 재포스팅 안됨
• chat.postMessage 개별 포스팅
• 멀티라인 인용구(>>>) 사용
• 메시지 TS 저장 (스레드용)
• 개발자 답변은 스레드 댓글로
• LOOKBACK_DAYS (10일) 설정
• 오래된 리뷰 스킵
• 단, 최근 답변 있으면 포함
• MAX 30개로 과부하 방지
UrlFetchApp.fetch() HTTP 요청 | XmlService.parse() 애플 RSS XML | SpreadsheetApp 구글시트 | chat.postMessage 슬랙 메시지
수집할 앱 목록 관리
컬럼: App ID | App Name
예: com.example.app | 예제 앱 (구글 플레이)
예: id123456789 | 예제 앱 (애플 앱스토어)
수집된 모든 리뷰 저장
컬럼: reviewId | App ID | App Name | author | date | rating | content | timestamp
개발자 답변도 별도 행으로 저장 (reviewId-dev)
슬랙 포스팅 이력 관리
컬럼: reviewId | ts (타임스탬프) | thread
중복 포스팅 방지 핵심 데이터
→ 리뷰와 답변이 하나의 스레드로 묶여서 보기 편함!
세 가지 케이스 모두 Google Apps Script (서버 역할)와
구글시트 (데이터베이스 역할)를 활용했습니다.
즉, 별도 서버나 DB 없이 구글 도구만으로 충분히 구축 가능합니다!
"961줄의 코드지만, 대부분은 데이터 처리 로직입니다.
핵심 개념은 '외부 데이터 수집 → 저장 → 알림'이라는 단순한 흐름!
복잡해 보여도 한 단계씩 나누면 이해할 수 있습니다."
| 구분 | 🏁 슬랙 워크플로 (No-Code) | 🤖 슬랙봇 (Pro-Code) |
|---|---|---|
| 누가 만드나? | 누구나 (기획자, 마케터, PM...) |
개발자 (혹은 개발 지식이 있는 분) |
| 핵심 기능 | 정해진 트리거 + 간단한 액션 (폼, 알림) |
거의 모든 것 (API 연동, 복잡한 로직) |
| 서버 | 필요 없음 (Slack 내장) |
필수 (AWS, GCP, 사내 서버 등) |
| 주요 용도 | 간단한 알림, 양식 수집, 정해진 공지 |
실시간 상호작용, 외부 서비스 연동, 사내 시스템 통합 |
| 예시 | /휴가신청 폼, 주간 리마인더 |
/배포, 키워드 감지 봇, 실시간 장애 알림 |
코딩 없는 워크플로 빌더로 지금 당장 시작하세요.
사내 시스템 연동이 필요하면 슬랙봇 개발을 고려하세요.
Webhook, Slash Command, Events, Bot Token (Scopes)을 기억하세요.
"반복적인 단순 작업"을 줄여 "더 중요한 일"에 집중하기 위함입니다.
작은 자동화부터 시작해서 점차 확장해 나가세요.
질문이 있으시면 편하게 말씀해 주세요!
감사합니다. 🙏