Blog Archive

레이블이 automation인 게시물을 표시합니다. 모든 게시물 표시
레이블이 automation인 게시물을 표시합니다. 모든 게시물 표시

2023-10-25

Airtable 자동화 예시: 내일 이벤트를 영업일 하루 전에 자동으로 안내

요즘 많은 노코드 툴들이 그러하듯이, 에어테이블(Airtable)에도 강력한 자동화(automations) 기능이 있습니다. 즉, 여러 앱들간의 프로세스를 엮어주는 재피어(Zapier)메이크(Make) 등을 쓰지 않아도, 상당한 수준의 워크플로우 자동화를 구축할 수 있습니다. 저의 개인적인 경험으로는 재피어나 메이크는 트리거(trigger)나 액션(action)을 정의할 때, 앱 내부의 동작을 세부적으로 정의하는 데에는 좀 한계가 있었습니다.

오늘은 아주 초보적인 자동화를 예시로 소개합니다. 예전에 다루었던 행사 운영 관리 베이스에 간단한 자동화를 얹어보겠습니다. 행사 운영 관리 베이스에는 매일 이벤트(교육, 행사, 모임 등)가 있고, 이벤트에는 담당 강사가 있습니다. 강사는 별도의 테이블에 연결된 Linked records 필드이고, 강사 이메일은 Lookup 필드입니다.

강사들은 조직 내부 구성원이 아니므로, 이벤트를 까먹지 않고 준비하도록 별도의 안내를 보내려고 합니다. 10일 전 안내, 3일 전 안내, 하루 전 안내 등 필요한 시기에 안내를 메일이나 문자로 보내주면 좋겠지요. 이번 예시에서는 하루 전에 자동 안내 메일을 보내봅니다.

자동화할 작업 정의 및 시작하기

무엇을 자동화할 것인지 명확히 하는 게 좋겠죠. 날마다 있는 행사에서 일일이 안내 메일을 보내기 어려우니, 정확히 하루 전에 행사 담당 강사에게 자동으로 행사 안내 메일을 보내기로 합니다. 에어테이블에서 자동화 시작은, 화면 왼쪽 위에 베이스 이름 옆에 [Automations]를 누르면 시작합니다. 참고로, [Data]는 기본적으로 테이블과 컬럼을 만들고, 데이터를 추가하는 곳이고, [Interfaces]는 데이터 시각화 툴입니다.

Airtable 화면 위쪽에 Automations를 선택하면 자동화 정의를 시작합니다.
에어테이블 화면의 왼쪽 위에, 베이스 이름 옆에서, Automations를 선택해서 자동화 화면으로 들어갑니다.

트리거(trigger) 설정

가장 간단한 자동화는 트리거 하나와 액션 하나로 구성됩니다.

트리거는 자동화를 일으키는 조건입니다. "만약 행사가 다음 날 있으면, 안내 메일을 보내라!"라는 자동화에서, "만약 행사가 다음 날 있으면"이라는 것이 바로 트리거입니다.

에어테이블 트리거 유형(trigger type)은 주로 다음과 같은 것들이 있습니다.(물론 그 밖에 외부 앱과 직접 연동되는 트리거도 있습니다.)

When record matches conditions
레코드의 데이터 값이 특정 조건을 만족할 때
When a form is submitted
사용자자 양식(form)에 값을 제출할 때
When record created
새로운 레코드가 생성될 때
When record updated
기존 레코드 값이 변경될 때
When record enters view
특정 뷰를 기준으로 레코드가 생성될 때(정확히는, 조건에 맞는 레코드가 들어올 때)
At scheduled time
특정 시간이 되면
When webhook recieved
(외부 앱에서) 웹훅 이벤트를 받을 때
When a button is clicked
버튼(필드)이 눌릴 때
Airtable의 Trigger 종류
에어테이블에서 자동화 시발점인 트리거의 종류

우리는 제일 첫 번째 트리거를 사용합니다. 행사 운영 관리 베이스에서는 영업일 기준으로 {시작일} 필드의 날짜를 검사하는 수식을 이미 만들어 놓았습니다. 따라서 조금 더 구체적으로 트리거를 다음과 같이 정의할 수 있습니다. {영업일 기준}의 값이 "다음날"이면, 뭔가 액션을 취해라. 간단하죠? 아래 그림과 같이 트리거 유형, 테이블, 조건(conditions)를 차례로 설정해주면 됩니다.

트리거 설정: 트리거 유형, 테이블, 조건을 설정한다.
트리거 유형에서 레코드가 특정 조건에 맞을 때를 선택하고, 테이블은 "일정" 테이블을, 조건은 {영업일 기준} 필드값이 "다음날"인 경우로 설정했다.

