تشغيل التعليمات البرمجية
يُنفّذ إجراء Run code تعليمات JavaScript. يمكنك تمرير البيانات من الخطوات السابقة في سير العمل كإدخال لإجراء Run code، وإرجاع قيم لاستخدامها في الخطوات اللاحقة.
في هذه الصفحة
الحقول
يحتوي إجراء Run code على الحقول التالية.
| الحقل | الوصف |
|---|---|
| الإدخال | مطلوب. استعلام GraphQL لاستخدام البيانات من الخطوات السابقة كإدخال لإجراء Run code. |
| المخرجات | مطلوب. تمثيل للبيانات التي سيرجعها الإجراء، والمحددة في لغة تعريف المخطط (SDL) الخاصة بـ GraphQL. |
| الكود | مطلوب. كود JavaScript الذي سينفذه إجراء Run code. |
بيانات الإدخال
يمكن تمرير بيانات الإدخال من الخطوات التي تسبق إجراء Run code. لتضمين هذه البيانات، يمكنك كتابة استعلام 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
}يمكن أيضًا تفكيك بنية المدخلات (destructured) في توقيع الدالة:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}الحقول الوصفية
للوصول إلى قيم الحقول الوصفية الفردية في Run code، يجب عليك أولاً إضافة الحقل الوصفي إلى بيانات بيئة Flow. يمكن القيام بذلك في أي إجراء أو شرط بخلاف Run code. على سبيل المثال، يمكنك إضافة إجراء تسجيل المخرجات (Log output) ثم اتباع التعليمات لإضافة الحقل الوصفي.
بعد إضافة حقل وصفي إلى بيئة سير العمل، يمكنك الوصول إليه في Run code. على سبيل المثال، افترض أنك أضفت حقلاً وصفيًا للطلب باسم مستعار giftMessage. يمكنك بعد ذلك الوصول إليه في استعلام الإدخال الخاص بك:
{
order {
giftMessage {
value
}
}
}بيانات المخرجات
يمكن لإجراء Run code إرجاع بيانات مخصصة. لتحديد نوع البيانات التي سيرجعها الكود، استخدم حقل المخرجات ولغة تعريف المخطط (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. لإخراج هذه البيانات في كود 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 لغة JavaScript بإصدار ECMA2020. وهو لا يدعم واجهات برمجة تطبيقات NodeJS أو CommonJS، أو استيراد الوحدات (modules).
- لا يمكن للكود الخاص بك إجراء طلبات HTTP (
fetch). - لا يمكن استخدام الدوال العشوائية والدوال المستندة إلى الوقت. يمكن تمرير بيانات التاريخ، مثل
scheduledAtأوcreatedAt، كإدخال. - لا يُسجل Console.log البيانات في وحدة تحكم المتصفح.
- للتوفير في حجم الحمولة، لا تُرجع حمولة بيانات المخرجات سوى المتغيرات المستخدمة في الخطوات اللاحقة.
- لا يمكنك إضافة اسم مستعار لحقل وصفي مباشرة في إجراء Run code. لتحقيق ذلك، راجع قسم الحقول الوصفية في هذه الصفحة.
بالإضافة إلى ذلك، تُفرض الحدود التالية:
- يقتصر استعلام بيانات الإدخال على 5000 حرف.
- يقتصر مخطط بيانات المخرجات على 5000 حرف.
- تقتصر حمولة بيانات المخرجات ومخرجات Console.log مجتمعةً على 50 كيلوبايت.
- لا يمكن أن يتجاوز طول الكود 50000 حرف.
- تقتصر مدة التشغيل الإجمالية على 5 ثوانٍ.
- يقتصر استخدام الذاكرة على 10 ميغابايت.
القوالب
إضافة عنصر مجاني (بخصم 100%) إلى الطلبات الجديدة
يضيف هذا القالب عنصرًا مجانيًا مخفضًا إلى الطلبات الجديدة عندما يكون العنصر متوفرًا في المخزون. فهو يتحقق من المخزون، ويُطبّق خصمًا بنسبة 100%، ويُحدّث الطلب دون إشعار العميل. يمكن أن يساعد سير العمل هذا في إضافة الأتمتة إلى السيناريوهات التالية:
- عزز رضا العملاء من خلال تضمين عنصر مجاني مفاجئ في طلباتهم.
- روّج للمنتجات الجديدة أو غير المعروفة عن طريق إضافتها كعينات مجانية في الطلبات.
- بسّط العروض الترويجية من خلال أتمتة تضمين العناصر المجانية وخصمها.
إلغاء عمليات الإرجاع غير النشطة
إلغاء عملية الإرجاع تلقائيًا التي لم يتم استرداد مبلغها أو إعادة تخزينها خلال فترة زمنية معينة. عرض القالب
تحويل العلامات ذات البادئة إلى حقل وصفي للمنتج باستخدام إجراء تشغيل الكود (Run code)
سيأخذ سير العمل هذا العلامات التي تبدأ ببادئة مثل 'color:' ويضيفها إلى قائمة الحقول الوصفية للمنتج. ويَستخدِم إجراء تشغيل الكود (Run code) لتحليل العلامات والعناصر الموجودة في قائمة الحقول الوصفية. يُشغَّل سير العمل عند إنشاء منتج، ولكن يمكن تشغيله يدويًا على المنتجات الحالية. عرض القالب
إرسال إشعار عندما يطلب عميل متغيرات متعددة لمنتج ما
استلام إشعار عبر البريد الإلكتروني عندما يطلب عميل متغيرات متعددة لنفس المنتج. عرض القالب
إرسال إشعار عندما يحتوي الطلب على حزمة
يبدأ سير العمل هذا عند إنشاء طلب ويتحقق مما إذا كان قد تم شراء أي من المنتجات في الطلب كجزء من حزمة. في حالة العثور عليها، يتم إرسال بريد إلكتروني داخلي يوضح تفاصيل الحزمة. إضافةً إلى ذلك، يمكنك استخدام سير العمل هذا كنقطة انطلاق لأي حالة استخدام تحتاج إلى اكتشاف وجود حزمة داخل الطلب. عرض القالب
تمييز الطلبات بعلامات حملة UTM المرتبطة
يضيف علامات إلى الطلبات التي تحتوي على أسماء أي حملات UTM تسويقية مرتبطة. عرض القالب