muaco Tech Note

업무 자동화docs.n8n.io

n8n 표현식 사용법앞 노드 값을 꺼내 쓰는 $json과 노드 이름 참조

n8n에서 앞 단계 노드의 값을 표현식으로 꺼내 쓰고, 표현식이 필요한 칸과 고정값으로 둘 칸을 가려 쓸 수 있습니다.

안녕하세요, muaco입니다.

이 글을 따라 하면 생기는 일

끝까지 따라 하면 n8n에서 앞 노드가 만든 값을 다음 노드의 칸에 꺼내 쓸 수 있습니다. 바로 앞 노드의 값은 {{ $json.name }}처럼 짧게, 몇 단계 앞 노드의 값은 이름을 불러서 꺼냅니다. 어느 칸에 표현식을 쓰고 어느 칸을 고정값으로 둘지도 함께 가려 봅니다.

사무실에서 서류 한 장이 여러 책상을 차례로 거쳐 간다고 떠올려 보세요. 책상마다 맡은 일이 하나씩 있습니다. n8n에서는 이 책상 한 자리를 노드라고 부릅니다.

뒤 책상 담당자는 앞에서 넘어온 서류를 보고 일합니다. 서류의 한 칸을 콕 집어 가리키는 짧은 식, 그 이름이 표현식입니다. 언제나 {{ }} 안에 적습니다.

생김새는 JavaScript를 닮았습니다. 그렇다고 프로그래밍을 배울 필요는 없습니다. 점(.)으로 이름을 이어 칸을 찾아간다는 규칙 하나면 이 글은 충분합니다.

시작 전에 준비할 환경

  • n8n을 열 수 있는 곳: n8n Cloud 계정이나 직접 설치한 n8n, 둘 중 하나면 됩니다. 공식 문서에 따르면 표현식은 양쪽에서 똑같이 쓸 수 있습니다.
  • 연습해도 되는 워크플로 공간: 회사에서 함께 쓰는 n8n이라면 새 워크플로를 만들어도 되는지 먼저 확인하세요. 남이 쓰는 워크플로를 고치며 연습하면 실제 업무가 멈출 수 있습니다.
  • 터미널은 필요 없음: 모든 단계가 브라우저의 편집 화면에서 끝납니다.

화면 문구는 2026년 10월 현재 공식 문서를 기준으로 적었습니다. 버전에 따라 버튼 이름이 조금 다를 수 있습니다. 그럴 때는 가장 비슷한 이름을 찾아 누르세요.

따라 하기: 앞 노드 값을 칸에 꺼내 넣기

준비: 견본 데이터 만들기

따라 하기
  1. 새 워크플로에서 Add first step을 누르고 검색 칸에 manual을 쳐서 손으로 실행하는 트리거를 고르세요. 목록에는 Trigger manually 같은 문구로 보일 수 있고, 고르면 Manual Trigger 노드가 붙습니다. 사람이 실행 버튼을 눌러야만 도는 시작점이라 연습에 알맞습니다.
  2. Manual Trigger 뒤의 +를 누르고 Search nodes 칸에 Edit Fields를 쳐서 Edit Fields (Set) 노드를 붙입니다. 서류에 칸을 새로 만들거나 고쳐 쓰는 노드입니다.
  3. 노드 창 왼쪽 위의 이름을 눌러 Customer로 바꾸세요. 뒤에서 이 이름으로 노드를 부르니, 짧고 띄어쓰기 없는 이름이 편합니다.
  4. 모드가 Manual Mapping인지 확인하세요. 양식지에 펜으로 칸을 하나씩 적어 넣듯, 화면에서 직접 칸을 만들고 채우는 방식입니다. Add Field로 칸 두 개를 만들고 이름은 name과 city, 값은 김하나와 서울로 적습니다.
  5. 두 칸 모두 Fixed 상태로 두고 Execute step을 누르세요. 언제 돌려도 같은 값이라 표현식이 필요 없는 자리입니다. 실행 결과에 name과 city가 보이면 준비 끝.

설정: 바로 앞 노드에서 값 꺼내기

따라 하기
  1. Customer 뒤에 Edit Fields (Set) 노드를 하나 더 붙이고 여세요. 왼쪽의 INPUT 패널은 앞 책상에서 넘어온 서류를 펼쳐 둔 받은 서류함입니다. 여기에 name과 city가 보이면 제대로 이어졌습니다.
  2. Add Field로 칸을 만들고 이름 칸에 greeting을 적습니다. 칸 이름은 서류가 바뀌어도 늘 같으니 Fixed로 둡니다.
  3. 값 칸에 INPUT의 name을 끌어다 놓으세요. n8n이 값 칸을 Expression 모드로 바꾸고 {{ $json.name }}을 대신 적어 줍니다.
  4. 값 칸을 {{ $json.name }}님, {{ $json.city }} 지점 안내입니다.로 고칩니다. 미리보기에 "김하나님, 서울 지점 안내입니다."가 보이면 맞게 쓴 식입니다.

여기서 $json은 지금 노드로 들어온 서류를 뜻합니다. 공식 문서는 이를 $input.item.json의 줄임말이라고 설명합니다. 바로 앞 노드가 넘긴 결과만 본다는 점을 기억해 두세요.

확인: 몇 단계 앞 노드에서 꺼내기