액션(actions) 설정

트리거 조건을 만족하면, 무엇을 시킬 것인가가 바로 액션이죠. 우리는 강사에게 메일을 보냅니다. 다음과 같은 액션 유형(action type) 중에 Send email을 고르면 됩니다.

Send email
메일을 보낸다.
Create record
새로운 레코드를 생성(추가)한다.
Update record
기존 레코드 값을 변경한다.
Find records
(조건에 맞는) 레코드를 찾아낸다.
Run script
스크립트를 실행한다.
Airtable 자동화 액션의 유형
에어테이블 자동화에서 액션의 유형

이 밖에도, 에어테이블에서 직접 슬랙이나 마이크로소프트 팀즈에 메시지를 보낸다든지, 구글 캘린더, 구글 시트, 지라 등에 내용을 추가하는 등의 액션 유형도 있습니다.

메일을 보내기로 했으니까, 수신자, 주제, 메일 내용과 같은 필수값들을 설정해주면 됩니다. 물론 데이터베이스에서 특정 필드를 변수로 포함시킬 수 있습니다. 특정 필드값을 변수로 사용하기 위해서는 파란색 ⊞ 버튼을 누르고, Insert value from field 목록에서 원하는 필드명을 고르면 됩니다.

액션에 대한 레이블(label)은 "강사 안내 메일"로 설명을 넣어줍니다.

수신자에는 {강사 메일}이라는 이메일 주소값 필드를 넣어줍니다.

메일 제목은 아래와 같이 작성했습니다.

다음 날({시작일}) {이벤트} 안내
액션에서 액션 레이블, 메일 수신자, 메일 제목을 설정합니다.
액션 설정: 액션의 제목을 넣어주고, 이어서, 메일 수신자, 메일 제목을 넣습니다.

메일 내용에는 간단히 아래와 같이 세 개의 필드를 포함시켰습니다.

{강사}님, 안녕하세요?
{시작일}에 {이벤트}이/가 시작되어요. 
미리 준비하시고, 당일날 늦지 않게 와주세요. 
감사합니다.
메일 내용 설정 화면
메일 내용 설정 화면

테스트 및 미리 보기

이제 트리거와 액션을 만들었으니, [Generate a preview] 버튼을 눌러 메일 모양이 어떻게 나올지 확인해봅니다. 또는 [View results] 버튼을 눌러 자동화 실행 결과가 성공적인지 확인해봅니다.

액션 결과 미리보기
액션 결과 미리 보기

활성화(activate)

마지막으로 방금 만든 자동화가 아직 비활성화(inactive) 상태이므로, 활성화(active) 상태로 바꿔줍니다.

지금까지 정의한 자동화를 active 상태로 바꿔준다.
지금까지 정의한 자동화를 활성 상태(active)로 바꿔준다.

이제 다 되었습니다. 앞으로는 운영자들이 일일이 사전 안내를 하지 않아도, 담당 강사에게 하루 전 메일이 자동으로 나갑니다. 물론 이 예시에서는 극단적으로 간단한 조건들을 사용했지만, 보다 복잡한 조건, 복합 트리거, 복합 액션, 조건부 분기 액션을 만드는 것도 크게 어렵지 않습니다.

다음 기회에는 메일 말고, 문자나 카카오톡 메시지를 자동으로 보내는 것을 살펴보겠습니다.

2023-09-21

온라인 설문 결과를 원하는 양식의 PDF로 변환하기

사용자가 편하게 입력할 수 있는 양식(form)이 있는 파일을 만들기 위해 ①(아래아) 한/글을 이용하는 방법, ②무료 리브레오피스를 이용하는 법과 ③무료 온라인 PDF 편집기를 이용하는 방법을 살펴보았습니다.


이 글의 목차


들어가며

이번에는 PDF에 입력 가능한 양식을 넣는 대신에, 온라인 설문을 통해 응답을 수집하되, 수집된 결과물이 개인별 PDF 응답지로 저장되도록 해보겠습니다.  예를 들어, 동아리 가입 신청서는 온라인으로 아래와 같이 받고, 그 결과는 실제 가입신청서를 작성한 것처럼, PDF 파일로 생성되는 방식입니다.

온라인 설문 응답
응답을 기반으로 생성된 PDF

제가 교육 운영 업무를 할 때 이런 경우가 있었습니다. 교육을 시작하기 전에 열심히 참여하겠다는 동의서를 개인적으로 다 받아야 했습니다. 주로 관공서 교육에서 많이 요구하죠.  교육 참여자 전원에게 설문을 실시해야 합니다. 현장에서 하는 교육은 참여자 10명에게 종이 10장을 나누어주고, 걷어야 합니다. 비대면 실시간 화상 교육을 한다면, 어떤 식으로든 설문지 파일을 전해주고, 개별 응답을 받고, 사진이나 첨부 파일로 받은 10개의 응답지를 다시 정리해야 합니다. 그 어느 경우도, 매우 귀찮은 일입니다. 그냥 온라인 설문으로 하면 되는데 말이죠.

