Blog Archive

레이블이 노코드인 게시물을 표시합니다. 모든 게시물 표시
레이블이 노코드인 게시물을 표시합니다. 모든 게시물 표시

2023-11-14

수 백 페이지 상담일지를 깔끔하게: Airtable Page designer

지난 번에 구글 설문(Google Forms)의 확장 프로그램인 폼 퍼블리셔(Form Publisher)를 이용해서 설문받은 결과지를 한 장 한 장 PDF 양식에 맞게 변환, 저장하는 방법을 알아보았습니다. 마찬가지로 잣폼(Jotform)이라는 툴을 이용해서 설문받은 결과지를 PDF 양식에 맞게 저장하는 방법도 살펴보았습니다.

이번에는 대표적인 노코드 툴인 에어테이블(Airtable)을 이용해서, 사용자에게 설문으로 받았거나, 또는 사용자가 직접 데이터에 입력한 내용들을 PDF 양식에 맞게 출력하는 방법을 알아봅니다. 실제 업무 활용 사례를 하나 공유합니다.

상담 관리와 상담 일지 정리

프로젝트 개요/문제

한 프로젝트에서는, 여러 명의 상담사가, 여러 내담자를 여러 번 상담하는데, 매회 상담시마다 상담일지를 적어야 했었습니다. 이런 상담 운영은 관리 시스템이 있지 않으면, 여러 상담사의 일정을 조율하고, 상담 시간을 배치고, 원하는 문서를 제시간에 수집하고, 필요할 때에 안내를 보내는 것이 상당히 어렵습니다. 프로젝트 기간이 달랑 5~6개월 이내인데, 그것을 위해서 거대한 관리 시스템을 개발하려면 배보다 배꼽이 커지게 됩니다. 그렇다고, 적당히 엑셀이나 구글 시트로 운영을 하기에는 너무 복잡하기도 하고, 일정 관리, 협업이 어렵습니다.

상담 일지도 문제였습니다. 상담 일지에는 반복적으로, 상담자, 내담자, 상담장소, 시간, 유형 등이 들어가고, 상세한 상담 내용을 적어야 합니다. 이것을 처음에는 파워포인트나 워드프로세서 양식으로 만들어서 양식을 채워오라고 상담사에게 부탁했습니다. 그러나 사람마다 양식을 조금씩 변경해서 쓰기도 하고, 글꼴, 문단, 페이지 나누는 방법 등이 개인마다 미묘하게 달라지기도 합니다. 가장 큰 문제는 결과가 파일로 나오기 때문에 파일명을 일관성있게 붙이고, 상담사는 파일을 제출하고, 관리자는 취합해서 파일 관리를 하나하나 꼼꼼하게 해주어야 합니다.

솔루션: Airtable 기반의 상담 관리 시스템

그래서, 에어테이블로 상담 관리 시스템을 만들었습니다. 실제 초기 구축은 3~4시간 정도에 끝났고, 운영하면서 조금씩 보완해나갔습니다. 상담이 남아있는 내담자는 누구이고, 완료된 내담자는 누구이며, 상담사별로 얼마나 상담을 했고, 어떤 일정이 근간에 예정되어 있고, 지금 어떻게 진행되고 있는지 등이 한 눈에 보이는 것은 당연합니다.

Airtable로 구현된 상담관리 시스템. 상담 일정 테이블 뷰
Airtable로 3~4시간만에 구현된 상담관리 시스템. 상담일정 테이블 뷰

상담관리 시스템. 캘린더 뷰
상담관리 시스템. 캘린더 뷰

상담 일지 입력

제가 추가로 기대했던 것은 바로 상담 일지의 관리였습니다. 각 상담사들이 에어테이블에 직접 들어가서 상담일지 작성 필드에 상담 내용을 서식이 있는 리치 텍스트(rich text)로 입력할 수 있게 했습니다. 에어테이블의 리치 텍스트 입력은 마크다운(Markdown)을 지원하며, 마크다운에 익숙하지 않은 사람들을 위해 아래 그림과 같이 보조 툴박스가 떠서, 금방 익숙하게 서식이 있는 문서 작성이 가능합니다.

상담일지 작성하는 화면. Rich text 입력을 위한 툴박스가 제공된다.
Airtable에서 상담사가 상담일지를 입력하는 화면. Rich text 입력을 위한 툴박스가 제공되며, Markdown도 쓸 수 있다.

결과보고 및 상담 일지 출력

6개월 정도 되는 프로젝트가 종료되고, 발주처에 상담일지 원본을 상담사별, 내담자별, 주제별, 날짜별 등으로 정렬하여 제출해야 했습니다. 만약에 상담 일지를 파일로 만들었다면, 파일들 정리하느라고 하세월이 걸렸을 것입니다. 에어테이블에는 상담 일정 등 메타 데이터와 상담 내용(상담 일지)가 같이 정리되어 있으니, 원하는 방식으로 그룹핑하고, 정렬하는 것은 매우 쉬운 일입니다. 그리고, 상담 일지 양식은 에어테이블의 페이지 디자이너(Page designer)를 이용해서 1시간 정도 걸려서 템플릿을 만들었습니다.

