간단한 자동화로 Google Forms 응답 Slack에서 받아보기

간단한 자동화로 Google Forms 응답 Slack에서 받아보기

Aug 12, 2024

양식으로 제출된 응답, 슬랙에서 무료로 연동하기

업무를 진행하다 보면 양식을 제출받을 일이 많이 있습니다.

인식 조사와 같은 목적으로 설문조사를 할 때 뿐만 아니라 사내 구성원들을 대상으로 필요한 정보(의견, 사진, 후기 등)를 일괄 제출받을 때, 더 나아가 고객에게 제품과 관련된 피드백을 받을 때와 같은 다양한 업무 상황에서 양식 제출 도구의 힘을 빌리게 되죠.

양식 제출 도구를 사용해 업무를 진행할 때, 구매 요청이나 문의 답변과 같이 응답이 제출되는 순간 바로 알아야 제대로 업무를 처리할 수 있는 상황도 종종 있습니다. 이런 상황에서는 응답이 제출되는 순간 슬랙, 팀즈, 잔디와 같이 늘상 사용하는 업무 메신저로 바로 메시지가 온다면 참 좋을 텐데요.

Zapier과 같은 자동화 도구를 사용하면 코딩 없이도 자동화할 수 있지만, 무료 사용량을 초과하면 비용이 발생하죠. 비용 걱정 없이 자동화하려면 어떻게 할 수 있을까요?

이 글에서는 구글 폼으로 제출되는 응답을 업무 메신저로 연동하는 방법에 대해 소개합니다.

웹훅(Webhook) 활용해 구글 폼 응답 제출 알림 슬랙에서 받아보기

현재 양식을 제출받기 위해 가장 범용적으로 사용되고 있는 도구는 구글 폼(Google Forms)인데요, 구글 앱스 스크립트라는 자동화 플랫폼을 사용하면, 무료로 구글 폼 응답을 업무 메신저로 연동할 수 있어요.

이 글에서는 Slack을 기준으로 설명하고 있으나, 팀즈나 잔디와 같은 다른 메신저에서도 동일한 방법으로 적용할 수 있어요.

웹훅(혹은 웹후크, Webhook)이란 간단히 말해 필요한 순간에 실시간으로 알림을 받을 수 있는 기능입니다. 각 업무 메신저에서 지원하고 있는 웹훅 연동을 활용해 이번 기능을 만들어볼 거예요.

구글 폼 응답 제출 시 Slack으로 알려주는 슬랙 봇 만들기

Step 1. 슬랙 알림 봇 만들기

가장 먼저 응답이 접수되었을 때 알림을 발송할 슬랙 앱을 만들어야 해요. 이미 슬랙 측에서 만들어 놓은 Incoming Webhooks 앱을 사용해도 무방하지만, 앱을 새로 만들어서 설정하는 과정도 어렵지 않아요. 또 새로 만들면, 하나의 앱으로 여러 개의 웹훅을 활용할 수 있어요.

📌 https://api.slack.com/apps 링크로 접속하면 나타나는 페이지에서 Create an App 버튼을 눌러주세요.

📌 Create an app 창이 나타나면 From scratch를 선택하고, 앱 이름 입력 - 앱이 소속될 워크스페이스를 지정하면 앱이 생성돼요.

📌 좌측의 App Home 메뉴를 선택하고, Edit 버튼을 눌러 슬랙 앱의 이름을 설정해 주세요.

📌 좌측의 Incoming Webhooks 메뉴를 선택해 나타나는 창에서 토글을 On으로 바꾸어 웹훅 사용을 활성화하고, Add New Webhook to Workspace 버튼을 눌러 웹훅을 추가할 수 있어요.

📌 앱이 메시지를 보낼 채널을 선택하고 허용 버튼을 누르면 웹훅 URL이 생성되는데요, 이 URL을 사용할 거예요.

💡 이 화면에서 ③, ④의 과정을 반복해 Webhook을 동시에 여러 개 만들 수도 있어요. 지금 만든 알림 앱 하나로 여러 개의 구글 폼 응답 제출 알림을 자동화할 수 있어요.

💡 번외로, 왼쪽의 Collborators 메뉴에서 공동 작업자를 지정해 두어야 이 슬랙 앱을 만든 사람이 퇴사했을 때에도 앱이 비활성화되지 않아요. (비활성화되지 않을 계정을 공동 작업자로 지정해 주세요)

