Yapay Zeka Ajanları
n8n Öğrenme Yolu
BÖLÜM 03Başlangıç ~75 dk

Expressions ve Veri Manipülasyonu

n8n'in en güçlü özelliği: expressions. Veriyi node'lar arasında okuma, dönüştürme ve formatlama.

Bu bölümde

Expressions, n8n'in 'sıradan bir tetik-aksiyon aracı'ndan 'gerçek otomasyon platformu'na geçtiği yerdir. Bir node'un çıktısını okumak, dönüştürmek, formatlamak, koşullara bağlamak — hepsi expression ile yapılır. Bu bölümde sözdizimini, en sık kullanılan dönüşümleri (string, number, date) ve birden çok node'dan veri çekmeyi öğreneceksiniz.

Konular

  • Expression sözdizimi: {{ $json.field }}
  • Node'lar arası veri çekme: $node, $items
  • String, Number, Date dönüşümleri
  • JMESPath ile karmaşık sorgular
  • Tarih/saat işlemleri ve formatları
  • Conditional değerler (ternary)

Expression sözdizimi: {{ ... }}

Bir parametre alanını expression moduna almak için sağ üstteki 'fx' düğmesine basarsınız (veya alana =, sonra {{ yazarsınız). Expression'lar JavaScript ifadeleridir: {{ $json.email }} mevcut item'ın email alanını, {{ $json.name.toLowerCase() }} küçük harfe çevrilmiş halini döner. Hata yapmamak için iki ipucu: expression döndüğü değer tipini gösterir (string/number/object) — kontrol edin; alan adında boşluk varsa bracket notation kullanın: $json['Full Name'].

Node'lar arası veri: $json, $input, $node

Üç temel referans vardır. $json: o anki node'a gelen item'ın json alanı — en sık kullandığınız. $input.first(), $input.last(), $input.all(): mevcut node'a gelen item'ların hepsine erişim. $node['Webhook'].json.body.email: başka bir node'un çıktısından doğrudan veri çekmek (özellikle if/merge sonrası bir öncekine ulaşmak için). Bu üçü oturduğunda hangi node'dan veri çekeceğinizi düşünmeden yazarsınız.

Webhook
Set
Edit Fields
{ }HTTP Request

String işlemleri

En çok ihtiyaç duyacağınız: .trim() (baş/son boşluk), .toLowerCase() / .toUpperCase(), .split(',') (virgüllü stringi diziye çevirme), .replace('eski', 'yeni'), .includes('arama'), template literal'lar (`Hello ${$json.name}!`). Örnek: {{ $json.email.toLowerCase().trim() }} — formdan gelen e-postayı normalize eder.

Number, Date ve Math

Number: parseInt($json.qty) veya Number($json.qty) ile string'i sayıya çevirin; toFixed(2) ile 2 ondalık. Date: $now (şu an), $today (bugün 00:00), DateTime.fromISO($json.created_at) ile ISO string'i tarihe çevirin. .plus({days: 7}), .minus({hours: 1}), .toFormat('dd.MM.yyyy') gibi Luxon DateTime API'sinin tamamı kullanılabilir. Math: Math.max, Math.round, Math.random — JavaScript'in standart Math'i tamamıyla mevcuttur.

JMESPath ile karmaşık JSON

Derin/dallı JSON'larla uğraşırken expression yerine JMESPath kullanmak çok daha temiz olabilir. $jmespath($json, 'items[?status==`active`].name') aktif item'ların adlarını döner. n8n'in built-in destekledği fonksiyondur; özellikle API yanıtlarını filtrelemek ve dönüştürmek için faydalıdır.

Conditional değerler (ternary)

Bir alanı koşula bağlamak için ternary kullanın: {{ $json.score > 70 ? 'sıcak' : 'soğuk' }}. Daha okunaklı olması için: {{ $json.email ? $json.email : 'unknown@example.com' }} — veya kısa nullish coalescing: {{ $json.email ?? 'unknown@example.com' }}. Mantığı bir IF node'a taşımak yerine, küçük dönüşümleri expression içinde yapmak workflow'u sade tutar.

Bu bölümün workflow'u (n8n editör görünümü)

Webhook
Edit Fields (expression)
Set
WhatsApp'tan Danış