반응형

안녕하세요.

이번 시간에는 앱시트 자동화의 두번째 핵심 요소인 Automation 을 공부해 보도록 하겠습니다. Automation 이 Actions(Behavior) 와 어떤 차이점을 가지고 있는지, 언제 Automation 을 사용해야 하는지, Automation 에는 어떤 기능들이 있는지 확인해 보도록 하겠습니다.

꽤나 내용이 길어질 것 같아서 Automation 을 실제로 사용하는 방법과 예시 등에 대해서는 다음 글에서 따로 다루어야 할 것 같습니다.

그럼 시작해볼까요?

 

 

● Automation 이란?

Automation 은 'Event 에 따라 Process 를 진행하는 Bot' 을 의미합니다.

여기에서 Event 는 Process 를 진행시키기 위한 조건을 의미하며 크게 두 가지로 나눌 수 있습니다. 첫번째는 Data Change Event 로, 데이터가 생성, 수정 또는 삭제되는 것을 의미합니다. 두번째는 Schedule Event 로, 데이터와 관계 없이 특정 시간이 되었을 때 프로세스를 진행시킵니다.

또한 Process 는 Bot 이 Event 에 따라 수행하는 작업을 의미합니다. Process 에는 메일 보내기, 알림 보내기, 문자 보내기, 웹훅 요청 보내기, 파일 생성하기, 스크립트 실행하기, Action 실행하기 등이 있습니다.

종합해보면 Automation 을 사용한다면 '매주 자동으로 요약 보고서 생성하기', '새로운 데이터가 추가될 때마다 메일 보내기' 등을 설정할 수 있습니다.

 

 

● Automation 과 Actions 의 차이점

저번 글에서 설명드린 Actions 와 지금 설명드리는 Automation 에는 대표적으로 두 가지 차이점이 있습니다.

첫째, 실행 조건입니다. Actions 는 사용자가 직접 버튼을 눌러야 실행되지만, Automation 은 특정 Event 가 발생해야 실행이 됩니다. 물론 Automation 을 통해 Action 이 실행되는 경우나, Automation 의 Test 버튼을 눌러 실행시키는 경우는 논외입니다.

둘째, 할 수 있는 작업의 차이입니다. Actions 와 Automation 은 둘 다 Data action 을 실행할 수 있습니다. 다만 Actions 는 앱 내부에서 사용자가 버튼을 눌렀을 때를 기본적인 실행 조건으로 잡고 있기 때문에 특정 페이지로 이동하거나, 외부 페이지를 여는 등의 내부 작업에 조금 더 특화되어 있습니다. 그리고 Automation 은 앱 외부와 소통하거나 API 요청을 주고 받는 외부 작업에 더 특화되어 있습니다.

따라서 용도와 목적에 맞게 Actions 와 Automation 을 적절히 섞어가며 사용해야 합니다. 특히 Actions 를 통해 변경되는 데이터를 Automation 의 이벤트 조건으로 삼아 Automation 도 같이 실행되게 하는 등의 응용 작업도 가능합니다.

 

 

● Process 의 구성

Automation 의 Process 를 어떻게 정의하는지 조금 더 세부적으로 알아보도록 하겠습니다.

Automation 은 아래와 같이 구성되어 있습니다.

만들어진 봇(Bot) 은 이벤트(Event) 에 의해 프로세스(Process) 를 실행하며, 각 프로세스(Process) 는 여러 개의 단계(Step) 로 이루어져 있습니다. 단계(Step) 는 Task 와 Action 등의 작업을 진행하거나, 작업 진행을 위한 조건을 걸어주는 역할을 하게 됩니다.

Process 내에 Step을 생성하게 되면 아래 이미지와 같은 작업을 지정할 수 있습니다.

각 작업에 대해 설명해 보겠습니다.

작업 이름 설명
Run a task 메일을 보내거나 파일을 생성하는 등 Task 를 실행합니다. (자세한 내용은 아래에)
Run a data action 지정한 Actions 를 실행합니다.
Branch on a condition 조건 수식(Formula)에 따라 각 step 을 실행할지 말지를 결정합니다.
Wait 특정 조건이 만족되거나 지정한 기간이 될 때까지 기다립니다.
Call a process 다른 Bot 에서 지정한 Process 작업을 가져옵니다.
Return values 값을 return 합니다. return 된 값은 나중에 사용 가능합니다.