Step 2. Apps Script로 구글 폼과 슬랙 알림 봇 연동하기

이제 구글 폼에서 응답이 제출되면 위에서 만든 슬랙의 웹훅 URL로 데이터를 전송할 거예요.
구글 폼에 응답할 수 있는 질문 항목을 1개 이상 만들고 진행해 주세요.

📌 구글 폼의 응답 탭으로 들어와, Sheets에서 보기 버튼을 눌러 응답이 기록되는 구글 시트로 이동해주세요.
확장 프로그램 탭에서 Apps Script 메뉴를 클릭하면 나오는 화면으로 이동해주세요.

다음와 같이 Apps Script 편집기 화면이 나올 텐데요, 아래에 드리는 20줄을 복사-붙여넣기만 하면 돼요.
겁먹지 마세요! 저희가 코드에서 바꿀 부분은 딱 두 부분입니다.

📌 기본으로 들어 있는 myFunction() 부분을 지우고, 대신 다음 코드를 복사해 붙여넣어 주세요.

function onSubmit(e) {
  // Slack Webhook URL
  // ① 웹훅 URL 삽입
  var webhookUrl = "https://hooks.slack.com/services/T0000000000/B0000000000/ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  // 응답 데이터 가져오기
  var responses = e.values;
  
  // 메시지 구성 (필요에 따라 수정 가능)
  // ② 슬랙 메시지로 보낼 포맷에 맞게 메시지 구성, '\n'은 줄바꿈
  var message = `*[첫 번째 항목 응답]*\n${responses[1]}\n<https://google.com|구글 웹사이트>`;

  // Slack으로 메시지 전송
  var payload = {
    "text": message
  };

  var options = {
    "method": "post",
    "contentType": "application/json",
    "payload": JSON.stringify(payload)
  };

  UrlFetchApp.fetch(webhookUrl, options);
}

📌 ①으로 표시한 webhookUrl 부분의 URL을 Step 1.에서 만들었던 나의 웹훅 URL로 바꾸어 주세요. var webhookUrl = "내 URL"; 에서 쌍따옴표가 잘 닫히도록 유의해 주세요.

📌 ②로 표시된 부분은 Step 3에서 수정할 예정이고, 우선 연동이 잘 되었는지 먼저 확인해 볼 거예요. ③의 저장/실행을 순서대로 눌러 주세요. 권한 검토 창에서 요청하는 권한을 모두 승인해 주세요.
아래와 같은 오류가 나타나면 성공입니다. 방금 실행한 순간에 제출된 구글 폼 응답이 없어 발생한 오류예요.

📌 ④의 트리거 탭으로 들어가 주세요. 트리거 추가 버튼을 누르고, 아래와 같이 설정한 후 저장을 눌러 주세요.
마찬가지로 요청하는 권한을 승인해 주세요. 응답 제출 시 작성한 동작을 수행하는 데 필요한 권한이에요.

🙌 이제 거의 다 왔어요!

📌 방금 Apps Script를 작성한 구글 폼 양식에서 응답을 하나 제출해 보세요.
Step 1. 에서 지정한 슬랙 채널로 아래랑 비슷한 응답이 잘 도착하나요?

잘 온다면, 이제 슬랙으로 오는 메시지 형식만 지정해 주면 완료예요.

잘 오지 않는다면, 위 단계를 다시 확인하면서 잘못한 부분이 있는지 확인하고, 다시 진행해 주세요.

Step 3. 발송되는 슬랙 메시지 형식 지정하기 (슬랙 마크다운)

📌  아까 Apps Script 편집기에서 ② 부분을 규칙에 맞게 고쳐서, 슬랙으로 발송되는 메시지를 설정할거예요.

${response[1]} 의 숫자를 바꾸어, 구글 폼의 몇 번째 질문에 대한 응답을 가져올지 정할 수 있어요. 예를 들어 ${response[2]}는 두 번째 항목에 대한 응답, ${response[3]}는 세 번째 항목에 대한 응답… 이런 식으로요.
이때 변경하는 숫자는, 가져오고 싶은 응답의 구글 스프레드시트 상 열(column) 숫자를 입력해주세요!

Slack 메시지는 마크다운을 지원해요. 기본적인 Slack용 마크다운 규칙은 아래와 같아요.

  • \n은 줄바꿈

  • ** 사이 텍스트는 Bold 처리

  • ~~ 사이 텍스트는 -취소선-처리-

  • __ 사이 텍스트는 기울임 처리

  • ``사이 텍스트는 코드 처리

  • <https://를 포함한 URL|링크를 걸 텍스트> 으로 URL 링크

