🚀 슬랙 업무 자동화:
워크플로와 봇 완벽 정복하기

반복 업무는 줄이고, 중요한 일에 집중하는 방법

📅 2025년 1월
💼 사내 교육 자료

📋 오늘 배울 내용 (Agenda)

  • Icebreaking: 우리는 왜 슬랙 자동화가 필요할까요?
  • Part 1. (No-Code) 슬랙 워크플로
    • 워크플로란?
    • 핵심 기능: '변수' 활용법
    • 실전 사례 1, 2, 3 (알림, 명령어, 이모지)
    • 워크플로의 한계
  • Part 2. (Pro-Code) 슬랙봇
    • 슬랙봇이란? (워크플로와의 차이)
    • 봇 제작 프로세스 및 4가지 핵심 기능
    • [FAQ] 봇 토큰 vs 유저 토큰
    • 실전 사례 1, 2, 3 (구글시트, 키워드, 양방향 상호작용)
  • Part 3. 요약 및 Q&A
    • 무엇을 사용해야 할까요? (Workflow vs. Bot)
2 / 32

🎯 학습 목표

🏁

워크플로 활용

코딩 없이 워크플로를 활용해 간단한 업무 자동화를 구현할 수 있습니다.

🤖

슬랙봇 이해

슬랙봇의 작동 원리와 핵심 기능을 이해하고, 제작 과정을 파악합니다.

💡

실전 사례

사내 실제 사례를 통해 업무에 바로 적용할 아이디어를 얻어갑니다.

효율성 향상

반복적인 단순 작업을 줄여 더 중요한 일에 집중할 수 있게 됩니다.

3 / 32

Part 1
슬랙 워크플로
(No-Code)

🏁 슬랙 워크플로란?

정의

코딩 지식 없이, 슬랙 내에서 반복적인 업무를 자동화하는 '레고 블록' 같은 기능입니다.

  • 누가 사용하나요? 개발자가 아니어도 누구나 만들 수 있습니다.
    • 기획자, 마케터, PM, 운영 담당자 등
  • 핵심 구성:
    • 트리거 (Trigger): 워크플로를 "시작"시키는 조건
      (예: 특정 시간, 이모지 클릭, 채널 입장)
    • 액션 (Action): "수행"할 동작
      (예: 메시지 보내기, 폼 전송, 구글시트 추가)
  • 위치: 슬랙 메뉴 > 도구 > 워크플로 빌더
4 / 32

🧩 워크플로의 핵심: '변수' 활용

'변수'란?

이전 단계의 정보를 담아 다음 단계로 전달하는 '데이터 보관함'입니다.

예시: 사용자가 폼에 입력한 '이름'을 채널 메시지에 "OOO님이 휴가를 신청했습니다."라고 표시할 때 사용.

활용 방법 (3단계)

1️⃣ 데이터 생성
(트리거)
2️⃣ 변수 삽입
(액션)
3️⃣ 메시지 전송
(결과)
Step 1: '폼 제출' 트리거에서 '이름' 입력란을 만듭니다.
Step 2: '메시지 보내기' 단계에서 '변수 삽입' 버튼을 클릭.
Step 3: '폼에서 응답한 사람', '이름' 입력값 등 원하는 변수를 선택하여 메시지 본문에 추가합니다.
5 / 32

💡 매주 알림 주는 워크플로

목표

매주 금요일 오후 4시, '주간보고' 채널에 리마인더 알림 보내기

작동 원리


