n8n Thai
by n8n Thai

n8n Expressions: สูตรและตัวแปรที่ใช้บ่อย

รวม n8n Expressions ที่ใช้บ่อยที่สุด ทั้ง $json, $item, $now, $workflow พร้อมตัวอย่างจริงที่คัดลอกไปใช้ได้เลย

n8n Expressions: สูตรและตัวแปรที่ใช้บ่อย

สิ่งที่ทำให้ 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