보다 복잡한 마크다운 양식이 필요하다면, Slack 공식 문서(링크)를 참고해 주세요.

기존에 작성한 ② 부분의 코드가 다음과 같았죠? `*[첫 번째 항목 응답]*\n${responses[1]}\n<https://google.com|구글 웹사이트>`

제가 만든 구글 폼에서 제출한 첫 번째 질문에 대한 응답이 옵션 1 이었기 때문에, 다음과 같은 메시지가 슬랙으로 발송되었어요.

위 규칙을 이용해 Apps Script 편집기에서 ② 부분을 자유롭게 구성해 보세요.

var message = `*[이름]*\n${responses[1]}\n\n*[연락처]*\n${responses[2]}\n\n<${responses[3]}|웹사이트 주소>`;

Apps Script 편집기에서 코드를 수정하셨다면, 잊지 말고 저장해 주세요!
저장까지 하셨다면, 이제 모든 단계가 끝났어요.
구글 폼 양식으로 제출되는 응답이 Slack 채널로 전송될 거예요.

🎉 축하드려요!
이제 구글 폼 응답이 제출되면 슬랙으로 메시지가 발송될 수 있도록 자동화하는 과정을 익히셨어요.

어려운 부분은 없으셨나요?
코드가 살짝 포함되어 어렵게 느껴지셨을 수도 있는데, 천천히 따라하면 금방 진행할 수 있을 거예요.

아기고래

소통을 통해 더 행복한 회사를 만들고자 합니다.

서로를 인식하고 표현하는 것을 도와 구성원들이 일을 더, 지속적으로 잘할 수 있게 돕습니다.

아기고래

소통을 통해 더 행복한 회사를 만들고자 합니다.

서로를 인식하고 표현하는 것을 도와 구성원들이 일을 더, 지속적으로 잘할 수 있게 돕습니다.

아기고래

소통을 통해 더 행복한 회사를 만들고자 합니다.

서로를 인식하고 표현하는 것을 도와

구성원들이 일을 더, 지속적으로 잘할 수 있게 돕습니다.

같이 읽으면 좋을 컨텐츠

소통의 파도로 성장하는 조직을 만들어요

소통의 파도로

성장하는 조직을 만들어요

소통의 파도로 성장하는 조직을 만들어요

Copyright © 2024 HMBZ.
All rights reserved.

Backed by

(주)허밍버즈 (HMBZ Inc.)
사업자등록번호: 894-87-03169 | 대표: 유시원
통신판매업신고번호: 2024-서울강남-02707
주소: 서울시 강남구 테헤란로 217 오렌지플래닛 2F
이메일: hello@babywhale.io

이용약관 | 개인정보처리방침

Copyright © 2024 HMBZ.
All rights reserved.

(주)허밍버즈 (HMBZ Inc.)
사업자등록번호: 894-87-03169 | 대표: 유시원
통신판매업신고번호: 2024-서울강남-02707
주소: 서울시 강남구 테헤란로 217 오렌지플래닛 2F
이메일: hello@babywhale.io

이용약관 | 개인정보처리방침

Backed by

Copyright © 2024 HMBZ.
All rights reserved.

Backed by

(주)허밍버즈 (HMBZ Inc.)
사업자등록번호: 894-87-03169 | 대표: 유시원
통신판매업신고번호: 2024-서울강남-02707
주소: 서울시 강남구 테헤란로 217 오렌지플래닛 2F
이메일: hello@babywhale.io

이용약관 | 개인정보처리방침

Copyright © 2024 HMBZ.
All rights reserved.

Backed by

(주)허밍버즈 (HMBZ Inc.)
사업자등록번호: 894-87-03169 | 대표: 유시원
통신판매업신고번호: 2024-서울강남-02707
주소: 서울시 강남구 테헤란로 217 오렌지플래닛 2F
이메일: hello@babywhale.io

이용약관 | 개인정보처리방침

아기고래

소통을 통해 더 행복한 회사를 만들고자 합니다.

서로를 인식하고 표현하는 것을 도와 구성원들이 일을 더, 지속적으로 잘할 수 있게 돕습니다.

소통의 파도로 성장하는 조직을 만들어요

소통의 파도로 성장하는 조직을 만들어요