예약된 시간
(매주 금 16:00)
📢
메시지 보내기
(#주간보고)

설정 방법

트리거: 예약된 날짜 및 시간
→ 반복: 매주 / 요일: 금요일 / 시간: 오후 4:00
액션: 메시지 보내기
→ 수신자: #주간보고 채널
→ 메시지: "🔔 주간보고서 마감 1시간 전입니다! 잊지 말고 제출해 주세요."
6 / 32

💡 명령어로 안내/버튼 제공

목표

/복지 명령어를 입력하면, 복지 혜택 안내와 관련 링크 버튼이 나오게 하기

작동 원리

⌨️
/복지 입력
(바로가기)
💬
DM 전송
(본인에게)
🔘
버튼 표시
(링크)

설정 방법

트리거: 바로 가기 (단축키 메뉴)
→ 바로 가기 이름: /복지
액션: 메시지 보내기
→ 수신자: (워크플로를 실행한 사람)에게만 DM으로 전송
→ 메시지: "복지 혜택 안내입니다. 원하시는 항목을 선택하세요."
→ 버튼 1: "휴가 규정 확인" (URL: 사내 규정 링크)
→ 버튼 2: "경조사비 신청" (URL: 신청 폼 링크)
7 / 32

💡 이모지 → 정보 수집 → 구글시트

목표

공지 메시지에 '✋' 이모지를 누르면 신청자 정보(이름, 이메일)를 구글시트에 자동 기록

작동 원리

✋ 이모지 클릭
📝 폼 전송 (DM)
📊 구글시트에 자동 기록

설정 방법

트리거: 이모지 반응
→ 특정 채널의 특정 메시지에 ✋ 이모지가 추가될 때
액션 1: 양식(폼) 보내기
→ 수신자: (이모지를 누른 사람)에게 DM
→ 폼 내용: 이름, 이메일, 부서 등
액션 2: Google 스프레드시트에 행 추가
→ 신청자 열 ← (변수) 이모지를 누른 사람
→ 이름 열 ← (변수) 폼에서 입력한 '이름'
→ 이메일 열 ← (변수) 폼에서 입력한 '이메일'
8 / 32

🚧 슬랙 워크플로의 한계

워크플로는 "정해진, 간단한" 자동화에 강력합니다. 하지만...

  • ❌ 복잡한 로직 불가
    • IF... ELSE... (만약 A이면 B, 아니면 C) 같은 조건 분기나 반복(Loop)이 어렵습니다.
  • ❌ 양방향 상호작용의 한계
    • 봇처럼 사용자와 대화를 주고받거나, 버튼 클릭 시 원본 메시지를 수정하는 등 세밀한 제어가 불가능합니다.
  • ❌ 제한된 연동
    • 구글시트, Jira 등 기본 연동 앱 외에 사내 DB나 복잡한 외부 API 연동은 불가능합니다.

Q. 더 복잡하고 유연한 자동화가 필요하다면?

A. ➡️ Part 2. 슬랙봇 (Pro-Code)이 필요합니다!

9 / 32

Part 2
슬랙봇
(Pro-Code)

💻 알아두면 좋은 기본 개념

슬랙봇을 이해하기 위해 필요한 3가지 핵심 개념

👤

클라이언트 (Client)

사용자가 보는 화면

웹 브라우저, 슬랙 앱 등 우리가 직접 사용하는 프로그램입니다.

예시: 슬랙 메신저 화면

🖥️

서버 (Server)

뒤에서 일하는 컴퓨터

요청을 받아서 처리하고 결과를 돌려주는 컴퓨터입니다. 24시간 켜져 있습니다.

예시: 슬랙봇 프로그램이 실행되는 곳

📊

데이터베이스 (Database)

정보를 저장하는 창고

데이터를 체계적으로 저장하고 필요할 때 꺼내 쓸 수 있게 해주는 시스템입니다.

예시: 구글시트, MySQL 등

🔗

이들의 관계

어떻게 연결되나요?

① 클라이언트가 서버에 요청 → ② 서버가 데이터베이스에서 정보 조회 → ③ 서버가 클라이언트에 결과 전송

예시: 투표 버튼 클릭 → 서버 처리 → 결과 업데이트

👤 클라이언트
(슬랙 화면)
🖥️ 서버
(봇 프로그램)
📊 데이터베이스
(구글시트 등)
9.5 / 32

🤖 슬랙봇이란?

정의

Slack API를 활용해 직접 개발하는 커스텀 애플리케이션입니다.

특징

💪

강력하고 유연함

워크플로보다 훨씬 강력하고 유연합니다.

🖥️

서버 필요

서버가 필요합니다.
(AWS, GCP 또는 사내 서버)

👨‍💻

코딩 필요

코딩이 필요합니다.
(Python, Node.js, Java...)

🔗

자유로운 연동

외부 서비스(사내 시스템, DB 등)와 자유로운 연동이 가능합니다.

10 / 32

💡 비개발자도 슬랙봇을 만들 수 있을까요?

네! 가능합니다! 🎉

세 가지 도구의 조합으로 서버와 데이터베이스 없이 슬랙봇을 만들 수 있습니다.

🤖

1. AI 활용 (코드 작성)

ChatGPT, Claude 등

"구글시트에서 체크박스 클릭하면 슬랙에 메시지 보내는 코드 작성해줘"
→ AI가 코드를 생성해줍니다!

장점: 코딩 몰라도 자연어로 요청 가능

🖥️

2. Google Apps Script (서버)

구글에서 제공하는 무료 서버

별도 서버 없이 구글 클라우드에서 24시간 실행
구글시트 메뉴에서 바로 접근 가능
설치나 설정 불필요

장점: 무료, 간편, 구글 서비스와 쉽게 연동

📊

3. 구글시트 (데이터베이스)

익숙한 스프레드시트 = 데이터베이스

복잡한 DB 대신 구글시트 사용
엑셀처럼 직관적으로 데이터 확인/수정
실시간 협업 가능

장점: 누구나 쉽게 관리, 시각적으로 확인

실제 사례

이 조합으로 만들어진 봇들

• Dinner Poll (투표 봇)
• Review Scrapper (리뷰 수집)
• Slack DM Sender (DM 발송)

모두 이 방식으로 만들어졌습니다!

비개발자의 슬랙봇 만들기 여정

💭 아이디어
(이런 봇 있으면 좋겠다)
🤖 AI에게 요청
(코드 작성)
📋 구글시트 + GAS
(붙여넣기)
✅ 완성!
(배포 & 사용)

💪 핵심 메시지

"개발자가 아니어도 AI + 구글 도구만으로 충분히 슬랙봇을 만들 수 있습니다!"

오늘 배운 케이스 스터디들이 바로 이 방식으로 만들어진 실제 사례입니다.

10.5 / 32

🛠️ 봇 만드는 법 (6단계)

1. [Slack] 앱 생성
api.slack.com > Your Apps > Create New App (From scratch)
2. [Slack] 기능 선택
만들고 싶은 봇의 유형에 따라 필요한 기능을 활성화합니다. (다음 슬라이드)
3. [Server] 로직 개발
선택한 기능을 처리할 서버 코드를 작성합니다.
4. [Slack] 권한(Scope) 설정
봇이 행동(메시지 쓰기, 파일 읽기 등)할 수 있도록 OAuth & Permissions에서 권한을 부여합니다.
5. [Slack] 앱 설치
워크스페이스에 봇을 설치하고 봇 유저 토큰(xoxb-...)을 발급받습니다.
6. [Server] 토큰 적용
발급받은 토큰을 서버 코드에 적용하여 연동을 완료합니다.
11 / 32

⚙️ 봇의 4가지 핵심 기능

봇이 "무엇을" 하느냐에 따라 필요한 기능(설정)이 다릅니다.

📨

1. Incoming Webhook

기능: 외부(내 서버)에서 슬랙 채널로 메시지를 보내기만 할 때 (단방향)

예시: 시스템 장애 알림, 배포 완료 알림

⌨️

2. Slash Commands

기능: 사용자가 /명령어를 입력하여 봇을 호출할 때

예시: /배포 [서비스명], /회의실 예약

👂

3. Event Subscriptions

기능: 봇이 채널의 이벤트를 항상 듣고(Listen) 반응할 때

예시: 특정 키워드 감지, 이모지 반응, 채널 입장 감지

🔑

4. Bot User Token

기능: 봇이 스스로 행동(메시지 쓰기, 읽기, 수정)하기 위한 만능 열쇠

필수: 위 2, 3번 기능을 사용하거나, 봇이 능동적으로 메시지를 보낼 때 반드시 필요

12 / 32

🕵️‍♀️ 봇 유저 토큰 vs 유저 토큰

구분 Bot User Token (봇 토큰) User Token (유저 토큰)
시작 문자 xoxb- xoxp-
주체 봇 (앱) 자신 봇을 설치/사용한 특정 유저
권한 봇에게 부여된 Scopes 만큼만 행동
(예: chat:write, reactions:read)
해당 유저가 가진 모든 권한을 위임받아 행동
(유저의 비공개 채널 접근, 유저 대신 글쓰기)
특징 사용자와 무관하게 봇이 독립적으로 작동 매우 강력하고 민감한 권한
용도 99%의 일반적인 봇 활동
(알림, 응답, 키워드 감지 등)
유저 개인을 대신하는 작업
(개인 캘린더 연동, 개인 DM 정리)

💡 결론

특별한 경우가 아니면 항상 봇 유저 토큰(xoxb-)을 사용해야 합니다.

13 / 32

📊 구글시트 업데이트 → 슬랙 알림

목표

특정 구글시트가 수정되면, 변경 내용을 슬랙 채널에 알림

필요 기능

Incoming Webhook (가장 간단) 또는 Bot Token (chat:write)

작동 원리 (Google Apps Script 활용)

📊 구글시트 수정
⚡ onEdit(e) 실행
📝 변경 정보 수집
📤 Webhook POST
💬 슬랙 알림
핵심: Google Apps Script의 onEdit 트리거와 UrlFetchApp.fetch()를 사용하여 슬랙에 자동 알림
14 / 32

📊 키워드/이모지 감지 → 데이터 전송

목표

#문의 채널에 '장애' 키워드가 포함되면 → '🚨' 이모지 달기 & #긴급대응 채널에 해당 내용 전송

필요 기능

Event Subscription + Bot Token (chat:write, reactions:write)

작동 원리 (서버 필요)

👤 "로그인 장애" 메시지
📡 서버로 이벤트 전송
🔍 "장애" 키워드 확인
🚨 이모지 추가
📢 #긴급대응 알림
핵심: 봇이 채널의 모든 메시지를 실시간으로 듣고(Listen), 특정 조건에 따라 자동으로 반응
15 / 32

📊 체크박스 → 양방향 상호작용

목표

① 구글시트 '승인' 체크박스 클릭 → ② 슬랙 채널에 '승인 요청' 글 + '확인' 버튼 전송 → ③ 관리자가 '확인' 버튼 클릭 → ④ 원본 글에 '확인자(@admin)' 태그 & 구글시트 '확인자' 셀에 이름 업데이트

필요 기능 (모든 기능!)

Bot Token, Event Subscription (버튼 클릭 감지), Google Apps Script, Google Sheets API

작동 원리 (개념도)

📊 체크박스 클릭 (onEdit)
💬 슬랙에 버튼 글 전송
👆 사용자 '확인' 버튼 클릭
📡 서버로 이벤트 전송
✏️ 메시지 수정 (chat.update)
📊 구글시트 업데이트
핵심: 슬랙과 구글시트가 실시간 양방향으로 연동되어, 버튼 클릭 하나로 모든 시스템이 자동 업데이트
16 / 32

🗳️ Case Study 1: Dinner Poll (투표 봇)

📌 프로젝트 개요

팀원들이 저녁 메뉴를 투표로 결정할 수 있는 슬랙 봇
구글시트에서 간단히 설정하면 슬랙에 투표가 자동 생성됩니다.

🎯

해결하려는 문제

• 매번 저녁 메뉴 결정할 때 대화가 길어짐
• 누가 뭘 선택했는지 파악 어려움
• 마감 시간 관리가 수동적

제공하는 해결책

• 버튼으로 간편하게 투표
• 실시간으로 결과 확인
• 자동 마감 처리

사용된 기술 스택

🛠️ 서버: Google Apps Script (무료 클라우드 서버)
📊 데이터베이스: 구글시트 (투표 설정 및 결과 저장)
🔑 슬랙 기능: Bot User Token (메시지 전송/수정), Event Subscription (버튼 클릭 감지)
🎨 UI: Block Kit (버튼, 카운터, 참여자 목록)

사용자 플로우

1️⃣ 관리자가 구글시트에 투표 정보 입력
2️⃣ 체크박스 클릭 → 슬랙 투표 생성
3️⃣ 팀원들이 버튼 클릭
4️⃣ 실시간 결과 업데이트
5️⃣ 마감 시간 자동 종료
17 / 32

🗳️ Dinner Poll - 작동 원리 상세

핵심 기능별 설명

1️⃣ onEdit 트리거 (투표 생성)

• 구글시트 "송부" 체크박스 체크 시 자동 실행
• 행 데이터 읽기 (제목, 선택지, 마감시간)
• pollId 생성으로 중복 방지
• Slack chat.postMessage API 호출

2️⃣ doPost 웹훅 (버튼 클릭 처리)

• 버튼 클릭 시 doPost 함수 호출
• LockService로 동시 접근 제어
• 구글시트에서 투표 결과 조회/업데이트
• Slack chat.update로 실시간 업데이트

3️⃣ checkDeadlines 트리거

• 시간 기반 트리거 (주기적 실행)
• 모든 투표의 마감 시간 확인
• 버튼 제거 및 "🔒 마감" 표시
• "[마감됨]" 태그로 재처리 방지

🔍 사용된 슬랙 API

chat.postMessage: 새 투표 메시지
chat.update: 투표 결과 실시간 업데이트
chat.postEphemeral: 개인 에러 메시지

데이터 흐름 다이어그램

📊
구글시트
(설정 & 결과)
🖥️
GAS
(로직 처리)
💬
Slack
(UI & 상호작용)
18 / 32

🗳️ Dinner Poll - 핵심 포인트 & 배운 점 (1/2)

핵심 코드 개념

📝

변수 활용

투표 옵션을 변수로 받아서 동적으로 버튼 생성
구글시트의 각 행 = 하나의 투표

🔄

양방향 상호작용

버튼 클릭 → 서버 처리 → 원본 메시지 수정
워크플로로는 불가능!

🔒

동시성 제어

LockService로 여러 사람이 동시에 투표해도 데이터 충돌 없음

트리거 활용

onEdit: 즉시 실행
checkDeadlines: 주기적 실행

구글시트 데이터 구조

채널ID 날짜 제목 선택지1 선택지2 마감시간 송부☑️ 메시지TS 투표결과(JSON)
C01ABC... 2025-01-15 오늘 저녁 뭐 먹을까요? 치킨 피자 18:00 '1234.5678 {"치킨": ["@user1"], "피자": ["@user2"]}
19 / 32

🗳️ Dinner Poll - 핵심 포인트 & 배운 점 (2/2)

이 사례에서 배운 핵심 개념

✅ Event Subscription: 버튼 클릭 같은 이벤트를 감지하는 방법
✅ Block Kit: 슬랙 메시지에 버튼, 이미지 등 풍부한 UI 요소 추가
✅ 메시지 수정: 새 메시지를 보내는 대신 기존 메시지를 업데이트하는 방법
✅ 구글시트 = DB: 복잡한 데이터베이스 없이도 충분히 작동

💡 핵심 인사이트

"단 200줄의 코드로 실시간 투표 시스템을 구축할 수 있습니다.
서버 비용 0원, 데이터베이스 설정 0분!"

19.5 / 32

📦 Case Study 2: 작가냥 발주 자동화

📌 프로젝트 개요

매일 전날의 주문 데이터를 자동으로 수집하여 구글시트에 저장하고
슬랙으로 알림을 보내는 완전 자동화 시스템

🎯

해결하려는 문제

• 매일 아침 수동으로 Redash 접속
• 데이터 복사 → 구글시트 붙여넣기
• 담당자들에게 일일이 공유
• 반복적이고 시간 낭비

제공하는 해결책

• 매일 오전 8시 자동 실행
• Redash → 구글시트 자동 저장
• 슬랙 자동 알림
• 완전 무인 자동화

사용된 기술 스택

🛠️ 자동화 도구: n8n (노코드/로우코드 워크플로 자동화 도구)
📊 데이터 소스: Redash (사내 데이터 분석 도구)
💾 저장소: 구글시트 (수집된 데이터 저장)
📢 알림: Slack API (완료 알림 전송)
🔑 특징: 코드 없음! 비주얼 드래그 앤 드롭으로 구축
20 / 32

📦 작가냥 발주 - 작동 원리 상세

n8n 노드별 역할

1️⃣ Schedule Trigger

• 매일 오전 8시 자동 시작
• 사람 없어도 자동 실행
• 워크플로 시작점

2️⃣ JavaScript (날짜 생성)

• 오늘 날짜 - 1일 = 어제
• YYYY-MM-DD 형식 포맷
• 다음 노드로 전달

3️⃣ HTTP (Redash API 호출)

• Redash 쿼리 실행 요청
• POST → job_id 받아옴
• 처리 진행 중 ID

4️⃣ Wait Node (대기)

• Redash 데이터 처리 대기
• 일정 시간 후 다음 단계
• 결과 준비 확인

5️⃣ HTTP (결과 조회)

• job_id로 결과 조회
• JSON 형태 데이터
• 배열 형태 (여러 행)

6️⃣ Code (데이터 변환)

• JSON 배열 개별 분리
• 각 행 별도 데이터화
• 구글시트용 형태 변환

7️⃣ Google Sheets (저장)

• 데이터 자동 저장
• appendOrUpdate 모드
• user_id 기준 중복 확인

8️⃣ Slack (알림)

• 채널에 완료 알림
• "○○ 일자 ○건 완료"
• 구글시트 링크 포함

🔍 왜 n8n을 사용했나요?

비주얼 인터페이스 (코드 없이 드래그 앤 드롭) | 다양한 통합 (Redash, Slack, Sheets 지원) | 에러 처리 (실패 시 재시도) | 디버깅 쉬움 (각 단계별 데이터 확인)

21 / 32

📦 작가냥 발주 - 핵심 포인트 & 배운 점 (1/2)

이 사례의 특별한 점

🎨

노코드/로우코드

코드를 거의 쓰지 않음
비주얼 워크플로로 구축
JavaScript는 날짜 계산용으로만 사용

🔄

여러 시스템 통합

Redash + 구글시트 + 슬랙
각각 별도 로그인/API 필요
n8n이 모두 연결

완전 자동화

사람 개입 0%
매일 자동 실행
에러 발생 시에만 확인

💰

비용 효율

매일 10분 절약 = 연간 40시간
사람의 실수 방지
서버 비용 최소화

Redash → n8n → Google Sheets 흐름

📊 Redash
(데이터 분석 도구)
SQL 쿼리 실행
🔄 n8n
(자동화 도구)
데이터 변환 & 라우팅
📊 구글시트
(저장소)
영구 보관 & 협업
22 / 32

📦 작가냥 발주 - 핵심 포인트 & 배운 점 (2/2)

이 사례에서 배운 핵심 개념

✅ 워크플로 자동화: 여러 단계를 순차적으로 자동 실행하는 방법
✅ API 통합: 서로 다른 서비스들을 연결하는 방법 (Redash API, Google Sheets API, Slack API)
✅ 비동기 처리: 시간이 걸리는 작업(Redash 쿼리)을 기다리는 방법
✅ 데이터 변환: API 응답을 다른 시스템이 이해할 수 있는 형태로 변환

💡 핵심 인사이트

"코드를 직접 작성하지 않아도 n8n 같은 노코드 도구로
복잡한 업무 자동화가 가능합니다!
중요한 것은 '어떤 흐름으로 동작해야 하는지' 이해하는 것"

22.5 / 32

⭐ Case Study 3: App Review Scrapper

📌 프로젝트 개요

구글 플레이스토어와 애플 앱스토어의 앱 리뷰를 자동으로 수집하여
구글시트에 저장하고 슬랙으로 실시간 알림을 보내는 모니터링 시스템

🎯

해결하려는 문제

• 매일 앱스토어 접속해서 리뷰 확인
• 신규 리뷰 놓치기 쉬움
• 여러 앱 관리 시 더욱 복잡
• 개발자 답변 관리 어려움

제공하는 해결책

• 일일 자동 리뷰 수집
• 슬랙으로 즉시 알림
• 개발자 답변을 스레드로 연결
• 중복 방지 & 이력 관리

사용된 기술 스택

🛠️ 서버: Google Apps Script (24시간 실행)
📊 데이터베이스: 구글시트 (리뷰 저장, Slack_Map으로 중복 관리)
🔍 크롤링: Playwright (구글 플레이) + XML 파싱 (애플 RSS)
🔑 슬랙 기능: Bot Token (메시지 전송), Thread 댓글 (개발자 답변)
⏰ 실행: 시간 기반 트리거 (매일 특정 시간)
23 / 32

⭐ Review Scrapper - 작동 원리 상세

핵심 기능별 설명

1️⃣ triggerReviewScrapers

• App_List 시트에서 앱 목록 읽기
• storeType 확인 (google/apple)
• 스토어별 수집 함수 호출
• 시간 기반 트리거 (매일 1회)

2️⃣ 구글 플레이 (Playwright)

• 외부 Playwright 서버 HTTP POST
• appId, appName 전달
• 브라우저로 실제 페이지 크롤링
• JSON으로 데이터 수신

3️⃣ 애플 앱스토어 (XML RSS)

• 애플 공식 RSS 피드 사용
• XmlService로 파싱
• 최근 10일 리뷰 필터링
• 최대 50개 제공

4️⃣ 중복 방지 로직

• Reviews: reviewId로 중복 확인
• Slack_Map: 포스팅 이력 관리
• Set 자료구조로 빠른 조회
• 행 삭제해도 재포스팅 안됨

5️⃣ 슬랙 포스팅

chat.postMessage 개별 포스팅
• 멀티라인 인용구(>>>) 사용
• 메시지 TS 저장 (스레드용)
• 개발자 답변은 스레드 댓글로

6️⃣ Recency Gating (필터링)

• LOOKBACK_DAYS (10일) 설정
• 오래된 리뷰 스킵
• 단, 최근 답변 있으면 포함
• MAX 30개로 과부하 방지

🔍 사용된 주요 API

UrlFetchApp.fetch() HTTP 요청 | XmlService.parse() 애플 RSS XML | SpreadsheetApp 구글시트 | chat.postMessage 슬랙 메시지

24 / 32

⭐ Review Scrapper - 핵심 포인트 & 배운 점 (1/2)

데이터 구조 (3개 시트 활용)

📋

1. App_List 시트

수집할 앱 목록 관리
컬럼: App ID | App Name
예: com.example.app | 예제 앱 (구글 플레이)
예: id123456789 | 예제 앱 (애플 앱스토어)

📊

2. Reviews 시트

수집된 모든 리뷰 저장
컬럼: reviewId | App ID | App Name | author | date | rating | content | timestamp
개발자 답변도 별도 행으로 저장 (reviewId-dev)

🔗

3. Slack_Map 시트

슬랙 포스팅 이력 관리
컬럼: reviewId | ts (타임스탬프) | thread
중복 포스팅 방지 핵심 데이터

Thread (스레드) 활용

💬 부모 메시지: 원본 리뷰 (저장된 ts: 1234567890.123456)
↓ thread_ts 참조
💬 스레드 댓글: 개발자 답변 (부모의 ts를 thread_ts로 사용)

→ 리뷰와 답변이 하나의 스레드로 묶여서 보기 편함!

25 / 32

⭐ Review Scrapper - 핵심 포인트 & 배운 점 (2/2)

이 사례에서 배운 핵심 개념

✅ 외부 API 연동: Playwright 서버처럼 외부 서비스를 호출하는 방법
✅ XML 파싱: 웹에서 제공하는 다양한 데이터 형식 처리
✅ Thread 댓글: 슬랙 메시지를 스레드로 연결하여 맥락 유지
✅ 데이터 정규화: timestamp 소수점 손실 방지, 문자열 변환 등 세심한 데이터 관리
✅ 멀티 스토어 지원: 구글/애플 각각 다른 수집 방법을 하나의 시스템으로 통합

🔍 공통점 발견!

세 가지 케이스 모두 Google Apps Script (서버 역할)구글시트 (데이터베이스 역할)를 활용했습니다.
즉, 별도 서버나 DB 없이 구글 도구만으로 충분히 구축 가능합니다!

💡 핵심 인사이트

"961줄의 코드지만, 대부분은 데이터 처리 로직입니다.
핵심 개념은 '외부 데이터 수집 → 저장 → 알림'이라는 단순한 흐름!
복잡해 보여도 한 단계씩 나누면 이해할 수 있습니다."

25.5 / 32

Part 3
요약 및 Q&A

🎯 그래서, 둘 중 뭘 써야 할까요?

구분 🏁 슬랙 워크플로 (No-Code) 🤖 슬랙봇 (Pro-Code)
누가 만드나? 누구나
(기획자, 마케터, PM...)
개발자
(혹은 개발 지식이 있는 분)
핵심 기능 정해진 트리거 + 간단한 액션
(폼, 알림)
거의 모든 것
(API 연동, 복잡한 로직)
서버 필요 없음
(Slack 내장)
필수
(AWS, GCP, 사내 서버 등)
주요 용도 간단한 알림, 양식 수집,
정해진 공지
실시간 상호작용, 외부 서비스 연동,
사내 시스템 통합
예시 /휴가신청 폼,
주간 리마인더
/배포, 키워드 감지 봇,
실시간 장애 알림
26 / 32

📚 핵심 요약 (Takeaways)

1️⃣

간단한 자동화

코딩 없는 워크플로 빌더로 지금 당장 시작하세요.

2️⃣

복잡한 상호작용

사내 시스템 연동이 필요하면 슬랙봇 개발을 고려하세요.

3️⃣

4가지 핵심 기능

Webhook, Slash Command, Events, Bot Token (Scopes)을 기억하세요.

4️⃣

자동화의 목적

"반복적인 단순 작업"을 줄여 "더 중요한 일"에 집중하기 위함입니다.

💡 시작이 반입니다!

작은 자동화부터 시작해서 점차 확장해 나가세요.

27 / 32

❓ Q&A

질문이 있으시면 편하게 말씀해 주세요!

감사합니다. 🙏

28 / 32
⌨️ 화살표 키(← →) 또는 스크롤로 슬라이드를 이동하세요