เงื่อนไขใน Shopify Flow
เงื่อนไขจะทำให้เวิร์กโฟลว์ดำเนินต่อไปเมื่อตรงตามกฎบางอย่าง ซึ่งเปรียบเสมือนการเริ่มต้นของคำสั่ง “ถ้า-เช่นนั้น” เมื่อคุณตั้งค่าเงื่อนไข คุณจะเลือกเกณฑ์จากช่องต่างๆ ใน GraphQL Admin API (เช่น product.title) ตัวดำเนินการทางตรรกะ (เช่น เท่ากับ) และค่าที่จะใช้ตรวจสอบ (เช่น กางเกงยีนส์สีน้ำเงิน) เมื่อเวิร์กโฟลว์ประเมินเงื่อนไข Flow จะตรวจสอบค่าที่กำหนดไว้ในเวิร์กโฟลว์กับค่าที่ส่งคืนมาจากร้านค้าของคุณ จากนั้นจะแสดงผลลัพธ์ในการทำงานของเวิร์กโฟลว์ หากต้องการทำความเข้าใจเกี่ยวกับช่องและค่าที่ใช้กำหนดเงื่อนไขได้ดียิ่งขึ้น โปรดดูวิธีดูตัวอย่างข้อมูลร้านค้า
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำความเข้าใจพื้นฐานของเงื่อนไข
ในหน้านี้
ประเภทข้อมูลที่ใช้กับ Flow
เมื่อคุณตั้งค่าเงื่อนไข คุณจะต้องเลือกเกณฑ์จากช่องต่างๆ ที่มีอยู่ใน Admin API และ Flow จะประเมินเทียบกับค่าที่ได้รับจากร้านค้าของคุณ
Flow รองรับข้อมูลประเภทต่างๆ ดังนี้
- Float: ค่า Float คือตัวเลขที่มีทศนิยม เช่น 4.25
- Integer: ค่า Integer คือจำนวนเต็มที่ไม่มีทศนิยม เช่น 42
- วันที่: ค่าวันที่คือการแสดงวันที่ในรูปแบบตัวเลข เช่น 01012021
- สตริง: ค่าสตริงคือข้อความ การเปรียบเทียบโดยใช้ค่าสตริงจะไม่พิจารณาตัวพิมพ์ใหญ่-เล็ก
- บูลีน: ค่าบูลีนคือค่าจริงหรือเท็จ
- Enum: ค่า Enum คือชุดข้อมูลที่อนุญาตให้ตัวแปรเป็นชุดของค่าคงที่ที่กำหนดไว้ล่วงหน้า
ตัวดำเนินการทางตรรกะ
ตัวดำเนินการทางตรรกะจะกำหนดวิธีการปรับใช้เงื่อนไขของคุณ เงื่อนไขสามารถตรวจสอบคุณสมบัติง่ายๆ เช่น ยอดรวมของคำสั่งซื้อสูงกว่าจำนวนที่กำหนดไว้หรือไม่ หรือลูกค้าตอบรับการทำการตลาดหรือไม่ นอกจากนี้ ตัวดำเนินการทางตรรกะยังสามารถตรวจสอบคุณสมบัติที่ซับซ้อนยิ่งขึ้นได้ด้วย
ตัวดำเนินการอาจเป็นตัวดำเนินการระดับช่องข้อมูล เช่น เท่ากับ หรือ ไม่เท่ากับ หรืออาจเป็นตัวดำเนินการรายการ เช่น อย่างน้อยหนึ่งรายการ หรือ ไม่มีเลย
ตัวดำเนินการระดับช่องข้อมูล
ตัวดำเนินการระดับช่องข้อมูลใช้เพื่อเปรียบเทียบค่า 2 ค่า โดย Flow สามารถใช้ตัวดำเนินการดังต่อไปนี้
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| เท่ากับ | เปรียบเทียบค่าเพื่อตรวจสอบว่าเหมือนกันหรือไม่ |
ระบบจะดึงข้อมูลค่าสำหรับ order.currentTotalDiscountsSet.shopMoney.amount จากข้อมูลร้านค้าของคุณแล้วนำมาเปรียบเทียบกับค่าที่สองคือ 50หากส่วนลดรวมของคำสั่งซื้อเท่ากับ 50 พอดี เงื่อนไขนั้นจะเป็นจริง |
| ไม่เท่ากับ | เปรียบเทียบค่าเพื่อตรวจสอบว่าไม่เหมือนกันหรือไม่ |
ระบบจะดึงข้อมูลค่าสำหรับ order.currentTotalDiscountsSet.shopMoney.amount จากข้อมูลร้านค้าของคุณแล้วนำมาเปรียบเทียบกับค่าที่สองคือ 50หากส่วนลดรวมของคำสั่งซื้อไม่เท่ากับ 50 พอดี เงื่อนไขนั้นจะเป็นจริง |
| มากกว่า และ มากกว่าหรือเท่ากับ | เปรียบเทียบค่าเพื่อตรวจสอบว่าค่าแรกมากกว่าหรือมากกว่าหรือเท่ากับค่าที่สองหรือไม่ |
ระบบจะดึงข้อมูลค่าสำหรับ order.currentTotalDiscountsSet.shopMoney.amount จากข้อมูลร้านค้าของคุณแล้วนำมาเปรียบเทียบกับค่าที่สองคือ 50หากส่วนลดรวมของคำสั่งซื้อคือ 137 เงื่อนไขนั้นจะเป็นจริง เนื่องจาก 137 มีค่ามากกว่า 50 |
| น้อยกว่า และ น้อยกว่าหรือเท่ากับ | เปรียบเทียบค่าเพื่อตรวจสอบว่าค่าแรกน้อยกว่าหรือน้อยกว่าหรือเท่ากับค่าที่สองหรือไม่ |
ระบบจะดึงข้อมูลค่าสำหรับ order.currentTotalDiscountsSet.shopMoney.amount จากข้อมูลร้านค้าของคุณแล้วนำมาเปรียบเทียบกับค่าที่สองคือ 50หากส่วนลดรวมของคำสั่งซื้อคือ 47 เงื่อนไขนั้นจะเป็นจริง เนื่องจาก 47 มีค่าน้อยกว่าหรือเท่ากับ 50 |
| อย่างน้อยหนึ่งรายการ | ตรวจสอบว่าช่องข้อมูลเท่ากับค่าใดค่าหนึ่งในรายการที่ระบุหรือไม่ ต้องป้อนค่าทีละค่าแล้วกดปุ่ม Enter (คล้ายกับการใส่แท็ก) การใช้กับอาร์เรย์ที่ว่างอยู่จะทำให้ได้ผลการประเมินเป็นเท็จ |
ค่าสำหรับ order.lineitem.product.title จะถูกนำไปเปรียบเทียบกับ pineapple, guava, kiwiหากชื่อสินค้าของสินค้าเฉพาะรายการคือ guava เงื่อนไขนั้นจะเป็นจริง เนื่องจาก "guava" รวมอยู่ในรายการที่คุณระบุ |
| ไม่ตรงกับรายการใดเลย | ตรวจสอบว่าช่องข้อมูลไม่เท่ากับค่าใดๆ ในรายการที่ระบุ |
ค่าสำหรับ order.lineitem.product.title จะถูกนำไปเปรียบเทียบกับ pineapple, guava, kiwiหากชื่อสินค้าของสินค้าเฉพาะรายการคือ raspberry เงื่อนไขนั้นจะเป็นจริง เนื่องจาก "raspberry" ไม่ได้รวมอยู่ในรายการที่คุณระบุ |
| ประกอบด้วย | เปรียบเทียบค่าเพื่อตรวจสอบว่าอินพุตค่าแรกมีข้อมูลจากอินพุตค่าที่สองอยู่หรือไม่ |
ค่าสำหรับ order.lineitem.product.title จะถูกนำไปเปรียบเทียบกับ berryหากชื่อสินค้าของสินค้าเฉพาะรายการคือ strawberry เงื่อนไขนั้นจะเป็นจริง เนื่องจาก "berry" รวมอยู่ใน "strawberry" |
| ไม่ประกอบด้วย | เปรียบเทียบค่าเพื่อตรวจสอบว่าอินพุตค่าแรกไม่มีข้อมูลจากอินพุตค่าที่สองอยู่หรือไม่ |
มีการเปรียบเทียบค่าของ order.lineitem.product.title กับ: berryหากชื่อสินค้าเฉพาะรายการคือ apple เงื่อนไขจะเป็นจริง เนื่องจาก "berry" ไม่ได้รวมอยู่ใน "apple" |
| ขึ้นต้นด้วย | เปรียบเทียบค่าเพื่อตรวจสอบว่าค่าแรกขึ้นต้นด้วยข้อมูลในค่าที่สองหรือไม่ |
มีการเปรียบเทียบค่าของ order.shippingAddress.country กับ: Unitedหากประเทศสำหรับที่อยู่ที่จัดส่งของคำสั่งซื้อคือ United Kingdom เงื่อนไขจะเป็นจริง เนื่องจาก "United Kingdom" เริ่มต้นด้วย "United" |
| ไม่ขึ้นต้นด้วย | เปรียบเทียบค่าเพื่อตรวจสอบว่าค่าแรกไม่ได้ขึ้นต้นด้วยข้อมูลในค่าที่สองหรือไม่ |
มีการเปรียบเทียบค่าของ order.shippingAddress.country กับ: Unitedหากประเทศสำหรับที่อยู่ที่จัดส่งของคำสั่งซื้อคือ Canada เงื่อนไขจะเป็นจริง เนื่องจาก "United Kingdom" ไม่ได้เริ่มต้นด้วย "Canada" |
| ลงท้ายด้วย | เปรียบเทียบค่าเพื่อตรวจสอบว่าค่าแรกลงท้ายด้วยข้อมูลในค่าที่สองหรือไม่ |
มีการเปรียบเทียบค่าของ order.lineitems.product.title กับ: pieหากชื่อสินค้าเฉพาะรายการคือ key lime pie เงื่อนไขจะเป็นจริง เนื่องจาก "key lime pie" ลงท้ายด้วย "pie" |
| ไม่ลงท้ายด้วย | เปรียบเทียบค่าเพื่อตรวจสอบว่าค่าแรกไม่ได้ลงท้ายด้วยข้อมูลในค่าที่สองหรือไม่ |
มีการเปรียบเทียบค่าของ order.lineitems.product.title กับ: pieหากชื่อสินค้าเฉพาะรายการคือ chocolate cake เงื่อนไขจะเป็นจริง เนื่องจาก "chocolate cake" ไม่ได้ลงท้ายด้วย "pie" |
ตัวดำเนินการค่า Null หรือค่าว่าง
| ตัวดำเนินการ | คำอธิบาย | เงื่อนไขจริง/เท็จ |
|---|---|---|
| ว่างเปล่าหรือไม่มีอยู่ | ตรวจสอบว่าช่องว่างเปล่า (ไม่มีค่า) หรือไม่มีอยู่ (เป็น null) หรือไม่ |
ส่งคืนค่าเป็น จริง เมื่อช่องว่างเปล่าหรือเป็น null และส่งคืนค่าเป็น เท็จ หากมีค่านั้นอยู่
|
| ไม่ว่างเปล่าและมีอยู่ | ตรวจสอบว่ามีฟิลด์อยู่ และไม่ว่างเปล่าและไม่ใช่ null | ส่งคืนค่าเป็น จริง เมื่อช่องไม่ว่างเปล่าและมีอยู่ และส่งคืนค่าเป็น เท็จ เมื่อช่องว่างเปล่า |
ตัวดำเนินการรายการ
ตัวดำเนินการรายการจะใช้ร่วมกับตัวดำเนินการระดับช่องข้อมูลเพื่อให้คุณสามารถตรวจสอบเงื่อนไขของข้อมูลที่อยู่ในรายการได้
เช่นเดียวกับในตัวอย่างอย่างน้อยหนึ่งรายการ คุณอาจต้องการตรวจสอบว่าคำสั่งซื้อมีสินค้าที่เฉพาะเจาะจง (อยู่ใน order.lineItems) พร้อมแท็กที่เฉพาะเจาะจง (รายการที่อยู่ใต้ order.lineItems.product.tags) หรือไม่ ในทั้งสองกรณี ตัวอย่างจะใช้ตัวดำเนินการรายการ อย่างน้อยหนึ่งรายการ
Flow มีตัวดำเนินการ 3 รายการสำหรับใช้งานกับรายการดังนี้ อย่างน้อยหนึ่งรายการ ไม่มีเลย และ ทั้งหมด
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่างการใช้งาน |
|---|---|---|
| อย่างน้อยหนึ่งรายการ | ตรวจสอบว่ามีรายการใดในลิสต์ที่ตรงกับเงื่อนไขที่ระบุหรือไม่ ระบบจะส่งคืนค่า true หากมีรายการใดในลิสต์ตรงกัน หากลิสต์ว่างเปล่าหรือไม่มีรายการใดตรงกัน ระบบจะส่งคืนค่า false | ตรวจสอบว่าคำสั่งซื้อมีสินค้าที่มีแท็กที่ระบุหรือไม่ โดยใช้ At least one of order line items.product.tags is equal to tagname |
| ไม่มีเลย | ตรวจสอบว่าไม่มีรายการใดในลิสต์ที่ตรงกับเงื่อนไขที่ระบุ ระบบจะส่งคืนค่า true หากไม่มีรายการใดตรงกับเงื่อนไข หากลิสต์ว่างเปล่า ระบบจะส่งคืนค่า true | ตรวจสอบว่าสินค้าไม่ได้มีแท็ก presale หรือไม่โดยใช้ None of product tags is equal to presaleข้อผิดพลาดที่พบบ่อยคือการพยายามลบล้างตัวดำเนินการด้วยการใช้ is not equal to การปฏิเสธซ้อนปฏิเสธด้วย None of product tags is not equal to presale จะทำให้เงื่อนไขเข้าใจยากและไม่ถูกต้อง
|
| ทั้งหมด | ตรวจสอบว่าทุกรายการในลิสต์ตรงกับเงื่อนไขที่ระบุ ระบบจะส่งคืนค่า true หากทุกรายการในลิสต์ตรงกับเงื่อนไข | ตรวจสอบว่าสินค้าทุกรายการในคำสั่งซื้อมีผู้ขายสินค้ารายหนึ่งที่ชื่อ Acme หรือไม่ โดยใช้ All of order line items have a product.vendor equal to Acme |
การเรียงลำดับเงื่อนไข
คุณสามารถสร้างเวิร์กโฟลว์ที่มีหลายเงื่อนไขได้ ซึ่งแต่ละเงื่อนไขสามารถส่งผลให้เกิดการดำเนินการที่แตกต่างกัน ลำดับของเงื่อนไขมีความสำคัญ การตรวจสอบเงื่อนไขจะเริ่มต้นที่จุดเริ่มต้นของเวิร์กโฟลว์และดำเนินไปตามแต่ละเงื่อนไขอย่างเป็นระบบ การตรวจสอบจะหยุดลงเมื่อตรงตามเงื่อนไข
ตัวอย่างนี้ใช้หลายเงื่อนไขเพื่อตรวจสอบว่าลูกค้ามีสิทธิ์เข้าร่วมโปรแกรมลูกค้าประจำหรือไม่ โดยอิงจากยอดรวมที่ลูกค้าใช้จ่ายในร้านค้า ระบบจะตรวจสอบเงื่อนไขตามลำดับที่แสดงผลดังนี้
- หากราคารวมมากกว่า $1000 และลูกค้ายินยอมที่จะรับการตลาด ก็ให้แท็กลูกค้าด้วยแท็ก
Gold - หากราคารวมน้อยกว่า $1000 แต่มากกว่า $500 และลูกค้ายินยอมที่จะรับการตลาด ก็ให้แท็กลูกค้าด้วยแท็ก
Silver - หากราคารวมน้อยกว่า $500 แต่มากกว่า $200 และลูกค้ายินยอมที่จะรับการตลาด ก็ให้แท็กลูกค้าด้วยแท็ก
Bronze