이런 경우, 설문은 온라인 전자 설문으로 받고, 10개의 응답지는 알아서 PDF 파일로 개별 생성해준다면 편리하겠죠. 이렇게 하기 위한 몇 가지 방법을 앞으로 소개할 예정입니다. 오늘은 가장 널리 쓰이는 무료 온라인 설문 도구인 구글 설문지(Google Forms)를 이용하도록 하겠습니다. 

구글 설문지 만들기

여기에서 자세하게 구글 설문지를 만드는 방법은 설명하지 않겠습니다. 그렇게 어렵지 않으니 시도해보시면 금방 할 수 있습니다. 아래와 같이 동아리 가입 신청서 양식을 온라인 설문으로 만듭니다. 
Google Forms 동아리 가입 신청서 편집 화면
설문지 편집 화면

참고로 구글 설문에서 제공하는 문항 종류에 따라 다음과 같은 질문 형식을 사용했습니다.
  • 성명, 휴대전화 - 단답형 (텍스트 필드)
  • 성별 - 객관식 질문 (라디오 버튼)
  • 회원 구분 - 드롭다운 
  • 가입 경로 - 체크박스

부가 기능 설치하기

구글 설문을 포함한 워크스페이스 제품들은 마켓플레이스를 통해 여러 가지 부가 기능(add-ons)을 제공합니다. 그 중에 구글 설문과 구글 시트용 부가기능인 Form Publisher를 설치합니다. 마켓플레이스에서 [설치] 버튼을 누르면 됩니다. 

폼 퍼블리셔는 구글 설문으로 수집한 데이터를 기반으로, 원하는 문서를 생성해주는 부가 기능입니다. 이것을 응용하면, 설문을 기반으로 개인 응답지를 만들 수 있고, 회사에서는 간단한 신청 및 결재 프로세스를 태울 수도 있으며, 메일 머지, 상장 만들기, 심리 검사에 대한 개인별 자동해석 리포트 만들기도 할 수 있습니다. 

응답지 템플릿 만들기

개인별 응답지가 어떤 형식으로 생성될 지 미리 템플릿을 정의해놔야 합니다. 템플릿은 구글 독스(워드프로세서), 구글 스프레드시트, 구글 슬라이드(프리젠테이션 툴)로 만들 수 있는데, 동아리 가입신청서는 간단히 구글 독스로 만들겠습니다. 구글 독스를 열고 아래 예시와 같이 템플릿을 만듭니다.  (구글독스로 만들어진 실제 템플릿)

구글 독스로 만든 가입 신청서 템플릿
구글 독스로 만든 응답지 템플릿

템플릿 안에서, 설문지에 사용된 질문 문항을 그대로 변수로 사용합니다. Form Publisher에서는 이런 변수를 마커(Marker)라고 합니다. 마커 이름에는 <<마커명>>과 같이 양쪽을 꺾인 괄호로 묶어줍니다. 바로 이 마커 부분에 사용자가 실제 응답한 내용이 대체되어 개인별 응답지가 만들어집니다. 예를 들어, 성명을 사용자가 "홍길동"이라고 답한다면, <<성명>>이라는 마커 자리에 홍길동이 들어간 응답지가 생성됩니다. 

오늘 날짜, 응답자 이메일, 자동 증가하는 응답자 일련 번호 등과 같이 미리 정의된 변수, Standard Markers를 사용할 수도 있습니다. 동아리 신청서 예시에서는 신청한 날짜를 자동으로 불러오기 위해 <<Today>>라는 미리 정의된 마커를 사용합니다. 

저장 폴더 만들기

설문 응답이 쌓여가면, 자동으로 생성된 응답지 파일(PDF 포함)을 저장할 폴더를 지정해야 합니다. 저는 현재 설문지가 있는 폴더의 하위 폴더를 하나 만들고, "가입신청서_저장"이라는 이름을 붙였습니다. 아래와 같이, 현재 폴더에 가입신청서_설문, 가입신청서_설문(응답), 가입신청서_템플릿 파일이 놓이게 되고, 가입신청서_저장이라는 하위 폴더가 생성된 것을 알 수 있습니다. 

구글 드라이브 폴더 구조. 설문지, 응답 스프레드시트, 템플릿이 한 폴더에 있고, 저장 폴더가 하위 폴더로 있다.
설문이 있는 폴더 밑에 저장 폴더를 만들었습니다.


Form Publisher 설정하기

