[01] 매뉴얼 트리거 워크플로 기획하기
워크플로를 만들기 전에 먼저 간단한 구상을 해보는 것이 좋습니다. 먼저 무엇을 자동화할지 떠올린 다음, 그 자동화를 위해서 필요한 기능이 어떤 것인지하나씩 적어보고, 이 기능으로 실행해야 하는 작업들을 단계적으로 추가하여 자동화를 완성할 수 있습니다. 이런 단계를 거치지 않고 마구잡이로 필요해보이는 노드를 추가해버리면 순서도 뒤엉키고 바로잡는 게 더 복잡해지기 때문에 처음부터 하나씩 단계적으로 진행하는 것이 중요합니다.
여기서는 사용자가 워크플로를 실행하면 현재 시간을 확인해서 시간대에 따라 다른 내용으로 이메일을 보내는 워크플로를 함께 만들겠습니다. 여기서 필요한 기능을 생각하면 워크플로 실행 기능, 현재 시간 확인 기능, 시간대 분류 기능, 이메일 발송 기능이 되겠죠. 그러면 이 기능을 바탕으로 작업 단계를 나누어보면 다음과 같은 단계가 필요합니다.
사용자가 워크플로 기능을 실행 ➝ 현재 시간을 가져옴 ➝ 시간대를 오전, 오후로 구분 ➝ 시간대에 따라 설정된 메시지를 이메일로 발송
이 워크플로에서는 사용자가 워크플로를 실행하는 동작이 트리거 역할을, 이메일 발송은 액션 역할을 합니다. 중간에 데이터를 정리하거나 형식을 바꾸는 과정이 있다면 이는 가공 단계라고 할 수 있습니다. 자동화를 설계할 때는 이 흐름을 머릿속으로 먼저 그려보는 것이 중요합니다. 우리는 먼저 워크플로를 시작해서 현재 시간을 가져오는 단계까지 만들겠습니다.
[02] 매뉴얼 트리거 워크플로 만들기
01단계 n8n 메인 화면에서 오른쪽 상단의 [Create workflow] 버튼을 눌러 새로운 워크플로를 추가합니다.
02단계 빈 캔버스가 생성됩니다. 가운데 보이는 [+ Add first step] 버튼을 클릭해 첫 번째 노드를 추가하겠습니다. 오른쪽에 나타나는 트리거 유형 리스트에서 [Trigger Manually]를 선택합니다. 이 시작 노드는 사용자가 직접 클릭하면 바로 워크플로가 실행되는 매뉴얼 트리거 노드입니다. 매뉴얼 트리거는 이름 그대로 사용자가 수동으로 직접 실행 버튼을 눌러야 워크플로가 시작됩니다. ‘자동화 도구인데 왜 수동으로 시작하지?’라고 생각할 수 있지만, 매뉴얼 트리거는 클릭으로 바로 시작할 수 있기 때문에 복잡한 조건이나 외부 연동 없이 바로 실행하여 테스트를 할 수 있습니다. 또 같은 워크플로를 여러 번 실행하면서 결과를 확인할 수 있어 학습이나 개발 단계에서 매우 유용합니다.
03단계 매뉴얼 트리거를 선택하면 마우스 아이콘 모양의 트리거 노드가 워크플로에 삽입됩니다. 이 노드를 더블클릭하면 설정 패널이 나타납니다. 매뉴얼 트리거는 특별한 설정이 필요하지 않습니다. [Parameters] 탭을 보면 설정할 어떤 옵션도 표시되지 않고 ‘이 노드는 매개변수가 없다(This node does not have any parameters)’라는 문구로 확인할 수 있습니다.
04단계 테스트를 위해 [Execute workflow] 버튼을 눌러보면 노드의 테두리 선이 초록색으로 바뀌면서 노드 하단에 체크 표시가 나타납니다. 해당 노드가 어떤 오류 없이 실행이 정상적으로 완료되었다는 표시입니다. 캔버스 하단에 전체 워크플로가 성공적으로 실행되었다는 안내 문구도 볼 수 있습니다. 워크플로가 실행되면 이렇게 표시가 나타납니다.
지금은 뒤에 노드를 추가하지 않은 상태이기 때문에 실행 버튼을 클릭해도 어떤 작업도 일어나지 않습니다.
05단계 두 번째 노드도 이어서 추가하겠습니다. 첫 번째 노드 뒤에 선으로 연결된 [+] 버튼을 클릭하면 다시 노드 카테고리 목록과 검색창이 나타납니다.
06단계 현재 날짜를 가져오는 노드를 사용하기 위해 노드 검색창에 ‘Date’라고 검색하겠습니다. 검색된 노드 목록의 가장 첫 번째에 [Date & Time]를 클릭하면 노드에서 실행할 수 있는 액션들 목록이 나열됩니다. 우리는 이 중 현재 날짜를 가져오는 [Get Current Date]를 선택하겠습니다. 이와 같이 정확한 노드명을 모르더라도 관련된 키워드나 서비스 이름 등을 검색하면 연관 노드 목록에서 원하는 노드를 찾을 수 있습니다.
07단계 그러면 다음과 같이 [Date & Time]의 노드 설정 패널이 열립니다. 패널의 설정을 하나하나 살펴봅시다.
➊ INPUT 탭을 보면 시작 노드였던 [When clicking ‘Execute workflow’]가 있습니다. 우리가 이 노드를 추가할 때 시작 노드와 연결했기 때문입니다. INPUT 탭에는 이전 노드의 정보가 자동으로 들어옵니다. 우리가 지정한 시작 노드는 클릭해서 실행하는 동작 외에 다음 노드에게 전달할 데이터나 정보는 다루지 않습니다. 따라서 INPUT 탭에는 아무 데이터가 없습니다.
➋ Date & Time Parameters 설정에는 우리가 선택한 액션인 [Get Current Date]가 선택되어 있습니다. 이 드롭다운을 클릭하면 앞서 이 노드의 액션 목록에 떠 있던 액션들이 있습니다. 다른 액션으로 변경하고 싶으면 여기서 선택할 수 있습니다.
➌ Include Current Time은 현재 날짜를 가져올 때 시간 정보를 포함할지 여부를 선택하는 옵션입니다. 기본값이 True라서 활성화되어 있는 거죠. 우리는 시간 정보가 필요하기 때문에 그대로 두겠습니다.
➍ Output Field Name은 가져온 날짜 정보를 데이터로 저장할 때 그 필드명을 무엇으로 할지 정하는 칸입니다. 앞에서 기본적으로 모든 데이터는 JSON 형식으로 다룬다고 설명했습니다. 이 JSON 형식은 키와 값의 쌍으로 이루어집니다. 값만 저장할 수는 없고 그 값에 해당하는 이름이 필요합니다. 표 형태로 출력한다면 열 이름이나 헤더와 같은 것이죠. 여기서는 날짜 정보의 이름을 무엇으로 할지를 지정합니다. 기본적으로 ‘currentDate’로 설정이 되어 있습니다. 필요에 따라 이 부분은 원하는 필드명으로 변경하면 됩니다. 우리는 그대로 사용하겠습니다.
➎ [Add option] 버튼을 클릭하면 그 외 선택할 수 있는 기타 옵션들이 드롭다운으로 나타납니다. 기타 옵션으로는 Include Input Fields와 Timezone이 있습니다. Include Input Fields는 이전 노드에서 전달된 입력 데이터를 현재 노드의 출력에도 그대로 포함시킬지 여부를 결정하는 옵션이며, Timezone은 반환할 날짜와 시간 값을 어떤 시간대를 기준으로 표시할지 지정할는 옵션입니다. 이 부분은 말 그대로 해당 노드에서 선택적으로 추가할 수 있는 옵션이기 때문에 원하는 옵션이 있을 때에 자유롭게 선택해서 설정하면 됩니다.
[03] 매뉴얼 트리거를 사용해 만든 워크플로 실행하기
방금 우리가 만든 워크플로를 한 번 실행하겠습니다.
01단계 캔버스 하단의 [Execute workflow] 버튼을 누르면 모든 노드에 초록색 체크 표시가 뜨면서 워크플로가 실행됩니다. 이 상태에서 다시 [Date & Time] 노드를 더블클릭합니다.
02단계 Date & Time 노드의 설정 패널에서 왼쪽 INPUT 탭은 변화가 없지만 오른쪽 OUTPUT 탭을 보면 OUTPUT 글자 옆에 초록색 체크 표시가 떠 있습니다. 해당 노드가 정상적으로 실행됐다는 의미이고 그 실행 결과는 아래에서 확인할 수 있습니다.
DateTime 노드가 생성한 현재 시간 데이터가 출력되어 있습니다. 데이터 보기 옵션에 따라 출력 형태가 달라지는데, OUTPUT 탭 상단의 [Schema], [Table], [JSON] 버튼으로 데이터 보기 옵션을 선택할 수 있습니다.
➊ [Schema]를 선택하면 해당 노드의 출력 데이터에서 어떤 필드(열 이름)가 있고 그 값이 무엇인지 읽기 쉽게 정리된 형태로 표시됩니다. 필드명과 값이 시각적으로 구분되기 때문에 [JSON 보기]보다 훨씬 읽기 쉽습니다. 우리가 실행한 노드의 결괏값은 다음과 같은 형식으로 출력됩니다.
지금은 출력 데이터가 하나라 편리함이 크게 체감되지 않을 수 있습니다. 결과 데이터가 많고 복잡하게 중첩되어 있는 때는 이렇게 Schema로 출력해서 보면 훨씬 편하게 데이터를 파악할 수 있습니다.
➋ [Table]은 말 그대로 데이터를 표 형태로 정리해서 보여주는 옵션입니다. 각 행은 하나의 아이템을 나타내고, 열은 각 필드를 나타냅니다. 스프레드시트와 비슷한 형태로 데이터를 볼 수 있어서 여러 아이템의 데이터를 비교하거나 패턴을 찾기에 적합합니다. 특히 API 응답이나 데이터베이스 쿼리 결과처럼 정형화된 데이터를 확인할 때 가장 직관적입니다.
➌ 마지막으로 [JSON]은 원본 JSON 데이터 구조를 그대로 보여줍니다. 들여쓰기와 트리 구조로 계층적인 데이터를 명확히 볼 수 있기 때문에 중첩된 객체나 배열의 세부 내용을 정확히 확인하고 싶을 때 사용하기 좋은 옵션입니다. 또한 JSON 형식이기 때문에 그대로 복사해서 다른 데 활용하기에도 편하다는 장점이 있습니다.
상황과 데이터의 성격에 따라 원하는 보기 유형을 선택하여 출력 데이터를 확인하면 됩니다.
03.2 표현식으로 시간 데이터 가공하기
현재 Date & Time 노드에서 받은 시간 데이터는 “2025-08-03T08:59:55.787-04:00” 같은 ISO 형식입니다. n8n에서는 워크플로를 실행할 때마다 달라지는 값을 자동으로 계산하거나 불러오는 코드를 쓸 수 있습니다. 그걸 표현식expression이라고 합니다. 우리는 표현식을 사용해 이 데이터에서 시간 부분만 추출해서 오전, 오후를 구분하겠습니다.
[01] Edit Fields 노드로 데이터 변환하기
01단계 먼저 Date & Time 노드 다음에 새로운 노드를 추가하겠습니다. Date & Time 노드 오른쪽의 [+] 버튼을 클릭하고 검색창에 ‘Set’을 입력한 다음 검색된 리스트에서 [Edit Fields (Set)] 노드를 선택합니다. Edit Fields 노드는 워크플로에서 데이터를 생성하거나 수정할 수 있는 기본 노드입니다. 입력 데이터를 받아 새로운 필드를 추가하거나 기존 필드를 수정할 수 있으며 데이터를 완전히 새로 정의할 수도 있습니다.
Mode 옵션은 데이터를 설정하는 방식을 선택하는 기능으로, JSON과 Manual Mapping 중에 선택할 수 있습니다. JSON 모드는 한 번에 여러 필드를 JSON 형식으로 입력할 수 있습니다. 다음과 같이 키값 쌍을 코드처럼 한 줄씩 입력합니다. 코드를 다룰 줄 안다면 이 방식이 훨씬 빠르고 직관적입니다.
```
{
"status": "ready",
"count": 5,
"date": "{{ $now.toISODate() }}"
}
```
Manual Mapping 모드는 그래픽 인터페이스로 하나씩 필드를 설정하는 방식입니다. 코드가 익숙하지 않은 때에는 이 방식으로 데이터를 다루는 것이 더 편리하고, JSON 문법 실수를 줄일 수 있습니다.
02단계 여기서는 우선 Manual Mapping 모드로 사용하겠습니다. INPUT 영역의 [currentDate]를 클릭한 채로 드래그하여 Field to Set 영역에 놓아줍니다.
Manual Mapping 모드에서는 모드 옵션 아래에 Fields to Set 영역이 활성화됩니다. 이 영역에 입력 데이터를 드래그하여 가져오거나 [Add Field] 버튼을 클릭하여 필드를 추가할 수 있습니다. [currentDate]를 드래그하면 영역이 표 형태로 바뀌며 currentDate가 첫 번째 칸에 입력되어 있는 것이 보일 겁니다.
➊ 이 첫 번째 칸은 필드명을 입력하는 칸입니다. 이 이름은 워크플로의 다음 노드에서 사용할 수 있는 JSON 키가 됩니다. 여기서는 필드명을 그대로 currentDate로 사용하겠습니다.
➋ 그다음 칸은 이 필드의 타입을 결정하는 부분입니다. 여기 입력된 String은 필드 타입이 문자열이라는 의미입니다. 드롭다운을 클릭하면 문자열(String) 외에도 숫자(Number), 참거짓(Boolean) 등 타입의 종류를 확인할 수 있습니다.
➌ ~ ➍ 마지막 칸은 해당 필드에 넣을 실젯값 또는 표현식을 입력하는 칸입니다. 세 번째 칸에 마우스를 가져다대면 나타납니다. 앞에서 선택한 타입에 맞게 값이 입력되도록 설정해야 합니다. 고정값을 입력하려면 입력창에 마우스 오버한 후 하단에 나타나는 [Fixed], [Expression] 버튼 중 [Fixed] 버튼을 눌러 고정값 입력 모드로 전환합니다. 그러면 워크플로가 실행될 때 항상 입력한 값을 그대로 사용합니다. 워크플로를 실행할 때마다 동적으로 계산된 값이 나오게 하려면 표현식을 사용해야 합니다. 표현식을 입력하려면 [Expression] 버튼을 선택해 표현식 모드로 변환합니다.
지금은 자동으로 다음과 같은 표현식이 입력되어 있고 모드도 표현식 모드로 설정이 되어 있을 겁니다.
```
{{ $json.currentDate }}
```
이전 단계에서 받은 입력값을 자동으로 가져오는 표현식입니다. 표현식이 입력된 부분을 클릭하여 활성화하면 바로 아래에 그 표현식의 예시 결괏값이 나타납니다.
이와 같이 n8n은 입력한 표현식을 사용하면 어떤 식으로 출력되는지 결괏값을 같이 보여주어 사용자가 실시간으로 확인하고 수정하기 쉽게 도와줍니다. 필드를 2개 더 추가하여 표현식에 대해 감을 잡아보겠습니다.
03단계 우리가 작업한 필드 아래에서 [Add Field] 버튼을 클릭하면 입력 표가 생성됩니다. 이번에는 필드명을 currentHour로 넣고 타입은 문자열로 선택한 다음, 입력창에 다음의 표현식을 그대로 입력하겠습니다.
```
{{ new Date($node["Date & Time"].json.currentDate).getHours() }}
```
처음 필드 추가를 했을 때는 입력창의 모드가 고정값 입력 모드이지만 표현식을 입력하는 순간 자동으로 표현식 모드로 변경됩니다. n8n에서 자동으로 감지해서 변경하기 때문에 수동으로 변경해줄 필요가 없습니다.
여기서 입력한 표현식은 이전 노드(Date & Time)에서 받은 currentDate 데이터를 자바스크립트의 Date 객체로 변환한 다음, getHours( ) 함수로 시간(0-23)만 추출하는 표현식입니다. 쉽게 말하면 입력받은 데이터에서 시간 부분을 추출하는 작업을 하는 거죠.
04단계 시간 추출을 했으니 이 시간이 오전인지 오후인지 구분하는 필드를 하나 더 추가하겠습니다. 이번에는 필드명을 timeOfDay으로 입력하고 다음의 표현식을 입력합니다.
```
{{ new Date($node["Date & Time"].json.currentDate).getHours() < 12 ? "오전" : "오후" }}
```
그러면 시간대 구분 필드 설정란 아래에 예시 결괏값이 표시됩니다. 여기서 사용한 표현식은 시간이 12시 미만이면 ‘오전’, 12시 이상이면 ‘오후’를 반환하는 조건문입니다. 이렇게 시간 분류까지 자동화가 끝난 거죠.
05단계 노드 설정 패널 상단의 노드 실행 버튼(Execute step)을 클릭하세요. OUTPUT 탭에 총 세 개의 필드가 출력되는 것을 볼 수 있습니다. 우리가 설정한 필드명에 실행된 결괏값들이 같이 출력됩니다. 표현식을 사용했기 때문에 결괏값은 워크플로를 실행하는 시점에 따라 계속 달라질 겁니다.
[03] If 노드로 조건 분기 만들기
01단계 Edit Fields 노드로 시간대를 나누었으니 이제 분류된 시간대에 따라 다른 메시지를 만들겠습니다. Edit Fields 노드 다음에 조건 분기를 만드는 If 노드를 추가하겠습니다. Edit Fields 노드 오른쪽의 [+] 버튼을 클릭하고 검색창에 ‘if’를 입력한 다음 If 노드를 선택합니다. If 노드는 조건을 평가해서 참(true) 또는 거짓(false) 경로로 워크플로를 나누는 노드입니다.
If 노드를 추가하면 다음과 같은 설정 패널이 열립니다. If 노드는 조건을 평가하는 노드이기 때문에 매개변수에서 비교할 값과 조건을 설정합니다. 조건 설정 표에서 첫 번째 칸의 [value1]과 세 번째 칸의 [value2]는 비교할 값들이 들어갈 영역이고, 두 번째 칸은 조건을 설정하는 부분입니다.
두 번째 칸을 클릭하면 드롭다운으로 타입을 먼저 선택하게 되어 있습니다. 특정 타입을 선택하면 해당 타입으로 설정할 수 있는 조건들의 종류가 이어서 목록으로 나타납니다.
02단계 우리는 이전 노드에서 현재 시간을 오전, 오후로 구분했습니다. 구분된 결괏값이 오전이면 A라는 메시지를, 오후라면 B라는 메시지를 보내도록 만들겠습니다. 조건으로 비교할 값이 이전 노드의 timeOfDay 필드의 값이기 때문에, 이 필드명을 드래그하여 value1에 넣어줍니다. 그러면 자동으로 [value1] 부분이 이전 노드의 특정 필드를 참조하는 표현식 {{ $json.timeOfDay }}으로 바뀝니다.
이 값이 오전인지 확인해야 하기 때문에 value2에는 직접 ‘오전’이라고 입력하겠습니다. 두 번째 칸의 조건 부분은 기본으로 설정된 문자열 비교 수식 is equal to 그대로 두겠습니다.
03단계 If 노드의 매개변수 설정을 완료했으면 상단의 [Back to canvas] 버튼을 클릭해 캔버스로 다시 돌아가봅시다. 그러면 If 노드 오른쪽에 true와 false 두 개의 출력 포트가 생겼습니다.
보통 일반적인 노드는 출력 포트가 하나이지만 If 노드는 조건이 참일 때와 거짓일 때 동작이 달라지기 때문에 포트가 두 개로 나뉘었습니다. 그러면 참일 때와 거짓일 때 어떤 동작을 할지 추가하겠습니다.
04단계 먼저 true 포트의 [+] 버튼을 클릭한 다음 [Edit Fields (Set)] 노드를 선택합니다. 필드명에는 ‘message’를 입력하고 값 입력 부분에는 ‘좋은 아침입니다! 오늘도 활기찬 하루 보내세요.’라는 텍스트를 입력하겠습니다.
마찬가지로 false 포트에도 동작을 설정하겠습니다. 동일하게 Edit Fields 노드를 추가한 다음 필드명은 ‘message’, 값은 ‘좋은 오후입니다! 남은 하루도 화이팅하세요.’를 입력합니다. 다음과 같은 형태로 진행하세요.
05단계 여기까지 설정을 완료했으면 실제로 잘 동작하는지 한 번 테스트를 해보는 게 좋겠죠? 전체 흐름을 보기 위해서 이번에는 캔버스에서 전체 워크플로를 실행하겠습니다.
워크플로를 실행하는 시간에 따라 If 노드 다음에 실행되는 노드가 달라지는 것을 볼 수 있습니다.
<한 걸음 더!> 분기를 2개보다 더 많이 할 수도 있나요?
지금처럼 오전, 오후로 나누는 것이 아니라 아침, 점심, 저녁으로 나누어야 하는 경우라면 Switch 노드를 사용하면 됩니다. If 노드는 조건식이 참인지 거짓인지를 판별하는 단일 조건을 사용합니다. 하지만 Switch 노드는 여러 조건을 동시에 처리할 수 있어 더 복잡한 분기를 만들 수 있습니다. 따라서 3개 이상의 분기를 해야 하는 때에는 Switch 노드를 사용하면 됩니다. 사용법도 If 노드와 유사하기 때문에 어렵지 않게 느껴질 겁니다.
워크플로는 자동으로 저장되지 않기 때문에 페이지를 나가기 전에는 반드시 저장하세요.
03.4 계정 연결하여 Gmail로 메일 발송하기
저자 선생님의 유튜브 강의를 참고해서 Gmail과 n8n을 연결하세요.
https://youtu.be/exENA9f-e0A?si=dxaagbTbksXhLirc
[03] Gmail 노드로 이메일 보내기
그러면 사전 준비 단계를 마쳤으니 이제 실제로 이메일을 보내는 노드를 추가하겠습니다.
01단계 앞에서 만든 워크플로를 한 번 실행합니다. 마지막으로 만든 [Edit Fields] 노드 다음에 Gmail 노드를 추가하겠습니다. 이때, 워크플로가 실행되어 초록색으로 향한 쪽에서 노드를 추가하세요.
각 Edit Fields 노드 오른쪽의 [+] 버튼을 클릭한 다음 노드 검색창에 ‘gmail’을 입력하고 [Gmail] 노드를 선택합니다. 액션은 [Send a message]를 선택합니다.
02단계 추가된 Gmail 노드 설정 패널에서 매개변수Parameters를 설정합니다.
➊ 가장 처음 나오는 Credential to connect with는 이 노드가 Gmail API에 연결할 때 사용할 인증 정보를 지정하는 항목입니다. 조금 전에 우리가 등록한 인증 정보, [Gmail account]를 선택하면 됩니다.
➋ Resource는 Gmail API가 제공하는 여러 기능 중에서 이 노드가 어떤 기능을 사용할지를 결정하는 항목입니다. Gmail 노드에는 일반적으로 Resource로 Message, Thread, Label 같은 옵션이 있습니다. Message는 Gmail의 ‘개별 메일’를 대상으로 동작한다는 의미입니다. Thread는 메일 스레드(같은 제목의 묶음) 대상으로, Label은 Gmail 라벨을 대상으로 작업합니다. 여기서는 Message로 진행하겠습니다.
➌ Operation 항목을 지정하면 선택한 Resource에 대해 어떤 작업을 할지를 결정하게 됩니다. Get 동작으로 메시지를 가져오거나, Delete로 삭제하는 등 다양한 작업을 할 수 있습니다. Send a Message는 개별로 메일을 하나씩 발송하는 작업을 합니다. 여기서는 Resource와 Operation을 각각 기본 설정되어 있는 값인 Message와 Send 그대로 두고 다음으로 넘어갑니다.
➍ To 부분에는 수신할 메일 주소를 입력합니다. 여기서는 테스트를 위해 자신의 메일 주소를 입력합니다.
➎ Subject는 메일의 제목입니다. 우리는 시간대에 따라 “오전 인사메시지”, ”오후 인사메시지”라는 제목으로 발송하겠습니다. 오전, 오후 값은 바로 이전 노드가 아닌 첫 번째 Edit Fields 노드(Edit Fields)에서 반환된 값이기 때문에 해당 노드에서 timeOfDay 필드명을 Subject 입력란에 드래그 앤 드롭으로 가져옵니다. 그리고 한 칸 띈 다음 ‘인사메시지’를 입력합니다. 그러면 다음과 같이 입력될 겁니다.
```
{{ $('Edit Fields').item.json.timeOfDay }} 인사메시지
```
➏ 그다음 항목인 Email Type은 본문 형식을 Text 또는 HTML로 고릅니다. 여기서는 일반 텍스트 메시지로 발송할 것이기 때문에, HTML이나 Text 어떤 것을 선택해도 같습니다.
➐ Message 항목은 메일의 본문에 들어갈 부분을 설정하는 항목입니다. 우리는 이전 노드에서 작업한 message 필드를 가져와서 그대로 넣어주겠습니다. timeOfDay 필드명을 Subject 입력란에 드래그 앤 드롭으로 가져온 방법과 같습니다. 입력되는 내용은 다음과 같습니다.
```
{{ $json.message }}
```
이외에도 하단의 [Add Option]을 클릭하면, 메일 참조를 설정하거나 첨부 파일 등 부가적인 메일 발송 옵션을 추가로 설정할 수 있습니다.
03단계 여기까지 설정을 완료했으면, 상단의 [Execute step] 버튼을 클릭하세요.
정상적으로 발송이 완료되었다고 OUTPUT 상단에 체크 표시가 뜹니다. 출력된 값들을 보면 이상한 암호같은 글자들만 보입니다. OUTPUT에 표시되는 값들은 Gmail API가 해당 메일을 성공적으로 발송한 뒤 돌려주는 응답 데이터입니다.
➊ id는 Gmail에서 발급한 이 메일의 고유 ID입니다. 나중에 이 메일을 조회하거나 삭제할 때 이 ID를 사용합니다.
➋ threadId는 메일이 속한 스레드의 고유 ID입니다. 새 메일이면 새로운 threadId가 생성되고, 답장이라면 기존 threadId와 같습니다.
➌ labelIds는 이 메일에 적용된 라벨 목록입니다. 우리가 사용한 노드는 메일 발송 노드이기 때문에 SENT 라벨이 기본적으로 붙습니다. 그 외에도 메일에 따라 여러 라벨이 추가적으로 포함될 수 있습니다. 여기 화면에 표시된 UNREAD는 읽지 않은 메일에 붙는 라벨이며, INBOX는 받은 편지함에 있는 메일에 기본적으로 붙는 라벨입니다. 이외에도 스팸으로 분류된 메일에는 SPAM, Gmail에서 자동으로 중요하다고 판단한 메일에는 IMPORTANT, 사용자가 별표 표시해둔 메일에는 STARRED라는 라벨이 붙게 됩니다.
이와 같이 OUTPUT에 표시되는 값들은 우리가 보낸 메일의 식별 정보로, 보낸 메일을 나중에 추적하거나 관리하기 위한 키 정보라고 이해하면 됩니다.
04단계 이렇게 메일 발송 노드의 파라미터 설정을 완료했으면 분기된 곳에도 같은 노드를 추가해서 설정을 해줘야겠죠? 그렇지만 같은 내용의 Gmail 발송 노드를 추가하기 위해 처음부터 모든 설정을 다시 하나하나 하는 것은 비효율적입니다. 이럴 때는 노드를 복제하면 됩니다.
➊ 노드 상단의 [⋯]을 클릭하거나 노드에서 마우스 오른쪽 버튼을 클릭하면 열리는 목록에서 [Duplicate]를 선택하면 같은 설정의 노드가 복제됩니다. ➋ 복제된 노드를 앞선 노드와 연결하면 됩니다.
-+
05단계 이렇게 하나의 워크플로를 만들어보았습니다. 완성된 워크플로는 저장하지 않으면 모두 지워지기 때문에 반드시 저장하세요. 그리고 우리가 Gmail 발송 노드를 실행해서 보낸 메일이 잘 발송됐는지 메일함에 가서 확인해봅시다.
정상적으로 메일이 발송된 것을 확인할 수 있고, 메일을 읽어보면 입력했던 메시지가 본문으로 잘 들어 있습니다. 메일 하단에 이 메일은 n8n에서 자동으로 발송된 메일이라는 문구도 보입니다. 만약 이 문구를 빼고 싶으면 Gmail 발송 노드 설정 패널에서 추가 옵션인 [Append n8n Attribution]를 비활성화하면 됩니다.