การรวมเกณฑ์หลายข้อไว้ในเงื่อนไขเดียว
เมื่อสร้างเงื่อนไข คุณสามารถกำหนดเกณฑ์ได้หลายข้อ คุณสามารถเลือกว่าจะรวมเกณฑ์ที่แยกกันเหล่านี้อย่างไรเพื่อตัดสินว่าเงื่อนไขโดยรวมเป็นจริงหรือเท็จ
หากตรงตามเกณฑ์ทั้งหมด
การเลือก AND จะให้ผลลัพธ์เป็นจริงก็ต่อเมื่อทุกเกณฑ์ที่คุณตั้งค่าไว้เป็นจริงเท่านั้น
ตัวอย่างเช่น คุณสร้างเวิร์กโฟลว์เพื่อแท็กลูกค้าที่อยู่ในแคนาดาและใช้จ่ายมากกว่า $500 ในคำสั่งซื้อเดียว

เวิร์กโฟลว์จะแท็กลูกค้าก็ต่อเมื่อลูกค้าอาศัยอยู่ในแคนาดาและมียอดสั่งซื้อมากกว่า $500 เท่านั้น หากเงื่อนไขข้อใดข้อหนึ่งเหล่านี้เป็นเท็จ ลูกค้าก็จะไม่ถูกแท็ก
หากตรงตามเกณฑ์ใดๆ
การเลือก OR จะให้ผลลัพธ์เป็นจริงหากเกณฑ์ข้อใดข้อหนึ่งที่คุณตั้งค่าไว้เป็นจริง
ตัวอย่างเช่น คุณสร้างเวิร์กโฟลว์เพื่อแท็กคำสั่งซื้อที่มีคำแนะนำด้านความเสี่ยงเป็นยกเลิกหรือตรวจสอบ ตราบใดที่เงื่อนไขข้อใดข้อหนึ่งเป็นจริง คำสั่งซื้อก็จะถูกแท็ก

