เรียกใช้โค้ด

การดำเนินการรันโค้ดจะประมวลผล 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
}

อินพุตสามารถลดโครงสร้างใน Function Signature ได้ ดังนี้

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

เมตาฟิลด์

หากต้องการเข้าถึงค่าเมตาฟิลด์เดียวในการเรียกใช้โค้ด คุณต้องเพิ่มเมตาฟิลด์ไปยังข้อมูลสภาพแวดล้อมของ Flow ก่อน การดำเนินการนี้จะเสร็จสิ้นในการดำเนินการหรือเงื่อนไขอื่นๆ นอกเหนือจากการเรียกใช้โค้ด ตัวอย่างเช่น คุณสามารถเพิ่มการการดำเนินการเอาท์พุตบันทึก จากนั้นปฏิบัติตามคําแนะนําเพื่อเพิ่มเมตาฟิลด์

หลังจากที่เพิ่มเมตาฟิลด์ไปยังสภาพแวดล้อมของขั้นตอนการทำงานแล้ว คุณสามารถเข้าถึงเมตาฟิลด์นั้นในการเรียกใช้โค้ดได้ ตัวอย่างเช่น สมมุติว่าคุณได้เพิ่มเมตาฟิลด์ของคำสั่งซื้อด้วยนามแฝงของ giftMessage จากนั้นคุณสามารถเข้าถึงข้อมูลนั้นในข้อความค้นหาข้อมูลได้:

{
  order {
    giftMessage {
      value
    }
  }
}

ข้อมูลเอาต์พุต

การดำเนินการเรียกใช้โค้ดสามารถส่งคืนผลลัพธ์เป็นข้อมูลที่ปรับแต่งเองได้ หากต้องการกําหนดประเภทของข้อมูลที่โค้ดจะส่งคืนผลลัพธ์ ให้ใช้ช่องเอาท์พุตและ SDL (Schema Definition Language) ของ 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!
}

ความคิดเห็นเป็นส่วนที่ไม่บังคับ แต่จะถูกนำไปใช้เพื่ออธิบายข้อมูลใน UI Flow หากต้องการเอาท์พุตข้อมูลนี้ในโค้ด 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 ที่คุณกําหนดในการกำหนดค่าการดำเนินการรันโค้ด โดยคุณสามารถใช้ตัวแปรนี้ได้ทั้งในเงื่อนไขและการดำเนินการ

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 อักขระ
  • เอาต์พุตของ Payload และ Console.log เอาต์พุตจะถูกจํากัดที่ 500000000000000000000000000000000000000000000000
  • โค้ดต้องมีความยาวไม่เกิน 50,000 อักขระ
  • จำกัดระยะเวลาการเรียกใช้งานทั้งหมดไม่เกิน 5 วินาที
  • จำกัดการใช้หน่วยความจําไม่เกิน 10MB

แผนงาน

ทีม Flow วางแผนที่จะทยอยเพิ่มคุณสมบัติการดำเนินการรันโค้ด โดยตารางต่อไปนี้สรุปการปรับปรุงที่วางแผนไว้และวันที่คาดว่าจะดำเนินการเสร็จสิ้น

แผนงานการปรับปรุงการดำเนินการรันโค้ด
การปรับปรุงคำอธิบายระยะเวลาจัดส่งโดยประมาณ
การบันทึกข้อมูลใช้ `console.log` เพื่อเอาท์พุตข้อมูลไปยังบันทึก Run เพื่อวัตถุประสงค์ในการแก้ไขปัญหาเสร็จแล้ว
การเรียก API ภายนอกใช้การดึงข้อมูลของ JavaScript เพื่อเรียก APIไตรมาสที่ 1 ปี 2025

เทมเพลต

เพิ่มรายการสินค้าฟรี (ลดราคา 100%) ไปยังคำสั่งซื้อใหม่

เทมเพลตนี้จะเพิ่มรายการสินค้าฟรีและที่มีส่วนลดไปยังคำสั่งซื้อใหม่หากมีสินค้านั้นในสต็อก โดยระบบจะตรวจสอบสินค้าคงคลัง ใช้ส่วนลด 100% และอัปเดตคำสั่งซื้อแบบไม่แจ้งให้ลูกค้าทราบ การดำเนินการอัตโนมัตินี้จะเป็นประโยชน์ในการ (1) เพิ่มความพึงพอใจให้กับลูกค้าด้วยการเพิ่มรายการสินค้าฟรีสุดเซอร์ไพรส์ลงในคำสั่งซื้อ (2) โปรโมตสินค้าใหม่หรือสินค้าที่ไม่ค่อยเป็นที่รู้จักด้วยการเพิ่มเป็นสินค้าตัวอย่างฟรีในคำสั่งซื้อ หรือ (3) เพิ่มประสิทธิภาพให้กับโปรโมชันด้วยการเพิ่มและลดราคาสินค้าฟรีโดยอัตโนมัติ ดูเทมเพลต

ยกเลิกการคืนสินค้าที่ไม่ได้ใช้งาน

ยกเลิกการคืนสินค้าอัตโนมัติหากไม่ได้รับการคืนเงินหรือคืนสินค้ากลับสต็อกภายในระยะเวลาที่กำหนด ดูเทมเพลต

คอนเวิร์ทแท็กที่มีคำนําหน้าเมตาฟิลด์สินค้า โดยใช้การดำเนินการ "เรียกใช้งานโค้ด"

ขั้นตอนการทำงานนี้จะใช้แท็กที่เริ่มต้นด้วยคำนำหน้า เช่น 'สี:' และเพิ่มแท็กเหล่านี้ลงในรายการเมตาฟิลด์ของสินค้า ซึ่งจะใช้การดำเนินการรันโค้ดเพื่อวิเคราะห์แท็กและรายการที่มีอยู่ในรายการเมตาฟิลด์ ขั้นตอนการทำงานจะทำงานเมื่อมีการสร้างสินค้า แต่สามารถเรียกใช้ด้วยตนเองบนสินค้าที่มีอยู่ได้ ดูเทมเพลต

ส่งการแจ้งเตือนเมื่อลูกค้าสั่งซื้อตัวเลือกสินค้าหลายรายการในสินค้าชิ้นเดียวกัน

รับการแจ้งเตือนทางอีเมลเมื่อลูกค้าสั่งซื้อตัวเลือกสินค้าหลายรายการในสินค้าชิ้นเดียวกัน ดูเทมเพลต

ส่งการแจ้งเตือนเมื่อคำสั่งซื้อมีชุดสินค้า

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

แท็กคำสั่งซื้อด้วยแคมเปญ UTM ที่เกี่ยวข้อง

เพิ่มแท็กไปยังสินค้าที่มีชื่อของแคมเปญ UTM ที่เกี่ยวข้อง ดูเทมเพลต

ไม่พบคำตอบที่คุณต้องการงั้นหรือ เราพร้อมช่วยเหลือคุณ