n8n Expressions: สูตรและตัวแปรที่ใช้บ่อย
รวม n8n Expressions ที่ใช้บ่อยที่สุด ทั้ง $json, $item, $now, $workflow พร้อมตัวอย่างจริงที่คัดลอกไปใช้ได้เลย
สิ่งที่ทำให้ n8n ทรงพลังกว่าการลาก Node เชื่อมกันธรรมดาคือ Expressions — ระบบสูตรที่ให้คุณดึงค่าจากข้อมูลที่ไหลผ่าน Workflow มาใช้ใน Field ต่างๆ แบบ Dynamic
แทนที่จะพิมพ์ข้อความตายตัว คุณสามารถบอกให้ n8n ดึง “ชื่อลูกค้าจาก Item นี้” หรือ “วันที่ตอนนี้ฟอร์แมตแบบไทย” หรือ “ค่า total จาก Node ก่อนหน้า” — ทั้งหมดนี้คือ Expressions
รูปแบบพื้นฐาน
Expressions ใน n8n ใช้ {{ }} ครอบ ใช้ได้ใน Field เกือบทุกที่ที่มี Expression Editor เปิดอยู่ (ปุ่มสัญลักษณ์ = ข้างๆ Field)
{{ $json.name }}
{{ $json.price * 1.07 }}
{{ "สวัสดี " + $json.firstName }}
$json — ดึงข้อมูลจาก Item ปัจจุบัน
$json คือตัวแปรที่ใช้บ่อยที่สุด หมายถึง JSON data ของ Item ที่กำลัง Process อยู่
{{ $json.name }} // ดึง field "name"
{{ $json.user.email }} // ดึง nested field
{{ $json["order-id"] }} // ดึง field ที่มี dash ใน key
{{ $json.items[0].price }} // ดึง element แรกใน array
{{ $json.items.length }} // นับจำนวน element ใน array
$input — ข้อมูลจาก Node ก่อนหน้า
ใน n8n เวอร์ชันใหม่ $input คือวิธีมาตรฐานเข้าถึงข้อมูลจาก Node ที่เชื่อมเข้ามา
{{ $input.first().json.name }} // Item แรก
{{ $input.last().json.total }} // Item สุดท้าย
{{ $input.all().length }} // จำนวน Item ทั้งหมด
{{ $input.item.json.status }} // Item ปัจจุบัน (เหมือน $json)
$(‘Node Name’) — ดึงข้อมูลจาก Node อื่นในระบบ
เมื่อต้องการข้อมูลจาก Node ที่ไม่ใช่ Node ก่อนหน้าทันที เช่น ต้องการค่าจาก Node ต้น Workflow
{{ $('HTTP Request').item.json.token }}
{{ $('Get Customer').first().json.id }}
{{ $('Webhook').item.json.body.event }}
ใส่ชื่อ Node ใน ('') ตามที่ตั้งชื่อใน Canvas ได้เลย ถ้าชื่อมีช่องว่างก็ใส่ตามนั้น
$now และ $today — วันที่และเวลา
{{ $now }} // DateTime ปัจจุบัน (Luxon object)
{{ $now.toISO() }} // "2026-04-10T08:30:00.000Z"
{{ $now.toFormat('dd/MM/yyyy') }} // "10/04/2026"
{{ $now.toFormat('HH:mm') }} // "08:30"
{{ $now.plus({ days: 7 }).toISO() }} // 7 วันข้างหน้า
{{ $now.minus({ hours: 1 }).toISO() }} // 1 ชั่วโมงก่อน
{{ $today }} // วันนี้ (ไม่มีเวลา)
{{ $today.toFormat('yyyy-MM-dd') }} // "2026-04-10"
$now ใน n8n ใช้ Luxon สำหรับ format วันที่ เรียนรู้ format string เพิ่มเติมได้จาก Luxon docs
$vars — Variables ที่ตั้งไว้ใน Workflow Settings
ถ้าคุณตั้ง Variables ไว้ใน Workflow Settings สามารถดึงมาใช้ได้ผ่าน $vars
{{ $vars.api_endpoint }}
{{ $vars.default_currency }}
เหมาะกับค่าที่ใช้ซ้ำหลายจุดใน Workflow เช่น base URL หรือ default region
$env — Environment Variables
ถ้า n8n ของคุณตั้ง Environment Variable ไว้ใน instance สามารถดึงมาใช้ใน Expression ได้
{{ $env.MY_API_KEY }}
{{ $env.BASE_URL }}
ใช้ได้เฉพาะกับ Variables ที่ขึ้นต้นด้วย N8N_ หรือ allowlist ไว้ใน config
$workflow — ข้อมูลของ Workflow
{{ $workflow.id }} // ID ของ Workflow
{{ $workflow.name }} // ชื่อ Workflow
{{ $workflow.active }} // true/false ว่า active อยู่หรือเปล่า
ใช้บ่อยในการ Log หรือแนบข้อมูล Debug เช่น ส่ง Slack แจ้งว่า Workflow ไหนเกิด Error
$execution — ข้อมูลการ Run ครั้งนี้
{{ $execution.id }} // Execution ID
{{ $execution.mode }} // "manual" หรือ "trigger"
{{ $execution.resumeUrl }} // URL สำหรับ Wait Node resume
$itemIndex — ลำดับของ Item ใน Loop
เมื่ออยู่ใน Loop หรือกำลัง Process หลาย Item ตัวแปรนี้บอกว่า Item ปัจจุบันเป็นลำดับที่เท่าไหร่ (เริ่มจาก 0)
{{ $itemIndex }} // 0, 1, 2, ...
{{ $itemIndex + 1 }} // 1, 2, 3, ... (สำหรับแสดงผล)
JavaScript ทั่วไปใน Expressions
Expressions ใน n8n รัน JavaScript ได้เต็มรูปแบบ
String manipulation:
{{ $json.name.toUpperCase() }}
{{ $json.email.toLowerCase() }}
{{ $json.description.substring(0, 100) }}
{{ $json.name.trim() }}
{{ $json.phone.replace(/-/g, '') }}
Number formatting:
{{ Number($json.price).toFixed(2) }}
{{ Math.round($json.score) }}
{{ Math.max($json.a, $json.b) }}
Conditional (Ternary):
{{ $json.amount > 1000 ? "VIP" : "Regular" }}
{{ $json.status === "paid" ? "ชำระแล้ว" : "ยังไม่ชำระ" }}
Array methods:
{{ $json.tags.join(", ") }}
{{ $json.items.filter(i => i.active).length }}
{{ $json.prices.reduce((sum, p) => sum + p, 0) }}
การ Debug Expressions
วิธีที่ง่ายที่สุดคือคลิก Expression Editor แล้วดู Preview ด้านล่าง n8n จะแสดงค่าจริงตาม Item ที่กำลัง test
ถ้าค่าเป็น undefined ให้ตรวจสอบ
- ชื่อ field ถูกต้องหรือไม่ (case-sensitive)
- Node ที่อ้างถึงได้รันแล้วหรือยัง
- ข้อมูล Input มี structure ตามที่คาดหรือเปล่า
เทคนิคเพิ่มเติม ใช้ ?? (nullish coalescing) เพื่อกำหนดค่า default
{{ $json.nickname ?? $json.name ?? "ไม่ระบุชื่อ" }}
{{ $json.discount ?? 0 }}
อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co
Related posts
n8n Advanced: 10 เทคนิคขั้นสูงสำหรับมืออาชีพ
รวม 10 เทคนิค n8n ขั้นสูงที่มืออาชีพใช้จริง ตั้งแต่ Error Handling, Sub-Workflow, Code Node ไปจนถึง API Pagination
Code Node ใน n8n: เขียน JavaScript เสริมพลัง Workflow
คู่มือใช้งาน Code Node ใน n8n เขียน JavaScript แปลงข้อมูล คำนวณ Logic ซับซ้อน และเรียก async function ที่ Node มาตรฐานทำไม่ได้
Loop และ Batch Processing ใน n8n
เรียนรู้วิธีใช้ Loop Node และ SplitInBatches ใน n8n เพื่อประมวลผลข้อมูลหลายรายการอย่างมีประสิทธิภาพโดยไม่ติด Rate Limit