ข้อมูลแบบคงที่และแบบไดนามิกในเงื่อนไข
โดยทั่วไปแล้ว ค่าที่สองในเงื่อนไขจะเป็นค่าคงที่ที่ป้อนด้วยตนเอง (เช่น product.title == "ชื่อสินค้าของคุณ") ค่านี้จะยังคงเหมือนเดิมทุกครั้งที่เวิร์กโฟลว์ทำงาน
คุณยังสามารถใช้ค่าไดนามิกได้หากช่องสำหรับค่าที่สองแสดงไอคอน ค่าไดนามิกจะดึงมาจากข้อมูลร้านค้าของคุณทุกครั้งที่เวิร์กโฟลว์ทำงาน หากต้องการใช้ค่าไดนามิก ให้คลิกไอคอน
แล้วเลือกค่าที่คุณต้องการตรวจสอบ ค่าไดนามิกไม่มีให้ใช้งานในทุกช่อง
ตัวอย่างเช่น คุณสร้างเวิร์กโฟลว์ที่แท็กคำสั่งซื้อหากประเทศในที่อยู่สำหรับเรียกเก็บเงินของคำสั่งซื้อตรงกับประเทศในที่อยู่ที่จัดส่ง

ในตัวอย่างนี้ ทั้งค่าแรกและค่าที่สองจะดึงมาจากข้อมูลร้านค้าของคุณ แทนที่จะระบุสตริงคงที่ด้วยตนเองเพื่อใช้ตรวจสอบสำหรับค่าที่สอง หากประเทศในที่อยู่สำหรับเรียกเก็บเงินที่ลูกค้าระบุเป็นประเทศเดียวกับประเทศที่ลูกค้าให้ไว้ในที่อยู่ที่จัดส่ง เงื่อนไขก็จะเป็นจริงและคำสั่งซื้อจะถูกแท็ก
ในบางครั้งคุณอาจต้องใช้ข้อมูลไดนามิกที่เป็นประเภทข้อมูลที่ไม่ถูกต้อง ตัวอย่างเช่น คุณอาจต้องเปรียบเทียบตัวเลขที่จัดเก็บเป็นสตริงกับตัวเลขอีกตัว ในกรณีนี้ คุณสามารถใช้ตัวเลือก Run code เพื่อคอนเวิร์ทข้อมูลให้เป็นประเภทที่ถูกต้อง
เทมเพลต
เทมเพลตส่วนใหญ่ใน ไลบรารีเทมเพลต จะมีเงื่อนไขอยู่
ตัวอย่างเงื่อนไข
ตรวจสอบว่ามีรายการอย่างน้อยหนึ่งรายการในลิสต์ที่ตรงตามเงื่อนไข
ตัวอย่างนี้แสดงเงื่อนไขทั่วไปที่ใช้ตรวจสอบว่ามีรายการในลิสต์อย่างน้อยหนึ่งรายการที่ตรงกับค่าที่กำหนด
ในกรณีนี้ เงื่อนไขจะตรวจสอบว่าสินค้าชิ้นใดชิ้นหนึ่งในคำสั่งซื้อมีแท็กเป็น presale หรือไม่ หากต้องการสร้างเงื่อนไขนี้ คุณจะต้องเลือก order / lineItems / product / tags โดย Flow จะเลือก at least one of เป็นตัวดำเนินการทางตรรกะตามค่าเริ่มต้น

