코드 실행

코드 실행 작업은 JavaScript를 실행합니다. 워크플로의 이전 단계에서 가져온 데이터를 코드 실행 작업에 대한 입력으로 전달하고, 후속 단계에서 사용할 값을 반환할 수 있습니다.

필드

코드 실행 작업에는 다음 필드가 포함됩니다.

코드 실행 작업에 사용되는 필드입니다.
필드설명
입력필수 사항입니다. 이전 단계의 데이터를 코드 실행 작업에 대한 입력으로 사용하기 위한 GraphQL 쿼리입니다.
출력필수 사항입니다. GraphQL의 스키마 정의 언어(SDL)에 정의된 작업에서 반환할 데이터의 표현입니다.
코드필수 사항입니다. 코드 실행 작업이 실행할 JavaScript입니다.

입력 데이터

코드 실행 작업 이전 단계에서 입력 데이터를 전달할 수 있습니다. 이 데이터를 포함하려면 입력 필드에 GraphQL 쿼리를 작성하면 됩니다. 쿼리에서 반환된 데이터는 export default로 표시된 함수(관례상 main)에 대한 input 인수로 사용할 수 있습니다.

입력 쿼리는 Shopify Admin API에 대한 쿼리가 아니라 Flow 환경 데이터에 대한 쿼리입니다. 따라서 입력 데이터에 Shopify 쿼리를 삽입할 수 없습니다. 또한 Flow가 쿼리에서 edgesnodes를 처리하므로 해당 구문이나 다른 페이징 구문을 쿼리에 추가할 필요가 없습니다.

주문 참고 사항 및 품목의 제목을 가져오는 입력 예시입니다.

{
  order {
    note
    lineItems {
      title
    }
  }
}

이 데이터는 코드에서 사용할 수 있는 input 변수로 변환됩니다.

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

함수 서명에서 입력을 구조 분해할 수도 있습니다.

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

메타 필드

코드 실행에서 단일 메타 필드 값에 액세스하려면 먼저 Flow의 환경 데이터에 메타 필드를 추가해야 합니다. 이 작업은 코드 실행이 아닌 모든 작업 또는 조건에서 수행할 수 있습니다. 예를 들어 로그 출력 작업을 추가한 다음 지침에 따라 메타 필드를 추가할 수 있습니다.

워크플로 환경에 메타 필드를 추가한 후에는 코드 실행에서 액세스할 수 있습니다. 예를 들어 giftMessage라는 별칭의 주문 메타 필드를 추가했다고 가정해 보겠습니다. 그러면 입력 쿼리에서 여기에 액세스할 수 있습니다.

{
  order {
    giftMessage {
      value
    }
  }
}

출력 데이터

코드 실행 작업은 사용자 지정 데이터를 반환할 수 있습니다. 코드가 반환할 데이터의 유형을 정의하려면 출력 필드와 GraphQL의 스키마 정의 언어(SDL)를 사용하십시오. 지원되는 출력 유형은 String, Int, Float, Boolean, ID이며, 이는 필수 필드, 목록 및 사용자 지정 데이터를 지정하는 방법에 대한 SDL 사양을 따릅니다.

예를 들어, giftMessage라는 문자열과 totalGifts라는 숫자를 반환하려면 다음과 같이 하십시오.

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

주석은 선택 사항이지만 Flow UI에서 데이터를 설명하는 데 사용됩니다. JavaScript 코드에서 이 데이터를 출력하려면 유형과 일치하는 객체를 반환하십시오.

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

사용자 지정 유형을 정의하여 더 복잡한 데이터를 반환할 수도 있습니다. 예를 들어, message라는 문자열과 amount라는 숫자를 포함하는 Gift라는 유형을 반환하려면 다음과 같이 하십시오.

type Output {
  "The gift to send"
  gifts: [Gift!]!
}

type Gift {
  "The message to include in the gift"
  message: String!
  "The total number of gifts"
  amount: Int!
}

이 작업 다음에 오는 단계에서 이 데이터에 액세스하려면 코드 실행이라는 이름의 변수를 사용하십시오. 이 변수는 코드 실행 작업 구성에서 정의하는 Output 스키마에 따라 유형이 지정됩니다. 이 변수는 조건과 작업 모두에서 사용할 수 있습니다.

Console.log