다음으로는 각 Task 에 대해 설명해 보겠습니다.

Task 이름 설명
Send an email 지정한 사용자에게 이메일을 보냅니다. 단, 외부로 이메일을 보내려면 앱이 배포되어 있어야 합니다. 이메일은
  1. 이메일 내에 앱시트 화면의 일부가 삽입되는 Embedded app view 와,
  2. 원하는 내용으로 메일을 구성할 수 있는 Custom template 이 있습니다.
Send a notification 지정한 사용자에게 앱 알림을 보냅니다.
Send an SMS 지정한 번호로 문자를 보냅니다.
Call a webhook 앱시트 내의 데이터를 활용하여 웹훅 요청을 보냅니다. Custom url, Slack Hook, AppSheet API 요청이 있습니다.
Create a new file 지정한 템플릿을 기반으로 작성된 새로운 파일을 생성합니다.
Call a script Apps Script 코드를 실행합니다.

앱을 처음 만드실 때는 Task 의 모든 부분을 마스터할 필요는 없습니다. 간단한 템플릿 작성법 정도야 일반인 개발자 수준에서도 커버 가능하지만, 웹훅을 보내거나 스크립트 코드를 작성하는 부분은 고급 과정에서 다루어야 할 어려운 작업들 중 하나이기 때문입니다. 또, 문자를 보내는 것도 외부 솔루션과의 연동이 필요하기 때문에 잘 사용하지 않습니다.

따라서 앱시트 중급 개발자 입장에서는 이메일을 보내는 것과, 앱 알림을 보내는 것, 그리고 파일을 생성하는 세 가지 정도만 공부해 두시면 됩니다. 나머지는 앱시트가 API 작업도 할 수 있구나, Apps Script 코드와 연동해서 조금 더 복잡한 작업도 처리할 수 있구나 정도로만 이해해 주시면 되겠습니다.

지금까지 Automation 의 정의와 Actions 와의 차이점, Process 의 구성에 대해 알아보았습니다. Actions 와 Automation 의 기능들을 활용하여 정말 다양한 기능들을 만들 수 있을 것 같지 않나요? 다음 시간에는 실제로 Automation 을 사용하는 방법을 여러 가지 예시와 함께 설명해 드리도록 하겠습니다. 같이 열심히 공부해 보아요~!!

반응형
반응형

안녕하세요.

이번에는 AppSheet 자동화의 핵심인 Actions(Behavior)와 Automation에 대해 자세히 알아보려고 합니다. 여기서 제가 말하는 자동화는, 사람이 해야 할 일을 최소화하기 위해 반복적으로 처리되는 작업을 미리 정의하는 것을 의미합니다.

AppSheet의 자동화는 무엇을 할 수 있으며, 어떻게 사용하는 것이 좋을까요? 저는 오늘 이 질문에 대한 대답을 가지고 왔습니다. 입문 글에서의 내용과 겹치는 부분도 있지만, 중급 수준에 맞게 조금 더 체계적이고 자세한 정보를 적어보도록 하겠습니다. 이번 글에서는 먼저 Actions에 대해서 다루어 보려고 합니다.

그럼 시작해볼까요?

 

 

● Actions 로 할 수 있는 것들

버튼을 클릭하는 등의 이벤트가 발생했을 때 발생하는 액션을 가리키는 Actions (이전 UI에서는 Behavior)에서는 크게 세 종류의 작업을 지정할 수 있는데요, 실행되는 액션이 앱에 대한 것이라면 App, 데이터에 대한 작업이라면 Data, 그 외 외부 솔루션과 관련된 작업에 대한 것이라면 External 이라고 분류할 수 있습니다.

이러한 Action 작업들은 보통 특정 행에 대해서 동작합니다. 예를 들어 1번 행의 디테일 페이지에서 정의된 버튼을 누르면 일반적으로 1번 행에 대해 작업이 실행됩니다.

하나씩 살펴보겠습니다. 먼저 App에 대해 정의할 수 있는 작업들입니다.

