کوڈ رن کریں

Run code ایکشن JavaScript چلاتا ہے۔ آپ ورک فلو کے پچھلے مراحل کا ڈیٹا Run code ایکشن میں بطور ان پٹ پاس کر سکتے ہیں، اور آئندہ مراحل میں استعمال ہونے والی ویلیوز کو ریٹرن کر سکتے ہیں۔

فیلڈز

Run code ایکشن میں درج ذیل فیلڈز شامل ہیں:

Run code ایکشن میں استعمال ہونے والی فیلڈز۔
فیلڈتفصیل
ان پٹدرکار ہے۔ پچھلے مراحل کے ڈیٹا کو Run code ایکشن میں ان پٹ کے طور پر استعمال کرنے کے لیے ایک GraphQL کیوری۔
آؤٹ پٹدرکار ہے۔ ایکشن کے ذریعے واپس کیے جانے والے ڈیٹا کی نمائندگی، جسے GraphQL کی سکیما ڈیفینیشن لینگویج (SDL) میں واضح کیا گیا ہے۔
کوڈدرکار ہے۔ وہ JavaScript جسے Run code ایکشن چلائے گا۔

ان پٹ ڈیٹا

Run code ایکشن سے پہلے ہونے والے مراحل سے ان پٹ ڈیٹا پاس کیا جا سکتا ہے۔ اس ڈیٹا کو شامل کرنے کے لیے، آپ ان پٹ فیلڈ میں ایک GraphQL کیوری لکھ سکتے ہیں۔ کیوری سے واپس آنے والا ڈیٹا export default کے ساتھ نشان زدہ فنکشن کے لیے input آرگیومنٹ کے طور پر دستیاب ہوگا، جسے عام طور پر main کہا جاتا ہے۔

ان پٹ کیوری Flow کے انوائرنمنٹ ڈیٹا کے لیے ہوتی ہے، یہ Shopify Admin API کی کیوری نہیں ہوتی۔ لہذا، آپ ان پٹ ڈیٹا میں Shopify کیوری شامل نہیں کر سکتے ہیں۔ مزید برآں، Flow کیوری میں edges اور nodes کو ہینڈل کرتا ہے، اس لیے آپ کو اپنی کیوری میں انہیں یا دیگر پیجنگ سنٹیکس شامل کرنے کی ضرورت نہیں ہے۔

ان پٹ کی ایک مثال جو آرڈر کا نوٹ اور لائن آئٹم کا عنوان حاصل کرتی ہے:

{
  order {
    note
    lineItems {
      title
    }
  }
}

یہ ڈیٹا ایک input متغیر (variable) میں تبدیل ہو جاتا ہے جسے کوڈ میں استعمال کیا جا سکتا ہے:

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

فنکشن کے دستخط (signature) میں بھی ان پٹس کو ڈی سٹرکچر کیا جا سکتا ہے:

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

میٹا فیلڈز

Run code میں واحد میٹا فیلڈ کی ویلیوز تک رسائی حاصل کرنے کے لیے، آپ کو سب سے پہلے Flow کے انوائرنمنٹ ڈیٹا میں میٹا فیلڈ کو شامل کرنا ہوگا۔ یہ Run code کے علاوہ کسی بھی ایکشن یا کنڈیشن میں کیا جا سکتا ہے۔ مثال کے طور پر، آپ ایک Log output ایکشن شامل کر سکتے ہیں اور پھر میٹا فیلڈ شامل کرنے کی ہدایات پر عمل کر سکتے ہیں۔

ورک فلو انوائرنمنٹ میں میٹا فیلڈ شامل ہو جانے کے بعد، آپ اسے Run code میں ایکسیس کر سکتے ہیں۔ مثال کے طور پر، فرض کریں کہ آپ نے giftMessage کے عرفی نام (alias) کے ساتھ ایک آرڈر میٹافیلڈ شامل کیا ہے۔ پھر آپ اسے اپنی ان پٹ کیوری میں ایکسیس کر سکتے ہیں:

