เรียกใช้โค้ด
การดำเนินการรันโค้ดจะประมวลผล JavaScript คุณสามารถส่งข้อมูลจากขั้นตอนก่อนหน้านี้ในขั้นตอนการทำงานเป็นอินพุตไปยังการดำเนินการรันโค้ด และส่งคืนค่าที่จะใช้ในขั้นตอนถัดไปได้
ช่อง
การดำเนินการเรียกใช้โค้ดจะมีฟิลด์ดังต่อไปนี้
ช่อง | คำอธิบาย |
---|---|
อินพุต | ต้องระบุ คิวรี GraphQL เพื่อใช้ข้อมูลจากขั้นตอนก่อนหน้าเป็นอินพุตไปยังการดำเนินการรันโค้ด |
เอาท์พุต | ต้องระบุ การแสดงข้อมูลที่จะส่งคืนตามการดำเนินการ ซึ่งกําหนดไว้ในภาษากำหนดสคีมา (SDL) ของ GraphQL |
รหัส | ต้องระบุ JavaScript ที่การดำเนินการรันโค้ดจะประมวลผล |
ข้อมูลอินพุต
คุณสามารถส่งข้อมูลอินพุตได้จากขั้นตอนที่เกิดขึ้นก่อนการดำเนินการรันโค้ด หากต้องการรวมข้อมูลนี้ คุณสามารถเขียนคิวรี GraphQL ในช่องอินพุตได้ ข้อมูลที่ส่งคืนจากคิวรีจะพร้อมใช้งานเป็นอาร์กิวเมนต์ input
กับฟังก์ชันที่ทำเครื่องหมาย export default
ซึ่งจะถูกเรียกว่า main
ตามแบบแผน
คำค้นหาอินพุตเป็นคำค้นหาสำหรับข้อมูลสภาพแวดล้อม Flow ไม่ใช่คำค้นหาของ Shopify Admin API ดังนั้น คุณจะไม่สามารถแทรกคำค้นหา Shopify ไว้ในข้อมูลอินพุตได้ นอกจากนี้ Flow จะจัดการกับ edges
และ nodes
ในคิวรี ดังนั้นคุณจึงไม่จำเป็นต้องเพิ่มส ิ่งเหล่านั้นหรือไวยากรณ์การแบ่งหน้าอื่นๆ ไปยังคิวรีของคุณ
ตัวอย่างการอินพุตที่ได้รับหมายเหตุคำสั่งซื้อและชื่อของสินค้าเฉพาะรายการ มีลักษณะดังนี้
ข้อมูลนี้จะถูกแปลงเป็นตัวแปร input
ที่สามารถใช้ในโค้ดได้ ดังนี้
อินพุตสามารถลดโครงสร้างใน Function Signature ได้ ดังนี้
ข้อมูลเอาต์พุต
การดำเนินการรันโค้ดสามารถส่งคืนข้อมูลแบบกำหนดเองได้ หากต้องการกําหนดประเภทของข้อมูลที่โค้ดจะส่งคืน ให้ใช้ช่องเอาท์พุตและภาษากำหนดสคีมา (SDL) ของ GraphQL ตัวอย่างเช่น หากต้องการส่งคืนสตริงที่ชื่อ giftMessage
และตัวเลขที่ชื่อ totalGifts
ให้ดำเนินการดังนี้
ความคิดเห็นเป็นส่วนที่ไม่บังคับ แต่จะถูกนำไปใช้เพื่ออธิบายข้อมูลใน UI Flow หากต้องการเอาท์พุตข้อมูลนี้ในโค้ด JavaScript ให้ส่งคืนออบเจ็กต์ที่ตรงกับประเภท ให้ดำเนินการดังนี้
นอกจากนี้คุณยังสามารถกําหนดประเภทแบบกําหนดเองเพื่อส่งคืนข้อมูลที่ซับซ้อนมากขึ้นได้ ตัวอย่างเช่น หากต้องการส่งคืนประเภทที่ชื่อ Gift
ซึ่งมีสตริงที่ชื่อ message
และหมายเลขที่ชื่อ amount
ให้ดำเนินการดังนี้
หากต้องการเข้าถึงข้อมูลนี้ตามขั้นตอนการดำเนินการข้างต้น ให้ใช้ตัวแปรที่มีชื่อว่า Run code ซึ่งจะจัดประเภทตามสคีมา Output
ที่คุณกําหนดในการกำหนดค่าการดำเนินการรันโค้ด โดยคุณสามารถใช้ตัวแปรนี้ได้ทั้งในเงื่อนไขและการดำเนินการ
Console.log
คุณสามารถใช้ console.log
เพื่อแสดงผลข้อมูลเอาต์พุตไปยังบันทึกการเริ่มใช้งานขั้นตอนของ Flow เพื่อวัตถุประสงค์ในการแก้ไขปัญหา เอาต์พุตจะปรากฏในบันทึกการเรียกใช้ของขั้นตอนงาน ตัวอย่างข้อมูลถูกต้อง ดังนี้:
คุณไม่สามารถใช้ console.info
, console.error
หรือฟังก์ชันอื่นๆ ในการเรียกใช้การโค้ด
ตัวอย่างเช่น
สามารถดูตัวอย่างการดำเนินการเรียกใช้งานโค้ดได้ที่พื้นที่จัดเก็บตัวอย่าง Flow
ข้อจํากัด
การดำเนิ นการรันโค้ดมีข้อจํากัดดังต่อไปนี้
- การดำเนินการเรียกใช้โค้ดรองรับ ECMA2020 JavaScript แต่จะไม่รองรับ NodeJS หรือ CommonJS API ตลอดจนโมดูลที่นำเข้า
- โค้ดของคุณไม่สามารถดำเนินการเรียก http (
fetch
) ได้ - ไม่สามารถใช้ฟังก์ชันแบบสุ่มและฟังก์ชันตามเวลาได้ ส่วนข้อมูลวันที่ เช่น
scheduledAt
หรือcreatedAt
สามารถส่งผ่านในรูปแบบอินพุตได้ - Console.log ไม่ได้เข้าสู่คอนโซลของเบราว์เซอร์
นอกจากนี้ยังมีการบังคับใช้ขีดจํากัดต่อไปนี้ด้วย
- จํากัดคำค้นหาข้อมูลอินพุตไม่เกิน 5,000 อักขระ
- จํากัดสคีมาข้อมูลเอาท์พุตไม่เกิน 5,000 อักขระ
- เอาต์พุตของ Payload และ Console.log เอาต์พุตจะถูกจํากัดที่ 500000000000000000000000000000000000000000000000
- โค้ดต้องมีความยาวไม่เกิน 50,000 อักขระ
- จำกัดระยะเวลาการเรียกใช้งานทั้งหมดไม่เกิน 5 วินาที
- จำกัดการใช้หน่วยความจําไม่เกิน 10MB
แผนงาน
ทีม Flow วางแผนที่จะทยอยเพิ่มคุณสมบัติการดำเนินการรันโค้ด โดยตารางต่อไปนี้สรุปการปรับปรุงที่วางแผนไว้และวันที่คาดว่าจะดำเนินการเสร็จสิ้น
การปรับปรุง | คำอธิบาย | ระยะเวลาจัดส่งโดยประมาณ |
---|---|---|
การบันทึกข้อมูล | ใช้ `console.log` เพื่อเอาท์พุตข้อมูลไปยังบันทึก Run เพื่อวัตถุประสงค์ในการแก้ไขปัญหา | เสร็จแล้ว |
การเรียก API ภายนอก | ใช้การดึงข้อมูลของ JavaScript เพื่อเรียก API | ไตรมาสที่ 3 ปี 2024 |
ความคิดเห็น
การดำเนินการรันโค้ดเป็นขั้นตอนประเภทใหม่ใน Shopify Flow หากคุณมีความคิดเห็นและข้อสงสัย โปรดแสดงความคิดเห็นบนโพสต์ชุมชน Flow นี้