Action: App 설명
App: copy this row and edit the copy 행 데이터를 복사하고 복사한 행을 편집합니다.
App: edit this row 이 행을 편집합니다.
App: export this view to a CSV file (not a row-level action) 이 뷰의 데이터를 CSV 파일로 추출합니다. (행 단위 액션 아님)
App: go to another AppSheet app 다른 앱시트 앱으로 이동합니다.
App: go to another view within this app * 이 앱의 다른 뷰로 이동합니다.
App: import a CSV file for this view (not a row-level action) 이 뷰에 데이터를 CSV 파일로 입력합니다. (행 단위 액션 아님)
App: open a form to add a new row to this table (not a row-level action) ** 이 테이블에 새로운 행을 추가하기 위해 Form을 엽니다. (행 단위 액션 아님)
* 자주 쓰는 기능 중 하나로, 다른 뷰에 대한 바로가기를 만들 수 있습니다.                                                                                                                        ** 

* 자주 쓰는 기능입니다. 다른 뷰에 대한 바로가기를 만들 수 있습니다. 같이 쓰는 함수: LINKTOFILTEREDVIEW()

** 자주 쓰는 기능입니다. 연결된 테이블에 값을 추가하기 위한 Form을 열 때 선택된 행의 값을 추가할 행의 Initial 값으로 활용할 수 있습니다.

 

다음은 Data에 대해 정의할 수 있는 작업들입니다.

Action: Data 설명
Data: delete this row 이 행을 삭제합니다.
Data: execute an action on a set of rows 여러 행에 대해서 지정된 (다른) 액션을 수행합니다.
Data: set the value of some columns in this row* 이 행의 지정한 컬럼의 값을 설정한 값으로 변경합니다.
Data: add a new row to another table by using values from this row** 이 행의 값들을 이용하여 다른 테이블에 새 행을 만듭니다.

* 자주 쓰는 기능입니다. 데이터 수정에 대한 자동화 작업을 위해 활용할 수 있습니다.

** 자주 쓰는 기능입니다. Form이 열리지 않고 데이터가 바로 추가됩니다.

 

그리고 External에 대해 정의할 수 있는 작업들입니다.

Action: External 설명
External: go to a website* 웹사이트로 이동합니다.
External: open a file 외부 파일을 엽니다.
External: start an email (기본 메일 앱에서) 이메일을 작성합니다.
External: start a phone call (기본 전화 앱에서) 전화를 겁니다.
External: start a text message (기본 문자 앱에서) 문자를 보냅니다.

* 자주 쓰는 기능입니다. 홈페이지나 외부 사이트에 연결하고 싶을 때 사용합니다. 데이터에 파일 링크가 입력된 경우 open a file 대신 사용하기도 합니다.

 

그 외에, Grouped 라는 작업을 정의할 수 있습니다.

Action: Grouped 설명
Grouped: execute a sequence of actions* 여러 액션을 한번에 실행합니다.

* 자주 쓰는 기능입니다. 버튼을 한 번만 클릭해도 여러 개의 액션이 한번에 실행되어 보다 다양한 자동화 작업이 가능해집니다.

 

 

● Actions 를 사용하는 방법

Behavior 로 할 수 있는 것들이 뭔지 잘 파악하고 나면 본격적으로 Actions 를 사용해 보아야 할 것입니다. Actions 를 사용할 때 구체적으로 어떻게 설정해야 하는지 몇 가지 예시와 함께 설명해 보겠습니다.

  예시1. Actions 를 통해 데이터 변경하기

기본적으로 AppSheet 사용자가 데이터를 변경하기 위해서는 시스템에서 생성된 Edit 이라는 버튼을 눌러 편집을 진행한 뒤, 저장 버튼을 눌러 변경사항을 저장해 주어야 합니다. 다만 이는 사용자 입장에서는 꽤 번거롭게 느껴질 수 있습니다. 따라서 자주 이루어지는 편집 작업에 대해서는 Actions 로 지정하여 작업 소요를 줄여 주시는 것이 좋습니다.

또한 이 방법을 사용하게 되면 사용자가 무엇을 할 수 있으며 무엇을 해야 하는지 조금 더 직관적으로 확인할 수 있고, 데이터를 실수로 잘못 입력하지 못하게 됩니다.

다만 주의할 점은 Behavior 작업을 추가할 때 여러 사용자가 함께 작업을 진행했을 때를 고려해 주어야 한다는 것입니다. 예를 들어 아래와 같이 사과의 갯수에 1을 더해주는 Actions 와 사과의 갯수에 2를 곱해주는 Actions 가 있다고 가정해 봅시다.

