SuitsDocs
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
toDateISO 날짜로 변환"2024-01-01" → ISO 문자열
parseJsonJSON 파싱'{"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 }}

관련 문서