Airtable의 Page Designer를 이용해 상담일지 템플릿을 만드는 모습
Airtable의 Page Designer를 이용해 상담일지 템플릿을 만드는 모습

그리고, 드디어! 데이터베이스에 상담사들이 입력한 수백 건의 데이터와 내용들이 다음과 같이 깔끔하게 상담일지 양식으로 변환이 되었습니다. 그리고 수 백 페이지의 상담 일지는 그냥 클릭 한 번으로 PDF 파일 하나로 제작되었습니다.

한 건의 상담이 상담일지 양식에 맞게 한 장씩 출력됩니다.
상담일지를 PDF로 출력한 예시. 상담 한 건이 한 장으로 생성되며, 수 백 장도 한꺼번에 생성된다.

데이터베이스의 리포트 생성

데이터가 많고, 계속 변한다면, 그것의 구조를 만들고, 관리하는 것(structure, logic)과, 보여주는 것(presentation)이 분리되는 것이 바람직하겠죠.

구글 설문에 들어간 데이터, 그리고, 잣폼에 들어간 데이터도 마찬가지였습니다. 데이터 입력은 편하게 하되, 보여주는 아웃풋은 예쁘게 원하는 모양으로 보여야 합니다. 그래서 반복적인 템플릿이나 반복적인 데이터가 있는 자료들은 되도록이면 데이터베이스를 이용해 관리하는 것이 좋겠지요. 일상적인 업무에서도 데이터를 기반으로, 원하는 형식으로 만드는 일이 많이 있습니다. 예를 들면, 수 백 명의 상장, 수료증을 만든다거나, 인보이스를 출력한다거나, 재직증명서를 만든다거나, 특정한 형식의 요청서를 만드는 경우, 여러 명의 주소를 기반으로 우편 레이블을 만드는 경우, 수백 명의 고객에게 이름과 몇 가지 정보만 바꿔서 메일을 보내는 경우 등입니다. 이런 문서들은 양이 적으면, 워드프로세서 프로그램의 템플릿을 이용해 직접 작성할 수도 있지만, 조금 양이 많아지면, 보통 스프레드시트와 연계하여 소위 "메일 머지"를 사용해서 만들 수 있습니다. 그러나 데이터가 지속적으로 들어오고, 계속 업데이트되며, 여러 사람으로부터 수집해야 하는 데이터라면 데이터를 입력, 수집, 관리하는 시스템이 같이 따라줘야 합니다. 그리고 최종적으로 데이터를 원하는 형식(포맷)으로 만들어서 출력해주는 리포트(Report) 기능이 필요합니다.

간단한 데이터베이스와 쉬운 리포팅을 구현하는 방법으로 지금까지 구글 설문의 폼 퍼블리셔, 잣폼의 PDF 생성 기능, 그리고 에어테이블의 페이지 디자이너를 살펴보았습니다. 각각의 경우 약간의 특징과 장단점이 있습니다.

스프레드시트(엑셀, 구글시트 등)와 워드프로세서 메일 머지(워드, 한글 등)
  • 변화가 없는 한정된 데이터를 가지고 있고, 특별히 입력 인터페이스는 필요없으며, 딱 한 번 작업하면 끝나는 경우에 적합.
  • 워드프로세서에서 스프레드시트 데이터를 한 번 불러오면 끝남.
  • 보통 우편 레이블 출력, 상장 출력, 청구서 등에 많이 활용

구글 설문의 폼 퍼블리셔(Form Publisher for Google Forms)
  • 사용자로부터 설문으로 받은 내용을 원하는 양식으로 변환하여 출력할 때 유용
  • 최종 출력 양식에 PDF 뿐 아니라, 워드프로세서, 스프레드시트, 프리젠테이션 프로그램을 지정할 수 있어서 유연함.
  • 양식 하나하나는 파일로 관리되어 편하기도 하지만, 나중에 대량으로 정리할 때에는 번거로울 수도 있음.
  • 계산, 차트 등의 기능을 이용해서 매우 복잡한 개인별 리포트를 생성 가능(예: 심리검사 결과 리포트)

잣폼의 PDF 변환
  • 페이퍼로 된 PDF 파일을 온라인 설문으로 변환시킬 때 편리함.
  • 특히, 서명이 포함되어 있는 경우도 온라인으로 바로 처리할 수 있어서 편리함.
  • 사용자로부터 받은 데이터는 깔끔하게 잣폼 테이블 데이터로 관리되고, 각종 연산 처리가 가능함.
  • 개별 또는 여러 개의 PDF 파일을 만들 수 있음. 기능이 많다 보니 사용법이 약간 까다로운 편

에어테이블의 페이지 디자이너 (Page designer for Airtable)
  • 초기에 데이터베이스를 구축해야 한다는 점에서 부담이 있음.
  • 강력한 데이터베이스를 기반으로 한, 관리자용, 사용자용 인터페이스 구축이 비교적 쉽게 이루어짐.
  • PDF 리포트도 파일이 아니라, 데이터베이스에 들어가 있으므로, 개별 또는 그룹별로 관리하기가 쉬움.

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)로 바꿔준다.

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

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