Workflows
표현식
워크플로우에서 동적 값을 사용하는 방법을 알아봅니다.
기본 문법
표현식은 {{ }} 중괄호로 감싸서 작성합니다.
{{ 표현식 }}이전 노드의 데이터 참조
// 특정 노드의 출력 데이터 참조
{{ $node["노드명"].json.필드명 }}
// 예시: "Facebook Graph API" 노드의 campaign_name 필드
{{ $node["Facebook Graph API"].json.campaign_name }}주요 변수
| 변수 | 설명 | 예시 |
|---|---|---|
$json | 현재 입력 데이터의 첫 번째 항목 | {{ $json.name }} |
$input | 현재 노드의 전체 입력 데이터 | {{ $input.all() }} |
$node["이름"] | 특정 노드의 출력 데이터 | {{ $node["Slack"].json }} |
$now | 현재 시간 (ISO 형식) | {{ $now }} |
$today | 오늘 날짜 (YYYY-MM-DD) | {{ $today }} |
데이터 접근 패턴
단일 필드 접근
// 이전 노드의 특정 필드
{{ $json.customer_name }}
// 중첩된 객체
{{ $json.user.profile.email }}
// 배열의 특정 인덱스
{{ $json.items[0].name }}특정 노드의 데이터
// "데이터 조회" 노드의 결과
{{ $node["데이터 조회"].json.total_count }}
// "API 호출" 노드의 응답
{{ $node["API 호출"].json.data.results }}입력 데이터 전체
// 모든 입력 항목
{{ $input.all() }}
// 첫 번째 입력 항목
{{ $input.first() }}
// 마지막 입력 항목
{{ $input.last() }}
// 입력 항목 개수
{{ $input.length }}데이터 변환 (Transform 노드)
Transform 노드를 사용하면 이전 노드의 데이터를 새로운 형태로 변환할 수 있습니다.
필드 매핑 예시
[
{
"source": "campaign_name",
"target": "캠페인명"
},
{
"source": "impressions",
"target": "노출수",
"type": "toNumber"
},
{
"source": "date_start",
"target": "시작일",
"type": "toDate"
}
]지원 타입 변환
| 타입 | 설명 | 예시 |
|---|---|---|
toString | 문자열로 변환 | 123 → "123" |
toNumber | 숫자로 변환 | "456" → 456 |
toBoolean | 불리언으로 변환 | "true" → true |
toDate | ISO 날짜로 변환 | "2024-01-01" → ISO 문자열 |
parseJson | JSON 파싱 | '{"a":1}' → {a: 1} |
중첩 필드 접근
점(.) 표기법으로 중첩된 필드에 접근합니다.
[
{
"source": "user.name",
"target": "사용자명"
},
{
"source": "data.metrics.clicks",
"target": "클릭수"
}
]코드 노드에서 표현식
Code 노드에서는 JavaScript를 직접 작성하여 복잡한 변환을 수행할 수 있습니다.
// 입력 데이터 가공
const items = $input.all();
return items.map(item => ({
이름: item.json.name,
금액: Number(item.json.amount) * 1.1, // 10% 추가
생성일: new Date(item.json.created_at).toLocaleDateString('ko-KR')
}));사용 가능한 헬퍼
// 현재 입력 데이터
$input.all() // 모든 항목
$input.first() // 첫 번째 항목
$input.last() // 마지막 항목
// 특정 노드 데이터
$node["노드명"].json
// 현재 시간
$now // ISO 형식
$today // YYYY-MM-DD활용 예시
슬랙 메시지 작성
// 메시지 템플릿
"📊 광고 성과 리포트
캠페인: {{ $node["Facebook API"].json.campaign_name }}
노출수: {{ $node["Facebook API"].json.impressions }}
클릭수: {{ $node["Facebook API"].json.clicks }}
CTR: {{ $node["Facebook API"].json.ctr }}%"데이터모델에 저장
// 저장할 데이터
{
"캠페인명": "{{ $json.campaign_name }}",
"노출수": "{{ $json.impressions }}",
"비용": "{{ $json.spend }}",
"수집일": "{{ $today }}"
}조건 분기
// If 노드 조건
{{ $json.amount > 10000 }} // 금액이 10000 초과
{{ $json.status === "active" }} // 상태가 active
{{ $json.items.length > 0 }} // 항목이 있는 경우자주 발생하는 오류
필드가 없는 경우: 참조하려는 필드가 없으면 undefined가 반환됩니다. 옵셔널 체이닝(?.)을 사용하세요.
// ❌ 에러 발생 가능
{{ $json.user.name }}
// ✅ 안전한 접근
{{ $json.user?.name }}
{{ $json.user?.name ?? "이름 없음" }}노드명 오타: 노드명은 정확히 일치해야 합니다. 공백과 대소문자를 주의하세요.
// ❌ 노드명 오타
{{ $node["facebook api"].json }}
// ✅ 정확한 노드명
{{ $node["Facebook Graph API"].json }}