따라 하기
  1. Execute step을 눌러 결과에 greeting 문장이 생겼는지 보세요. 표현식은 서류 한 장마다 따로 계산되므로, 입력이 여러 장이면 장마다 다른 문장이 나옵니다.
  2. 그 뒤에 Edit Fields (Set) 노드를 하나 더 붙이세요. 앞에서처럼 Add Field로 칸을 만들고 이름 칸에 city_again을 적습니다. 값 칸에 마우스를 올려 Fixed | Expressions 전환에서 Expressions를 고르고, {{ $('Customer').item.json.city }}를 적으세요.
  3. 미리보기에 서울이 뜨는지 확인합니다. 두 단계 앞의 노드에서도 값을 꺼내 온 셈입니다.

왜 이름으로 불러야 할까요? 중간 노드가 city를 넘겨주지 않으면 $json으로는 닿지 않기 때문입니다. $('Customer').item은 지금 서류를 만들어 낸 Customer 쪽의 원래 서류를 찾아 줍니다.

이렇게 짝을 찾아 주는 장치를 아이템 연결(item linking)이라고 부릅니다. 보통은 n8n이 알아서 맞춰 주니 신경 쓸 일이 드뭅니다. 문제가 생기는 경우는 아래에 따로 적었습니다.

표현식이 필요한 칸과 아닌 칸

기준은 하나입니다. 서류마다 값이 달라지거나 앞 노드에서 받아 와야 하면 Expression, 언제나 같은 값이면 Fixed입니다. 위에서 칸 이름은 Fixed, 값은 Expression으로 둔 까닭이 여기 있습니다.

공식 문서는 할 수 있는 곳이라면 표현식을 쓰라고 권합니다. 계산된 값이 미리보기로 바로 보이고, 노드를 따로 늘리지 않아도 되기 때문입니다. 값 꺼내기, 날짜 형식 바꾸기, 간단한 계산이 여기에 들어갑니다.

반대로 여러 서류를 묶거나 쪼개는 일은 칸 하나에 담기 어렵습니다. 이럴 때는 다른 도구가 맞습니다. 문서가 비교해 둔 네 가지를 표로 옮겼습니다.

방법이럴 때예쓸 수 있는 곳
표현식칸 하나를 앞 데이터로 채울 때값 꺼내기, 날짜 형식, 간단한 계산Cloud, 직접 설치
데이터 변환 노드흔한 정리를 화면에서 고르고 싶을 때Aggregate, Sort, Remove Duplicates, Split OutCloud, 직접 설치
Code 노드구조를 크게 바꾸거나 여러 서류를 한꺼번에 다룰 때JavaScript나 Python으로 배열 다시 짜기Cloud, 직접 설치
AI Transform 노드원하는 결과를 말로 설명해 코드를 받고 싶을 때"사용자별로 묶어 합계 내기"Cloud만

하나 덧붙이면, 표현식 안에서는 Python을 쓸 수 없습니다. Python은 Code 노드에서만 됩니다.

막히기 쉬운 곳

"Can't get data for expression"이 뜰 때

보이는 화면: 미리보기나 실행 결과에 Can't get data for expression 오류가 납니다.

원인: 표현식이 가리키는 노드가 아직 실행되지 않아 읽을 서류가 없습니다. 공식 문서는 다른 노드와 연결하지 않은 단계를 따로 시험할 때도 이 오류가 뜬다고 적어 둡니다.

해결: 가리키는 노드까지 워크플로를 먼저 실행하세요. Execute workflow로 전체를 한 번 돌리면 확실합니다. 비슷한 오류로 Referenced node is unexecuted가 뜨면, 그 노드가 먼저 실행되도록 선을 다시 잇거나 표현식을 고치세요.

"Multiple matching items for expression"이 뜰 때

보이는 화면: ERROR: Multiple matching items for expression 오류가 납니다.

원인: 중간의 Summarize, Aggregate, Merge 같은 노드가 서류 여러 장을 한 장으로 합쳤습니다. .item은 원래 서류 한 장을 찾아가는데, 후보가 여럿이라 고르지 못합니다.

해결: .item 대신 .first(), .last(), .all()[0]처럼 몇 번째 서류인지 직접 정하세요. 같은 정보를 가진 다른 노드를 가리켜도 됩니다.

오류 없이 값만 비어 있을 때

보이는 화면: 노드는 성공으로 끝났는데 칸이 비어 있습니다. 편집 화면의 미리보기에만 ERROR: '<node-name>' is on another branch가 보입니다.

원인: 가리키는 노드가 다른 갈래에 있습니다. 예를 들어 Merge 노드를 Append 모드로 두면, 한쪽 갈래에서 온 서류는 다른 쪽 노드와 짝을 찾지 못합니다. 이때 표현식은 빈 값(null)이 됩니다.

해결: .first(), .last(), .all()[index]로 바꾸세요. Merge 노드를 Combine 모드로 바꿔 서류 한 장에 양쪽 데이터를 함께 담는 방법도 있습니다. 실행 기록만 보면 놓치기 쉬우니 미리보기를 꼭 확인합니다.

더 나아가려면 다음 단계

값 꺼내기에 익숙해졌다면 데이터 변환 노드를 하나씩 붙여 보세요. Split Out은 목록 하나를 여러 서류로 쪼개고, Summarize는 엑셀 피벗 테이블처럼 묶어서 셉니다. 표현식으로 버거운 일이 나오면 그때 Code 노드를 열어도 늦지 않습니다.

이상으로 글 마치겠습니다.

출처

#n8n#표현식#업무 자동화#데이터 매핑#Edit Fields#워크플로#노코드

같은 분류의 글