코드 실행
코드 실행 작업은 JavaScript를 실행합니다. 워크플로의 이전 단계에서 가져온 데이터를 코드 실행 작업에 대한 입력으로 전달하고, 후속 단계에서 사용할 값을 반환할 수 있습니다.
필드
코드 실행 작업에는 다음 필드가 포함됩니다.
| 필드 | 설명 |
|---|---|
| 입력 | 필수 사항입니다. 이전 단계의 데이터를 코드 실행 작업에 대한 입력으로 사용하기 위한 GraphQL 쿼리입니다. |
| 출력 | 필수 사항입니다. GraphQL의 스키마 정의 언어(SDL)에 정의된 작업에서 반환할 데이터의 표현입니다. |
| 코드 | 필수 사항입니다. 코드 실행 작업이 실행할 JavaScript입니다. |
입력 데이터
코드 실행 작업 이전 단계에서 입력 데이터를 전달할 수 있습니다. 이 데이터를 포함하려면 입력 필드에 GraphQL 쿼리를 작성하면 됩니다. 쿼리에서 반환된 데이터는 export default로 표시된 함수(관례상 main)에 대한 input 인수로 사용할 수 있습니다.
입력 쿼리는 Shopify Admin API에 대한 쿼리가 아니라 Flow 환경 데이터에 대한 쿼리입니다. 따라서 입력 데이터에 Shopify 쿼리를 삽입할 수 없습니다. 또한 Flow가 쿼리에서 edges 및 nodes를 처리하므로 해당 구문이나 다른 페이징 구문을 쿼리에 추가할 필요가 없습니다.
주문 참고 사항 및 품목의 제목을 가져오는 입력 예시입니다.
{
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 캠페인의 이름이 포함된 주문에 태그를 추가합니다. 템플릿 보기