{
  order {
    giftMessage {
      value
    }
  }
}

آؤٹ پٹ ڈیٹا

Run code ایکشن حسب ضرورت (custom) ڈیٹا واپس کر سکتا ہے۔ اس ڈیٹا کی قسم (type) واضح کرنے کے لیے جو کوڈ واپس کرے گا، آؤٹ پٹ فیلڈ اور GraphQL کی سکیما ڈیفینیشن لینگویج (SDL) کا استعمال کریں۔ سپورٹ کی جانے والی آؤٹ پٹ اقسام String، Int، Float، Boolean، اور ID ہیں، جو ضروری فیلڈز، فہرستوں، اور کسٹم ڈیٹا کی تخصیص کے طریقے کے لیے SDL تصریحات (specification) کی پیروی کرتی ہیں۔

مثال کے طور پر، giftMessage نامی سٹرنگ اور totalGifts نامی نمبر واپس کرنے کے لیے:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

تبصرے (comments) اختیاری ہیں، لیکن انہیں 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 نامی ویری ایبل کا استعمال کریں، جسے Run code ایکشن کنفیگریشن میں آپ کے متعین کردہ Output سکیما کے مطابق ٹائپ کیا جائے گا۔ آپ اس ویری ایبل کو کنڈیشنز اور ایکشنز دونوں میں استعمال کر سکتے ہیں۔

Console.log

آپ ٹربل شوٹنگ کے مقاصد کے لیے Flow کے ورک فلو رن لاگ میں ڈیٹا آؤٹ پٹ کرنے کے لیے console.log استعمال کر سکتے ہیں۔ آؤٹ پٹ ورک فلو کے رن لاگ میں ظاہر ہوگا۔ مثال کے طور پر، درج ذیل درست ہیں:

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,
  };
}

آپ Run code ایکشن میں console.info، console.error، یا دیگر فنکشنز استعمال نہیں کر سکتے۔

مثال

کوڈ ایکشن کی مثالیں Flow examples کی ریپازٹری میں مل سکتی ہیں۔

حدود

Run code ایکشن کی درج ذیل حدود ہیں:

  • Run code ایکشن ECMA2020 JavaScript کو سپورٹ کرتا ہے۔ یہ NodeJS یا CommonJS APIs، یا ماڈیولز امپورٹ کرنے کو سپورٹ نہیں کرتا۔
  • آپ کا کوڈ HTTP کالز (fetch) نہیں کر سکتا۔
  • رینڈم اور کلاک پر مبنی فنکشنز استعمال نہیں کیے جا سکتے۔ تاریخ کا ڈیٹا، جیسے scheduledAt یا createdAt، بطور ان پٹ پاس کیا جا سکتا ہے۔
  • Console.log براؤزر کنسول پر لاگ نہیں ہوتا ہے۔
  • پے لوڈ کے سائز کو بچانے کے لیے، آؤٹ پٹ ڈیٹا پے لوڈ صرف ان ویری ایبلز کو واپس کرتا ہے جو ڈاؤن سٹریم (آئندہ کے) مراحل میں استعمال ہوتے ہیں۔
  • آپ Run code ایکشن میں براہ راست میٹا فیلڈ کا عرف (alias) شامل نہیں کر سکتے۔ اسے مکمل کرنے کے لیے، اس صفحے پر موجود میٹا فیلڈز کے سیکشن کا جائزہ لیں۔

مزید برآں، درج ذیل حدود لاگو کی جاتی ہیں:

  • ان پٹ ڈیٹا کی کیوری 5000 کریکٹرز تک محدود ہے۔
  • آؤٹ پٹ ڈیٹا کا سکیما 5000 کریکٹرز تک محدود ہے۔
  • آؤٹ پٹ ڈیٹا کا پے لوڈ اور Console.log کا آؤٹ پٹ مجموعی طور پر 50KB تک محدود ہے۔
  • کوڈ 50000 کریکٹرز سے طویل نہیں ہو سکتا۔
  • عمل درآمد (execution) کا کُل دورانیہ 5 سیکنڈز تک محدود ہے۔
  • میموری کا استعمال 10MB تک محدود ہے۔

