📘 מדריך Expressions וביטויים ב-n8n

מדריך מקיף עם דוגמאות מעשיות וביטויים מתקדמים

👨‍💻 יוסי יחזקאל | 📞 054-2822755 | 🌐 n8nisrael.com

🎯 איך להשתמש במדריך זה

כל דוגמה מוצגת בתיבת טקסט נפרדת עם הסבר מפורט בעברית
ניתן להדפיס את המדריך או לשמור כ-PDF לשימוש עתידי

🎨 מדריך צבעי הקוד (Syntax Highlighting)

🔵 כחול בהיר: משתנים ($json, $node, $parameter)
🟡 צהוב: פונקציות ($if, $max, $min, Date)
🟠 כתום: מחרוזות טקסט ("email", "customer_name")
🟢 ירוק בהיר: מספרים (500, 7, 0)
🟣 סגול: מילות מפתח (const, return, try, catch)
🟨 זהוב: סוגריים וסימנים ({ } [ ] ( ))
🟢 ירוק כהה: הערות וטקסט הסבר
⚪ לבן: אופרטורים (=, >, &&, +, -)
🔤 משתנים בסיסיים ונתוני JSON

🟦 $json – גישה לנתוני JSON הנוכחיים

{{$json["customer_email"]}} {{$json["order_total"]}} {{$json["user_id"]}}
שימוש: גישה מהירה לערכים בפלט של Node נוכחי.
מתי משתמשים: ביטויים בסיסיים ופשוטים.
דוגמה: שליפת שדה "email" מתגובת API.

🟦 $input.item.json – גישה ישירה בתוך IIFE

{{(() => { const userData = $input.item.json; const fullName = `${userData.first_name} ${userData.last_name}`; return fullName.toUpperCase(); })()}}
שימוש: כאשר כותבים ביטוי מורכב בתוך פונקציית IIFE.
מתי משתמשים: לוגיקה מורכבת עם משתנים.
יתרון: מאפשר שימוש במשתנים ופונקציות JavaScript.

🟦 $node["Node Name"] – נתונים מ-Node אחר

{{$node["HTTP Request - Get Customer"].json["customer_data"]["email"]}} {{$node["Database Query"].json["user_details"]["phone_number"]}}
שימוש: גישה ל-output של Node קודם לפי השם.
מתי משתמשים: כאשר צריך נתונים מ-Node שלא מחובר ישירות.
חשוב: השם חייב להיות מדויק כפי שמופיע ב-Workflow.
🔍 גישה לנתונים מתקדמת

🟦 $item(index) – גישה לפריט ספציפי

{{$item(0).$node["API Call"].json["response_status"]}} {{$item(1).$node["Email Send"].json["delivery_status"]}}
שימוש: כאשר יש multiple items וצריך פריט ספציפי.
אינדקס: מתחיל מ-0 (הפריט הראשון).
דוגמה: לקיחת סטטוס מהבקשה הראשונה ברשימה.

🟦 $parameter – שימוש בשדה אחר באותו Node

{{$parameter["recipient_email"]}} {{$parameter["message_subject"]}}
שימוש: להשתמש בערכים של שדות אחרים באותו Node.
מתי שימושי: יצירת תלות בין שדות באותו Node.
דוגמה: שימוש בכתובת email בשדה subject של מייל.
⚙️ משתני מערכת וסביבה

🟦 $env – משתני סביבה

{{$env["OPENAI_API_KEY"]}} {{$env["DATABASE_PASSWORD"]}} {{$env["WEBHOOK_SECRET"]}}
שימוש: קריאת מידע רגיש מהמערכת.
אבטחה: מומלץ לשמור API Keys ופרטים רגישים כך.
הגדרה: בקובץ .env או במשתני המערכת.

🟦 $now – תאריך ושעה נוכחיים

{{$now.toISOString()}}
שימוש: קבלת הזמן הנוכחי בפורמט מובנה.
פורמטים: .toISOString(), .getTime(), .setDate().
דוגמה: חותמת זמן ליצירת רשומות או לוגים.

🟦 $today – תאריך היום בלבד

{{$today.toISOString()}}
שימוש: תאריך בלי שעה - שימושי להשוואות.
יתרון: מונע בעיות של אזורי זמן ושעות.
מתי להשתמש: סינון רשומות לפי תאריך.
📊 מידע על Workflow וריצה

🟦 $runIndex – מספר ריצה

{{$runIndex}}
שימוש: מספר הריצה של ה-Workflow.
מתי שימושי: בלולאות או מנגנוני Retry.
דוגמה: יצירת מזהה ייחודי לכל ריצה.

🟦 $itemIndex – מספר הפריט הנוכחי

{{$itemIndex}}
שימוש: המיקום היחסי של הפריט במערך.
מתחיל מ: 0 (הפריט הראשון).
דוגמה: מספור פריטים ברשימה או יצירת ID ייחודי.

🟦 $workflow – מידע על ה-Workflow

{{$workflow.name}}
שימוש: גישה לשם, מזהה ומידע על ה-workflow.
שדות זמינים: name, id, createdAt.
דוגמה: הוספת שם ה-workflow ללוגים או דוחות.
🛠️ פונקציות מובנות ושימושיות

🟦 $if – תנאי פשוט

{{$if($json.order_amount > 500, "הזמנה גדולה", "הזמנה רגילה")}} {{$if($json.user_role === "admin", "מנהל", "משתמש רגיל")}}
שימוש: תנאי פשוט עם שני ערכים אפשריים.
תחביר: $if(תנאי, ערך_אם_נכון, ערך_אם_שקר).
דוגמה: סיווג לקוחות לפי גיל או סטטוס.

🟦 $ifEmpty – ערך ברירת מחדל

{{$ifEmpty($json.customer_notes, "לקוח לא השאיר הערות")}} {{$ifEmpty($json.shipping_address, "כתובת לא צוינה")}}
שימוש: החלפת ערכים ריקים בברירת מחדל.
מתי שימושי: מניעת הצגת שדות ריקים.
דוגמה: הצגת "לא זמין" במקום שדה ריק.

🟦 $max/$min – ערכים מקסימליים ומינימליים

{{$max($json.monthly_sales)}} // הכנסה חודשית מקסימלית {{$min($json.product_prices)}} // המוצר הזול ביותר
שימוש: מציאת הערך הגבוה/נמוך ביותר במערך.
דוגמה: מציאת המחיר הגבוה ביותר ברשימת מוצרים.
תוצאה: $max מחזיר 9, $min מחזיר 2.
🔎 חיפוש וביטויים מתקדמים

🟦 $jmespath – חיפוש מתקדם ב-JSON

{{$jmespath($json, "customer.billing_address.city")}} {{$jmespath($json, "orders[?status=='completed'].total")}}
שימוש: שאילתות מתקדמות על JSON מורכב.
יכולות: חיפוש עמוק, סינון מערכים, תנאים.
למידע נוסף: jmespath.org

🟦 $('Node Name') – קיצור נוח

{{$('CRM API Call').json["lead_score"]}} {{$('Email Campaign').json["open_rate"]}}
שימוש: תחביר מקוצר ונוח במקום $node["Webhook"].
יתרון: כתיבה מהירה יותר וקריאות טובה יותר.
זהה ל: $node["Webhook"].json["userId"]
🚀 דוגמאות מתקדמות ושימושיות

🟦 מיזוג נתונים משני Nodes

{{ Object.assign({}, $json, $node["data"].json) }}
שימוש: שילוب נתונים מהאובייקט הנוכחי עם Node אחר.
תוצאה: אובייקט חדש עם כל השדות משני המקורות.
חשוב: ערכים מ-Node "data" יחליפו ערכים זהים.

🟦 בדיקת תוקף תאריך (Unix Time)

{{ new Date($json.tokenExpiresIn).getTime() < Date.now() }}
שימוש: בדיקה האם תאריך כבר עבר.
תוצאה: true אם התאריך עבר, false אם עוד לא.
דוגמה: בדיקת תוקף טוקן או רישיון.

🟦 גישה בטוחה לשדות מקוננים

{{ $json && $json["user"] && $json["user"].name }}
שימוש: מניעת שגיאות כאשר שדות עלולים להיות ריקים.
לוגיקה: בודק כל רמה לפני המעבר לבאה.
תוצאה: undefined במקום שגיאה אם שדה לא קיים.

🟦 הוספת 7 ימים לתאריך

{{(() => { const date = new Date($json.startDate); date.setDate(date.getDate() + 7); return date.toISOString(); })()}}
שימוש: חישוב תאריכי יעד, תזכורות או משימות.
גמישות: ניתן לשנות ל-30 ימים, שבוע, וכו'.
פורמט: מחזיר תאריך בפורמט ISO סטנדרטי.

🟦 סינון מערך לפי תנאי

{{(() => { const products = $json.products; return products.filter(p => p.price > 100); })()}}
שימוש: סינון נתונים לפי קריטריונים ספציפיים.
דוגמה: מוצרים יקרים, לקוחות פעילים, הזמנות חדשות.
תוצאה: מערך חדש עם הפריטים שעומדים בתנאי.

🟦 חישוב ממוצע ממערך מספרים

{{(() => { const nums = $json.numbers; const sum = nums.reduce((a, b) => a + b, 0); return sum / nums.length; })()}}
שימוש: חישובים סטטיסטיים על נתונים.
דוגמה: ממוצע ציונים, מחירים, דירוגים.
לוגיקה: סכום כל המספרים חלקי כמות הפריטים.

🟦 טיפוח נתונים - הסרת ערכים ריקים

{{(() => { const data = $json; return Object.keys(data).filter(k => data[k] !== null && data[k] !== "").reduce((obj, key) => { obj[key] = data[key]; return obj; }, {}); })()}}
שימוש: ניקוי נתונים מערכים ריקים או null.
תוצאה: אובייקט נקי עם מידע רלוונטי בלבד.
יישום: הכנת נתונים לשמירה במסד נתונים.

🟦 try/catch לטיפול בשגיאות

{{(() => { try { return JSON.parse($json.payload); } catch (e) { return { error: e.message }; } })()}}
שימוש: הגנה מפני שגיאות בעיבוד נתונים.
יתרון: ה-Workflow ימשיך לרוץ גם אם יש שגיאה.
דוגמה: המרת טקסט ל-JSON עם הגנה מפני כשל.
✨ סיכום וטיפים

🎯 עקרונות לזכור

1. השתמש ב-$json לגישה פשוטה
2. השתמש ב-IIFE ללוגיקה מורכבת
3. תמיד בדוק שקיימות השדה לפני הגישה
4. השתמש ב-$ifEmpty למניעת ערכים ריקים
5. השתמש ב-try/catch לביטחון נוסף