코드 실행

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

필드

코드 실행 작업에 포함된 필드는 다음과 같습니다.

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

입력 데이터

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

입력 쿼리는 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
    }
  }
}

출력 데이터

코드 실행 작업을 수행하면 사용자 지정 데이터를 반환할 수 있습니다. 코드에서 반환되는 데이터 유형을 정의하려면 Output 필드 및 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% 할인을 적용하며, 고객에게 알리지 않고 주문을 업데이트합니다. 이 자동화는 (1) 주문에 깜짝 무료 품목을 포함하여 고객 만족도를 높이는 데 유용할 수 있습니다. (2) 주문에 무료 샘플로 추가하여 신제품 또는 잘 알려지지 않은 제품을 홍보하거나 (3) 무료 품목 포함 및 할인을 자동화하여 홍보를 간소화하는 데 유용합니다. 템플릿 보기

비활성 반품 취소

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

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

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

고객이 제품의 여러 이형 상품을 주문할 때 알림 보내기

고객이 동일한 제품의 여러 이형 상품을 주문할 때 이메일 알림이 제공됩니다. 템플릿 보기

주문에 번들이 포함되어 있는 경우 알림 보내기

이 워크플로는 주문이 생성될 때 시작되며 주문에 포함된 제품이 번들의 일부로 구매된 것인지 확인합니다. 그러한 경우 번들 세부 정보가 포함된 내부 이메일이 제공됩니다. 또한 이 워크플로를 주문 내에서 번들이 있는지 감지해야 하는 모든 사용 사례의 시작점으로 사용할 수 있습니다. 템플릿 보기

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

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

적절한 답변을 찾을 수 없습니까? 언제든지 도와드리겠습니다.