รันโค้ด
การดำเนินการ รันโค้ด จะดำเนินการโค้ด JavaScript คุณสามารถส่งผ่านข้อมูลจากขั้นตอนก่อนหน้าในเวิร์กโฟลว์เป็นอินพุตให้กับการดำเนินการ รันโค้ด และส่งคืนค่าเพื่อใช้ในขั้นตอนถัดไปได้
ฟิลด์
การดำเนินการ รันโค้ด ประกอบด้วยฟิลด์ต่อไปนี้
| ฟิลด์ | คำอธิบาย |
|---|---|
| อินพุต | จำเป็นต้องระบุ คำค้นหา GraphQL เพื่อใช้ข้อมูลจากขั้นตอนก่อนหน้าเป็นอินพุตให้กับการดำเนินการ รันโค้ด |
| เอาท์พุต | จำเป็นต้องระบุ การแสดงข้อมูลที่จะส่งคืนโดยการดำเนินการ ซึ่งกำหนดไว้ในภาษาคำจำกัดความสคีมา (SDL) ของ GraphQL |
| โค้ด | จำเป็นต้องระบุ โค้ด JavaScript ที่การดำเนินการ รันโค้ด จะดำเนินการ |
ข้อมูลอินพุต
คุณสามารถส่งผ่านข้อมูลอินพุตจากขั้นตอนที่เกิดขึ้นก่อนหน้าการดำเนินการ รันโค้ด ได้ หากต้องการรวมข้อมูลนี้ คุณสามารถเขียนคำค้นหา GraphQL ในฟิลด์ อินพุต ได้ ข้อมูลที่ส่งคืนจากคำค้นหาจะพร้อมใช้งานเป็นอาร์กิวเมนต์ input ของฟังก์ชันที่กำกับด้วย export default ซึ่งโดยทั่วไปจะเรียกว่า main
คำค้นหาอินพุตเป็นคำค้นหาสำหรับข้อมูลสภาพแวดล้อมของ Flow ไม่ใช่คำค้นหาสำหรับ Shopify Admin API ดังนั้นคุณจึงไม่สามารถแทรกคำค้นหาของ 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
}
}
}ข้อมูลเอาท์พุต
การดำเนินการ Run code สามารถส่งคืนข้อมูลที่กำหนดเองได้ หากต้องการกำหนดประเภทของข้อมูลที่โค้ดจะส่งคืน ให้ใช้ช่อง Output และ Schema definition language (SDL) ของ GraphQL ประเภทเอาท์พุตที่รองรับได้แก่ 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,
};
}คุณยังสามารถกำหนดประเภทที่กำหนดเองเพื่อส่งคืนข้อมูลที่ซับซ้อนมากขึ้นได้ ตัวอย่างเช่น หากต้องการส่งคืนประเภทที่ชื่อว่า Gift ซึ่งประกอบด้วยสตริงที่ชื่อว่า message และตัวเลขที่ชื่อว่า amount
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!
}หากต้องการเข้าถึงข้อมูลนี้ในขั้นตอนที่ตามหลังการดำเนินการนี้ ให้ใช้ตัวแปรที่ชื่อ Run code ซึ่งจะถูกกำหนดประเภทตามสคีมา Output ที่คุณกำหนดไว้ในการกำหนดค่าการดำเนินการ Run code คุณสามารถใช้ตัวแปรนี้ได้ทั้งในเงื่อนไขและการดำเนินการ
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 หรือฟังก์ชันอื่นๆ ในการดำเนินการ Run code ได้
ตัวอย่าง
สามารถดูตัวอย่างสำหรับการดำเนินการโค้ดได้ในพื้นที่เก็บตัวอย่างของ Flow
ข้อจำกัด
การดำเนินการ Run code มีข้อจำกัดดังต่อไปนี้
- การดำเนินการ Run code รองรับ ECMA2020 JavaScript แต่ไม่รองรับ API ของ NodeJS หรือ CommonJS และไม่รองรับการนำเข้าโมดูล
- โค้ดของคุณไม่สามารถเรียกใช้ HTTP (
fetch) ได้ - ไม่สามารถใช้ฟังก์ชันแบบสุ่มและแบบอิงตามนาฬิกาได้ แต่ข้อมูลวันที่ เช่น
scheduledAtหรือcreatedAtสามารถส่งผ่านเป็นอินพุตได้ - Console.log จะไม่บันทึกไปยังคอนโซลของเบราว์เซอร์
- เพื่อประหยัดขนาดของเพย์โหลด เพย์โหลดของข้อมูลเอาท์พุตจะส่งคืนเฉพาะตัวแปรที่ใช้ในขั้นตอนถัดไปเท่านั้น
- คุณไม่สามารถเพิ่มชื่อเรียกเมตาฟิลด์ได้โดยตรงในการดำเนินการ Run code หากต้องการดำเนินการดังกล่าว โปรดดูส่วนเมตาฟิลด์ในหน้านี้
นอกจากนี้ ยังมีการบังคับใช้ข้อจำกัดดังต่อไปนี้
- การค้นหาข้อมูลอินพุตจำกัดไว้ที่ 5,000 อักขระ
- สคีมาข้อมูลเอาท์พุตจำกัดไว้ที่ 5,000 อักขระ
- เพย์โหลดข้อมูลเอาท์พุตและเอาท์พุตของ Console.log เมื่อรวมกันแล้วจะจำกัดไว้ที่ 50KB
- โค้ดต้องมีความยาวไม่เกิน 50,000 อักขระ
- ระยะเวลาการดำเนินการทั้งหมดจำกัดไว้ที่ 5 วินาที
- การใช้หน่วยความจำจำกัดไว้ที่ 10MB
เทมเพลต
เพิ่มรายการฟรี (ลดราคา 100%) ไปยังคำสั่งซื้อใหม่
เทมเพลตนี้จะเพิ่มรายการฟรีที่ได้รับส่วนลดไปยังคำสั่งซื้อใหม่เมื่อรายการดังกล่าวมีอยู่ในสต็อก เทมเพลตจะตรวจสอบสินค้าคงคลัง ใช้ส่วนลด 100% และอัปเดตคำสั่งซื้อโดยไม่แจ้งเตือนลูกค้า เวิร์กโฟลว์นี้สามารถช่วยเพิ่มการทำงานอัตโนมัติให้กับสถานการณ์ต่อไปนี้ได้
- เพิ่มความพึงพอใจให้ลูกค้าโดยการเพิ่มรายการของแถมเซอร์ไพรส์ลงในคำสั่งซื้อ
- โปรโมตสินค้าใหม่หรือสินค้าที่ไม่ค่อยเป็นที่รู้จักโดยการเพิ่มเป็นตัวอย่างฟรีในคำสั่งซื้อ
- ปรับปรุงโปรโมชันให้มีประสิทธิภาพโดยการเพิ่มและให้ส่วนลดรายการฟรีโดยอัตโนมัติ
ยกเลิกการคืนสินค้าที่ไม่มีการเคลื่อนไหว
ยกเลิกการคืนสินค้าที่ยังไม่ได้รับการคืนเงินหรือเพิ่มกลับเข้าสต็อกภายในระยะเวลาที่กำหนดโดยอัตโนมัติ ดูเทมเพลต
แปลงแท็กที่มีคำนำหน้าเป็นเมตาฟิลด์สินค้าโดยใช้การดำเนินการ Run code
เวิร์กโฟลว์นี้จะนำแท็กที่ขึ้นต้นด้วยคำนำหน้า เช่น 'color:' ไปเพิ่มยังรายการเมตาฟิลด์สินค้า เวิร์กโฟลว์จะใช้การดำเนินการ Run code เพื่อแยกวิเคราะห์แท็กและรายการที่มีอยู่แล้วในรายการเมตาฟิลด์ เวิร์กโฟลว์จะทำงานเมื่อมีการสร้างสินค้า แต่ก็สามารถรันบนสินค้าที่มีอยู่แล้วด้วยตนเองได้ ดูเทมเพลต
ส่งการแจ้งเตือนเมื่อลูกค้าสั่งซื้อสินค้าตัวเลือกสินค้าหลายแบบ
รับการแจ้งเตือนทางอีเมลเมื่อลูกค้าสั่งซื้อสินค้าชนิดเดียวกันหลายตัวเลือกสินค้า ดูเทมเพลต
ส่งการแจ้งเตือนเมื่อคำสั่งซื้อมีชุดสินค้า
เวิร์กโฟลว์นี้จะเริ่มทำงานเมื่อมีการสร้างคำสั่งซื้อและตรวจสอบว่ามีสินค้าใดในคำสั่งซื้อที่ซื้อเป็นส่วนหนึ่งของชุดสินค้าหรือไม่ หากพบ ระบบจะส่งอีเมลภายในพร้อมรายละเอียดชุดสินค้านั้น นอกจากนี้ คุณยังสามารถใช้เวิร์กโฟลว์นี้เป็นจุดเริ่มต้นสำหรับกรณีการใช้งานใดๆ ที่ต้องตรวจหาชุดสินค้าภายในคำสั่งซื้อได้อีกด้วย ดูเทมเพลต
แท็กคำสั่งซื้อด้วยแคมเปญ UTM ที่เชื่อมโยง
เพิ่มแท็กไปยังคำสั่งซื้อที่มีชื่อของแคมเปญ UTM ที่เชื่อมโยง ดูเทมเพลต