brunch

매거진 이슈잇슈

You can make anything
by writing

C.S.Lewis

by 코코 Apr 15. 2023

자동화 끝판왕 슬랙봇 만들기(2)

슬랙 DM 메시지 사용자 응답 버튼을 구글스프레드시트에 자동 기록하기

슬랙봇을 활용하여 워크스페이스에 메시지에 발송하고 버튼 혹은 부수적인 피드백을 통해 응답을 구글스프레드시트에 기록하면 여러가지 업무 처리를 효율적으로 개선할 수 있다.



나는 주로 HR업무를 하면서 일부 대상자에게 업무 관련 리마인드 메시지를 발송하고 그에 대한 승인 여부나 확인 여부에 대한 피드백을 응답하여 구글스프레드시트에 저장하는 방법 등으로 활용하고 있다. 이 방법만 알면 승인여부, 선호 날짜 선택, 안내 링크로 이동 등 버튼을 활용한 업무 효율은 무궁무진할 것 같다. 꼭 한 번 시도해보는 것을 강력 추천한다.



준비물 : 구글스프레드시트, 슬랙



각 인원 별로 각각의 DM을 발송하여 개별 사용자의 응답을 다시 구글스프레드시트로 기록하도록 할 예정이다. 이전 포스팅에서는 구글스프레드시트의 데이터를 활용하여 각각의 채널로 알림을 발송했었는데(https://brunch.co.kr/@cocosociety/7) 이번엔 채널이 아닌 DM발송 + 발송한 메시지 버튼에 사용자가 응답한 결과를 다시 시트로 반영하는 양방향 커뮤니케이션을 만들어볼 예정.




1. 구글스프레드시트 준비

사용자별로 이름, 슬랙 ID 승인여부를 표기해줄 시트를 준비해준다

(각 사용자별 슬랙ID는 관리자에게 명단을 요청하여 정리한 뒤 VLookup으로 가지고 오면 가장 편리하다)



슬랙ID는 각 프로필 섹션의 메뉴 버튼 최하단 Copy member ID를 클릭






2. 슬랙 봇 셋팅하기

슬랙 봇을 설정해줄 차례이다.

지난번 슬랙봇 셋팅과 거의 동일하고 상호작용을 위한 약간의 설정만 다르다







2-1) https://api.slack.com/apps 슬랙 API 페이지에서 오른쪽 상단 Create an app을 클릭

- From scartch를 클릭하여 수동으로 설정하기로 하자





2-2) 이름은 테스트봇으로 설정해주었고 워크스페이스는 알림을 발송할 워크스페이스로 설정!

Create App클릭!





2-3) 좌측 OAuth&Permissions > 하단 Scopes > Add an OAuth Scope를 클릭

chat:write와 im:write 권한을 추가해준다. 이 과정은 봇에게 권한을 주는 것인데 봇으로서 채팅을 쓸 수 있게 해주는 권한과 DM발송을 위한 권한에 해당한다.




2-4) 좌측 App Home > Edit 클릭 후 이름과 username을 작성한 뒤 Save를 클릭!

봇이름은 한글, 영문 상관 없고 Default username은 꼭 영문으로 작성해야한다!





2-5) 좌측 Install App > Install to Workspace를 클릭한 뒤

Allow를 클릭해준다. 이건 워크스페이스에 봇 앱을 설치해주는 과정이다





2-6) 결과적으로 봇 고유의 토큰 값이 생성되었는데 이 토큰 값은 매우 소중한 값이니 메모장에 고이고이 모셔두어야한다.(외부 유출 절대 금지!)





3. 코드 작성하기(구글 Apps Script)

시트도 만들었고 봇도 생성했으니 이제 구글시트에서 Apps Script를 활용하여 봇에게 메시지를 발송하고 응답받는 코드를 작성해줄 차례이다. 간단하고 어렵지 않으니 주의 깊게 따라오면 된다.




3-1) 시트를 가지고 와서 변수로 저장해준다

시트 이름을 활용해 변수로 저장하고 효율을 위한 마지막행을 변수로 기록한다






3-2) 메시지를 발송하는 부분을 코드로 구현해준다

- for문을 통해 각각의 맴버들의 ID로 발송해준다

- attachments 변수에 버튼 메소드를 구현하여 메시지에 실어 발송

- 각 버튼에는 approve, 승인 등 우리가 알아볼 수 있도록 표시를 해준다







3-3) 버튼을 클릭했을 때 실행될 doPost(e)함수 구현부분

doPost는 Apps Script 공통 활용 함수이다. 어떤 요청이 들어와도 doPost 함수를 통해 그 파라미터를 받아올 수 있다 이 경우에는 슬랙에서 버튼을 클릭했을 때 요청하는 요청값을 doPost함수를 통해 받아 처리할 수 있다





3-4) 버튼을 클릭했을 때 해당 사용자가 어떤 버튼을 클릭했는지 확인하여 기록해주는 함수 구현 부분

setValue함수를 이용하여 해당 사용자 옆에 바로 어떤 버튼을 눌렀는지 기록한다.











4. 웹앱으로 배포하기

코드 작성이 모두 끝나고 우리가 작성한 Apps Script를 앱으로 배포하여 슬랙이 요청을 날릴 수 있도록 연결해야하는 작업이 필요하다. 이 부분은 정말 간단하다




4-1) 오른쪽 상단 배포 > 새배포를 클릭





4-2) 설정 > 웹앱을 선택, 모든 사용자로 설정을 바꿔준 다음 배포를 클릭한다







4-3) 배포가 완료되면 웹앱 URL이 등장한다. 이것도 매우매우 소중한 값이니 고이고이 복사해두기로 한다.








4-4) Interactivity & Shortcuts > On > Request URL에 고이고이 복사한 주소를 붙여넣어주고 저장을 클릭

이 부분은 상호작용 버튼이나 숏컷, 단축키 등을 활용할 수 있는 api 설정 부분이다 향후 활용할 부분이 많으니 기억해두면 좋다






5. 테스트

5-1) 실행버튼을 클릭해보자






승인 요청 메시지가 발송되었다.

이름이 반영되어 메시지가 발송된 모습을 볼 수 있다. 승인/반려를 선택할 수 있는 버튼도 담겼다





승인버튼을 누르면 accept 되었다는 문구로 메시지가 교체되고

반려버튼을 누르면 reject되었다는 문구로 메시지가 각각의 응답에 맞게 교체된다





5-2) 시트에도 해당 아이디 옆에 해당 응답이 기록된 모습을 볼 수 있다(성공)







각각의 메시지에 버튼을 담아 그 반응을 다시 시트로 기록하는 상호작용 슬랙봇을 구현해보았다

이런 메시지로 수백명의 사용자 데이터를 자동으로 기록하고 처리할 수 있는 시스템을 얼마든지 구축할 수 있다. 다음번에는 에러 처리와 예외 처리를 배워볼 예정이다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari