הפעלת קוד
הפעולה הפעלת קוד מבצעת JavaScript. אפשר להעביר נתונים משלבים קודמים בזרימת העבודה כקלט לפעולה הפעלת קוד, ולהחזיר ערכים לשימוש בשלבים הבאים.
שדות
הפעולה הפעלת קוד מכילה את השדות הבאים.
| שדה | תיאור |
|---|---|
| קלט | שדה חובה. שאילתת GraphQL לשימוש בנתונים משלבים קודמים כקלט לפעולה הפעלת קוד. |
| פלט | שדה חובה. ייצוג הנתונים שיוחזרו על ידי הפעולה, מוגדר בשפת הגדרת הסכמה (SDL) של GraphQL. |
| קוד | שדה חובה. קוד ה-JavaScript שהפעולה הפעלת קוד תבצע. |
נתוני קלט
ניתן להעביר נתוני קלט משלבים שמתרחשים לפני הפעולה הפעלת קוד. כדי לכלול את הנתונים האלו, אפשר לכתוב שאילתת GraphQL בשדה Input. הנתונים שיוחזרו מהשאילתה יהיו זמינים כארגומנט 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
}אפשר גם לפרק קלטים (destructure) בחתימת הפונקציה:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}מטא שדות
כדי לגשת לערכים בודדים של מטא שדות ב'הפעלת קוד', יש להוסיף קודם את המטא שדה לנתוני הסביבה של Flow. אפשר לעשות זאת בכל פעולה או תנאי מלבד 'הפעלת קוד'. לדוגמה, אפשר להוסיף את הפעולה Log output ואז לעקוב אחר ההוראות להוספת המטא שדה.
לאחר הוספת מטא שדה לסביבת זרימת העבודה, ניתן לגשת אליו ב'הפעלת קוד'. לדוגמה, נניח שהוספת מטא שדה של הזמנה עם כינוי בשם giftMessage. לאחר מכן תוכל לגשת אליו בשאילתת הקלט שלך:
{
order {
giftMessage {
value
}
}
}נתוני פלט
הפעולה הפעלת קוד יכולה להחזיר נתונים מותאמים אישית. כדי להגדיר את סוג הנתונים שהקוד יחזיר, יש להשתמש בשדה Output וב-שפת הגדרת הסכמה (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 שהגדרת בהגדרות הפעולה הפעלת קוד. ניתן להשתמש במשתנה זה גם בתנאים וגם בפעולות.
Console.log
אפשר להשתמש ב-console.log כדי להוציא נתונים ליומן הריצה של זרימת העבודה ב-Flow למטרות פתרון בעיות. הפלט יופיע ביומן הריצה (Run 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,
};
}לא ניתן להשתמש ב-console.info, console.error, או בפונקציות אחרות בפעולה הפעלת קוד.
דוגמה
דוגמאות לפעולת הקוד אפשר למצוא ב-מאגר הדוגמאות של Flow.
מגבלות
לפעולה הפעלת קוד יש את המגבלות הבאות:
- הפעולה הפעלת קוד תומכת ב-ECMA2020 JavaScript. היא לא תומכת בממשקי API של NodeJS או CommonJS, וגם לא בייבוא מודולים.
- הקוד שלך לא יכול לבצע קריאות HTTP (
fetch). - לא ניתן להשתמש בפונקציות אקראיות או בפונקציות מבוססות שעון. נתוני תאריך, כמו
scheduledAtאוcreatedAt, יכולים לעבור כקלט. - הפונקציה Console.log לא מתעדת בקונסולת הדפדפן.
- כדי לחסוך בגודל מטען הנתונים (payload), פלט הנתונים מחזיר רק משתנים שמשמשים בשלבים הבאים במורד התהליך.
- לא ניתן להוסיף כינוי למטא שדה ישירות בפעולה הפעלת קוד. כדי לעשות זאת, יש לעיין בסעיף מטא שדות שבעמוד זה.
בנוסף, נאכפות המגבלות הבאות:
- שאילתת נתוני הקלט מוגבלת ל-5,000 תווים.
- סכמת נתוני הפלט מוגבלת ל-5,000 תווים.
- מטען הנתונים (payload) של הפלט והפלט של Console.log מוגבלים יחד ל-50KB.
- הקוד לא יכול להיות ארוך מ-50,000 תווים.
- משך הביצוע הכולל מוגבל ל-5 שניות.
- השימוש בזיכרון מוגבל ל-10MB.
תבניות
הוספת פריט בחינם (בהנחה של 100%) להזמנות חדשות
תבנית זו מוסיפה פריט בחינם (בהנחה) להזמנות חדשות כאשר הפריט נמצא במלאי. היא בודקת את מערכת המלאי, מחילה הנחה של 100%, ומעדכנת את ההזמנה ללא התראת הלקוח. זרימת עבודה זו יכולה לעזור בהוספת אוטומציה לתרחישים הבאים:
- אפשר לשפר את שביעות הרצון של הלקוחות באמצעות הוספת פריט חינם כהפתעה להזמנה שלהם.
- אפשר לקדם מוצרים חדשים או מוכרים פחות באמצעות הוספתם כדוגמיות חינם להזמנות.
- אפשר לייעל מבצעים באמצעות אוטומציה של הוספה ומתן הנחה על פריטים בחינם.
ביטול החזרות לא פעילות
ביטול אוטומטי של החזרה שלא זוכתה או הוחזרה למלאי בתוך פרק זמן מסוים. הצגת התבנית
המרת תגים עם קידומת למטא שדה של מוצר באמצעות פעולת Run code
זרימת עבודה זו תיקח תגים שמתחילים בקידומת כגון 'color:' ותוסיף אותם לרשימת מטא שדות של מוצרים. היא משתמשת בפעולת Run code כדי לנתח את התגים ואת הפריטים הקיימים ברשימת המטא שדות. זרימת העבודה מופעלת בעת יצירת מוצר, אך ניתן להפעיל אותה באופן ידני עבור מוצרים קיימים. הצגת התבנית
שליחת התראה כאשר לקוח מזמין מספר גרסאות של מוצר
קבלת התראת דוא"ל כאשר לקוח מזמין מספר גרסאות של אותו מוצר. הצגת התבנית
שליחת התראה כשהזמנה כוללת חבילה
זרימת עבודה זו מתחילה כשנוצרת הזמנה ובודקת אם חלק מהמוצרים בהזמנה נרכשו כחלק מחבילה. אם יימצאו כאלה, יישלח דוא"ל פנימי עם פרטי החבילה. בנוסף, ניתן להשתמש בזרימת עבודה זו כנקודת התחלה עבור כל תרחיש שימוש שבו צריך לזהות קיום של חבילה בתוך הזמנה. הצגת התבנית
תיוג הזמנות עם קמפיין UTM משויך
הוספת תגים להזמנות שכוללות שמות של קמפיינים משויכים של UTM. הצגת התבנית