ٹیمپلیٹس

نئے آرڈرز میں مفت (100% ڈسکاؤنٹ شدہ) آئٹم شامل کریں

یہ ٹیمپلیٹ نئے آرڈرز میں ایک مفت، ڈسکاؤنٹ شدہ آئٹم شامل کرتا ہے جب آئٹم اسٹاک میں ہو۔ یہ انونٹری چیک کرتا ہے، 100% ڈسکاؤنٹ لاگو کرتا ہے، اور کسٹمر کو مطلع کیے بغیر آرڈر اپ ڈیٹ کرتا ہے۔ یہ ورک فلو درج ذیل صورتحال میں آٹومیشن شامل کرنے میں مدد کر سکتا ہے:

  • کسٹمر کے آرڈر میں ایک سرپرائز مفت آئٹم شامل کر کے ان کے اطمینان میں اضافہ کریں۔
  • نئی یا کم مشہور پروڈکٹ کو آرڈر میں مفت نمونے کے طور پر شامل کر کے ان کی تشہیر کریں۔
  • مفت آئٹم کی شمولیت اور ڈسکاؤنٹ کو خودکار بنا کر پروموشن کو منظم کریں۔

ٹیمپلیٹ دیکھیں

غیر فعال ریٹرن منسوخ کریں

مخصوص وقت کے اندر ری فنڈ یا ری سٹاک نہ ہونے والے ریٹرن کو خودکار طور پر منسوخ کریں۔ ٹیمپلیٹ دیکھیں

Run code ایکشن کا استعمال کر کے سابقے والے ٹیگ کو پروڈکٹ میٹا فیلڈ میں تبدیل کریں

یہ ورک فلو ایسے ٹیگ لے گا جو 'color:' جیسے کسی سابقے سے شروع ہوتے ہیں اور انہیں پروڈکٹ کی میٹا فیلڈ لسٹ میں شامل کرے گا۔ یہ ٹیگ اور میٹا فیلڈ لسٹ میں موجود آئٹم کو پارس کرنے کے لیے Run code ایکشن کا استعمال کرتا ہے۔ یہ ورک فلو پروڈکٹ بننے پر رن ہوتا ہے، لیکن اسے موجودہ پروڈکٹ پر مینوئل طور پر بھی رن کیا جا سکتا ہے۔ ٹیمپلیٹ دیکھیں

جب کوئی کسٹمر کسی پروڈکٹ کے متعدد ویرینٹ کا آرڈر دے تو نوٹیفکیشن بھیجیں

جب کوئی کسٹمر ایک ہی پروڈکٹ کے متعدد ویرینٹ کا آرڈر دے تو ای میل نوٹیفکیشن موصول کریں۔ ٹیمپلیٹ دیکھیں

جب آرڈر میں بنڈل شامل ہو تو نوٹیفکیشن بھیجیں

یہ ورک فلو اس وقت شروع ہوتا ہے جب کوئی آرڈر بنتا ہے اور چیک کرتا ہے کہ آیا آرڈر میں موجود کوئی بھی پروڈکٹ بنڈل کے حصے کے طور پر خریدی گئی تھی۔ اگر مل جائے، تو بنڈل کی تفصیلات کے ساتھ ایک اندرونی ای میل بھیجی جاتی ہے۔ اس کے علاوہ آپ اس ورک فلو کو کسی بھی ایسے استعمال کی صورت کے لیے نقطہ آغاز کے طور پر استعمال کر سکتے ہیں جس میں آرڈر کے اندر بنڈل کی موجودگی کا پتہ لگانے کی ضرورت ہو۔ ٹیمپلیٹ دیکھیں

آرڈر کو متعلقہ UTM کیمپین کے ساتھ ٹیگ کریں

ایسے آرڈر میں ٹیگ شامل کرتا ہے جن میں کسی بھی متعلقہ UTM کیمپین کا نام شامل ہو۔ ٹیمپلیٹ دیکھیں