ส่วนของ at least one of คือ ตัวดำเนินการลิสต์ และใช้เพื่อจัดการการจับคู่ในรายการต่างๆ ในลิสต์ ส่วนของ is equal to คือ ตัวดำเนินการระดับช่องข้อมูล ที่กำหนดว่ารายการเดียวในลิสต์ตรงกันหรือไม่
ตรวจสอบว่าไม่มีรายการใดในลิสต์ที่ตรงตามเงื่อนไข
ตัวอย่างนี้แสดงเงื่อนไขทั่วไปที่ใช้ตรวจสอบว่าไม่มีรายการใดในลิสต์ที่ตรงกับค่าที่กำหนด ปัญหาทั่วไปที่ควรพิจารณาคือลิสต์อาจว่างเปล่า เมื่อลิสต์ว่างเปล่า เงื่อนไขจะได้รับการจัดการโดยตัวดำเนินการลิสต์ (ในกรณีนี้คือ none of)
ในกรณีนี้ เงื่อนไขจะตรวจสอบว่าไม่มีแท็กสินค้าใดเท่ากับ foo

เงื่อนไขจะส่งคืนค่า true หาก (1) ไม่มีแท็กสินค้า หรือ (2) ไม่มีแท็กใดเป็น foo มิฉะนั้นจะส่งคืนค่า false
ตรวจสอบว่ามีรายการในลิสต์ที่ตรงตามเกณฑ์หลายข้อ
ตัวอย่างนี้แสดงเงื่อนไขทั่วไปที่ใช้ตรวจสอบว่ามีรายการในลิสต์อย่างน้อยหนึ่งรายการที่ตรงตามเกณฑ์สองข้อที่แยกจากกัน
ในกรณีนี้ เงื่อนไขจะตรวจสอบว่าสินค้าชิ้นใดชิ้นหนึ่งในคำสั่งซื้อมีแท็กเป็น presale และมี productType เป็น clothing

หากต้องการสร้างเงื่อนไขนี้ คุณควรทำดังต่อไปนี้
- เลือก order / lineItems / product / tags สำหรับเกณฑ์ข้อแรก
- เลือกเพิ่มเกณฑ์สำหรับรายการเดียวกันในลิสต์ lineItems หมายเหตุ: การเลือกลิสต์รายการที่ไม่ถูกต้องในส่วนนี้เป็นข้อผิดพลาดที่พบบ่อย
- เลือก lineItems_item เป็นออบเจ็กต์ระดับบนสุด จากนั้นเลือก product / productType` สำหรับเกณฑ์ข้อที่สอง หมายเหตุ: การเลือกออบเจ็กต์ที่ไม่ถูกต้องในส่วนนี้ก็เป็นข้อผิดพลาดที่พบบ่อยเช่นกัน
- เลือก AND เพื่อรวมเกณฑ์ทั้งสองข้อ
- ป้อนค่า
presaleและclothingสำหรับเกณฑ์ทั้งสองข้อ