이제 구글 설문 편집 화면으로 돌아가서 아래 화면에서처럼 부가 기능에서 Form Publisher를 선택하고, 실행합니다.
구글 설문 편집 화면에서 부가 기능 > Form Publisher > Launch Form Publisher를 선택하여 시작합니다.
Form Publisher 실행

Form Publisher를 실행하면 화면 오른쪽 아래에 팝업 실행창이 뜹니다. 첫 화면은 Template and markers 화면이고, 좌측 위에 있는 햄버거 메뉴(☰)를 통해 다음과 같은 항목들을 차례대로 설정해주면 됩니다.
Form Publisher 팝업창에서는 왼쪽 위에 있는 햄버거 메뉴에서 여러 기능들을 설정할 수 있습니다.
Form publisher의 메뉴 선택


Template and markers (템플릿 파일 선택 및 변수(마커) 확인)

템플릿 파일과, 템플릿 안에 사용된 마커가 정상적인지 확인합니다.
Template and markers


  • Select template: 기본값으로 Form Publisher가 만들어준 템플릿이 있을 것입니다. 이것을 위에서 구글 독스로 만든 응답지 템플릿 파일로 바꿉니다.  
  • Markers: 템플릿 파일을 읽어서 템플릿 파일 안에 변수(마커)가 설문지와 제대로 매칭되는지 확인합니다. 정상적이라면 초록색으로 1개의 표준 마커(<<Today>>)와, 5개의 설문지 문항이 마커로 쓰였다는 것을 확인할 수 있습니다. 

Destination folders & routing rules (저장 폴더 지정)

응답자 개인별로 생성되는 응답지가 저장될 폴더 위치를 지정하는 것입니다. 위에서 미리 만들어놓은 "가입신청서_저장"이라는 폴더로 지정합니다.
응답한 내용을 PDF로 만들어 보관할 저장 폴더의 위치를 설정합니다.
Destination folders



File generation options (개별 응답 시트 파일 생성 옵션)

응답자 개인별로 생성되는 파일 관련 옵션입니다. 그 중에 제일 중요한 것은, Keep PDF copy in Drive 옵션을 선택해서, PDF 파일이 차곡차곡 저장되도록 하는 것입니다. 
응답지 파일 생성시 몇 가지 옵션을 지정합니다. 구글 독스에 추가로 PDF를 반드시 생성하도록 해주었습니다.
File generation options


Naming convention (개별 응답 시트 파일 이름 설정)

응답자가 여러 명이 되면, 개별 응답지 생성 파일이 서로 구분될 수 있는 파일 이름을 부여해야 합니다. 저는 응답한 시간과 응답자의 성명을 변수로 넣어서 파일 이름을 "<<Timestamp>>_가입신청서_<<성명>>" 과 같이 지정했습니다. 그러면 실제로는 "2023-09-20_가입신청서_홍길동", "2023-09-21_가입신청서_김철수"와 같이 응답한 시간과 응답자 성명을 조합하여 응답자별로 PDF 파일이 생성됩니다.
생성되는 응답지 파일 이름 규칙을 지정하였습니다.
Naming convention


Sharing options and notifications (파일을 받아볼 사람 지정)

설문을 받고, 설문 결과 개인별로 생성된 PDF를 응답자 개인에게 자동으로 보낼 수도 있고, 아니면 관리자에게 보낼 수도 있습니다. 메일의 제목과 메시지의 세부 내용도 조정할 수 있습니다. 물론 메일을 보내지 않아도, 관리자 입장에서는 구글 드라이브의 저장 폴더에 응답지가 쌓이므로, 꼭 메일로 통보를 받는 것이 필수는 아닙니다.
생성된 응답지 파일을 누구한테 이메일로 보낼 것인지 지정합니다. 여기에도 그냥 이메일 주소 외에 마커를 사용할 수 있습니다.
Sharing options and notifications


마치며

이제 동아리 가입 신청서를 PDF로 배포하지 않고, 그냥 구글 설문으로 가입 신청을 받게 됩니다. 그리고, 신청이 한 번씩 이루어질 때마다, 자동으로 신청서 PDF 파일이 생성되어 쌓입니다. 물론, 구글 설문의 원래 기능대로 모든 응답 내용은 구글 스프레드시트에 저장되어, 쉽게 데이터 관리를 하고 통계 분석도 가능합니다. 아래 설문지 링크에서 테스트해보시기 바랍니다.


이 글에서는 전자 서명(싸인)과, 워크플로우(workflow)를 태워서 다른 사람이 승인하는 것까지는 넣지 않았습니다. 다음 기회에는 PDF에 전자 서명 넣는 것과 워크플로우를 태우는 것도 다뤄보겠습니다.