console.log를 사용하여 문제 해결을 위해 Flow의 워크플로 실행 로그에 데이터를 출력할 수 있습니다. 출력은 워크플로의 실행 로그에 표시됩니다. 예를 들어 다음은 유효합니다.

export default function main(input) {
  console.log('Hello, world!');
  //Hello, world!
  console.log(input);
  // { order: { note: 'Hello', lineItems: [ { title: 'World' } ] } }
  console.log(input.order, 'is the order');
  // { note: 'Hello', lineItems: [ { title: 'World' } ] }
  // is the order

  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

코드 실행 작업에서는 console.info, console.error 또는 기타 함수를 사용할 수 없습니다.

예시

코드 작업에 대한 예시는 Flow 예시 리포지토리에서 찾을 수 있습니다.

제한 사항

코드 실행 작업에는 다음과 같은 제한 사항이 있습니다.

  • 코드 실행 작업은 ECMA2020 JavaScript를 지원합니다. NodeJS 또는 CommonJS API 또는 모듈 가져오기는 지원하지 않습니다.
  • 코드에서 HTTP 호출(fetch)을 할 수 없습니다.
  • 임의 함수 및 시계 기반 함수는 사용할 수 없습니다. scheduledAt 또는 createdAt과 같은 날짜 데이터는 입력으로 전달할 수 있습니다.
  • Console.log는 브라우저 콘솔에 기록되지 않습니다.
  • 페이로드 크기를 절약하기 위해 출력 데이터 페이로드는 다운스트림 단계에서 사용되는 변수만 반환합니다.
  • 코드 실행 작업에서 직접 메타 필드 별칭을 추가할 수 없습니다. 이 작업을 수행하려면 이 페이지의 메타 필드 섹션을 검토하십시오.

또한 다음과 같은 제한이 적용됩니다.

  • 입력 데이터 쿼리는 5,000자로 제한됩니다.
  • 출력 데이터 스키마는 5,000자로 제한됩니다.
  • 출력 데이터 페이로드 및 Console.log 출력은 합쳐서 50KB로 제한됩니다.
  • 코드는 50,000자를 초과할 수 없습니다.
  • 총 실행 시간은 5초로 제한됩니다.
  • 메모리 사용량은 10MB로 제한됩니다.

템플릿

새 주문에 무료(100% 할인) 품목 추가

이 템플릿은 품목의 재고가 있을 때 새 주문에 무료 할인 품목을 추가합니다. 재고를 확인하고 100% 할인을 적용하며 고객에게 알리지 않고 주문을 업데이트합니다. 이 워크플로는 다음 시나리오에 자동화를 추가하는 데 도움이 될 수 있습니다.

  • 주문에 깜짝 무료 품목을 포함하여 고객 만족도 향상
  • 주문에 무료 샘플로 추가하여 신제품이나 잘 알려지지 않은 제품 홍보
  • 무료 품목 포함 및 할인을 자동화하여 프로모션 간소화

템플릿 보기

비활성 반품 취소

특정 기간 내에 환불되거나 재입고되지 않은 반품을 자동으로 취소합니다. 템플릿 보기

코드 실행 작업을 사용하여 접두사가 있는 태그를 제품 메타 필드로 변환

이 워크플로는 'color:'와 같은 접두사로 시작하는 태그를 가져와 제품 메타 필드 목록에 추가합니다. 코드 실행 작업을 사용하여 태그와 메타 필드 목록의 기존 항목을 구문 분석합니다. 워크플로는 제품이 생성될 때 실행되지만 기존 제품에서 수동으로 실행할 수도 있습니다. 템플릿 보기

고객이 한 제품의 여러 이형 상품을 주문할 때 알림 전송

고객이 동일한 제품의 여러 이형 상품을 주문하면 이메일 알림을 받습니다. 템플릿 보기

주문에 번들이 포함된 경우 알림 전송

이 워크플로는 주문이 생성될 때 시작되며 주문의 제품 중 번들의 일부로 구매된 제품이 있는지 확인합니다. 번들이 발견되면 번들 세부 정보가 포함된 내부 이메일이 전송됩니다. 또한 이 워크플로를 주문 내 번들의 존재를 감지해야 하는 모든 사용 사례의 시작점으로 사용할 수 있습니다. 템플릿 보기

연결된 UTM 캠페인으로 주문에 태그 지정

연결된 UTM 캠페인의 이름이 포함된 주문에 태그를 추가합니다. 템플릿 보기