한 사용자만 이 앱을 사용한다면 상관없지만, 만약 동시에 여러 사용자가 이 앱에 접속하여 한번에 +1과 *2 버튼을 누른다면 어떻게 될까요? 정답은 먼저 버튼을 누른 사용자의 작업만 반영이 됩니다. 나중에 버튼을 누른 사용자가 동기화를 하면 사과의 갯수가 먼저 버튼을 누른 사람의 값으로 변경됩니다. 만약 이러한 작업이 필요하다면 다른 방식으로 Actions 를 사용해 주어야 합니다.

그 방식은 사과 갯수라는 신규 테이블을 만든 후, +1 또는 *2 버튼을 눌렀을 때 바로 갯수가 바뀌는 것이 아니라, +1 또는 *2 버튼을 눌렀을 때 사과 갯수 테이블에 어떤 버튼을 눌렀는지에 대한 로그를 기록하게 하고, 사과의 갯수는 FORMULA를 통해 계산하는 방식입니다. 이렇게 하면 모든 Actions 작업이 누락되지 않고 진행될 것입니다.

  예시2. Actions 의 아이콘, 표시 방법과 표시 조건 정하기

Actions 는 최초 생성 시, 액션 작업이 지정된 테이블의 데이터를 사용하는 뷰 최상단에 종이비행기 모양의 아이콘 밑에 액션의 이름을 표시해주는 동그란 버튼 모양으로 보이게 됩니다.

Appearance 탭

앱의 아이콘과 표시 방법은 Behavior 메뉴에서 수정이 가능합니다. 먼저 Appearance 탭에서 Display name 을 변경하여 버튼의 이름을 바꿔줄 수 있고, Action icon 을 변경하여 버튼의 아이콘을 바꿔줄 수 있습니다. Prominence 또한 중요한데요, 어떤 옵션을 선택하는지에 따라 아래 이미지와 같이 표시가 됩니다.

Display as primary 옵션 선택 시
Display prominently 옵션 선택 시
Display inline 선택 후 Attach to column 옵션을 '갯수'로 지정할 시

또한 Do not display 옵션 선택 시 아이콘이 화면에서 사라집니다.

Behavior 탭

그 다음으로, 해당 Action의 Behavior 탭에서 앱이 표시되는 조건과, 버튼을 눌렀을 때 컨펌 메시지를 띄워서 한 번 더 확인할지를 결정할 수 있습니다.

Needs confirmation? 을 활성화 시키고 컨펌 메시지를 설정한 뒤 버튼을 누르면 아래와 같이 표시됩니다.

그 다음으로 Only if this condition is true 란에 적절한 FORMULA를 입력하여 앱에 버튼이 보이게 할지 말지를 선택할 수 있습니다. 예를 들어 [과일 아이디] = "사과" 와 같이 FORMULA 작성 후, 앱을 둘러보면 아래와 같이 [과일 아이디]가 "사과"일 때만 *2가 표시되는 것을 볼 수 있습니다.

그 외에도 CONTEXT("VIEWTYPE")="Detail" 과 같이 조건을 설정하면 Detail 뷰에서만 해당 버튼이 보이게 됩니다. 또한, 뷰마다 데이터 슬라이스를 만들어 버튼 표시를 제한하는 방법도 있습니다. 데이터 슬라이스를 만들 때 아래와 같이 해당 슬라이스에서 사용할 수 있는 버튼을 제한할 수 있습니다.

이후 해당 데이터 슬라이스를 뷰에 적용하면 그 뷰에서는 *2 버튼만 보이게 됩니다. 이 때 따로 지정하지 않으면 시스템에서 생성한 Actions 인 Add, Delete, Edit 버튼도 보이지 않게 됩니다. 참고하여 설정해 주시면 됩니다.

지금까지 Actions 로 할 수 있는 것들과 Actions 를 활용하는 방법에 대해 알아보았습니다. 이정도만 알고 사용해도 Actions 의 거의 모든 것을 알고 있다고 해도 과언이 아닙니다. 다음 시간에는 AppSheet 자동화의 두번째 핵심 기능인 Automation 기능에 대해 알아보도록 하겠습니다. 읽어주셔서 감사합니다. 같이 열심히 공부해 보아요~

반응형

+ Recent posts