Formüller
Formül, bir değeri komut çalıştığında hesaplar; tıpkı Excel'de bir hücredeki formül gibi. = ile başlayan her değer bir formüldür. Böylece küçük bir hesap, ona ihtiyaç duyan komutun içine yazılır ve bunun için ayrı bir blok gerekmez:
set --name:gross --type:number --value:=$net$ * 1.2
log --message:="Order " & $orderId$ & " is ready"
set --name:vat --type:number --value:=round($total$ * 0.18, 2)
excel --action:writecell --session:Book --col:B --row:2 --value:=format(adddays(today(), -1), "dd.MM.yyyy")
if --type:string --left:=upper(trim($status$)) --operator:equals --right:APPROVED
endif
Düzenleyicide
Formül alabilen alanların adının yanında küçük bir fx düğmesi bulunur. Bu düğme formül oluşturucuyu açar:
- fonksiyonları, metinleri, sayıları ve değişkenleri renklendiren bir giriş alanı; hatalar altı çizili gösterilir, nedeni hemen altında yazar;
- gruplara ayrılmış, aranabilir fonksiyonlar; her birinin tek satırlık açıklaması ve bir örneği vardır. Eklemek için birine tıklayın;
- işleç düğmeleri ve Değişken ekle (ya da bir değişken seçmek için
$yazın); - sonuç önizlemesi. Sonuç tarayıcıda örnek değerlerle hesaplanır: düzenleyici biliyorsa değişkenin başlangıç değeri (
set --value,input --default), bilmiyorsa sizin yazdığınız bir değer. Örnek değerler yalnızca önizleme içindir; görev gerçek değerleri kullanır.
Bir metin alanının başına = da yazabilirsiniz: alan bir formül alanına dönüşür (fx ile işaretlenir), altında bir ipucu ve değişkenlerin başlangıç değerleriyle hesaplanan sonuç görünür. Sayı ve doğru/yanlış alanlarına formül fx düğmesiyle girilir. Düz bir değere dönmek için alandaki × ile formülü kaldırın.
Kod düzenleyicide de formüller renklendirilir ve siz yazarken denetlenir: bir sözdizimi hatası, bilinmeyen bir fonksiyon veya yanlış sayıda değer hatadır; görevde olmayan bir değişken ise uyarıdır.
Formül yazma
| Parça | Yazılışı | Örnek |
|---|---|---|
| Sayılar | Noktayla, binlik ayırıcı olmadan | 1.5, 1000 |
| Metin | Çift tırnak içinde; içindeki tırnak "" olarak yazılır |
"Order ", "say ""hi""" |
| Değişkenler | Dolar işaretleri arasında, alanlar ve öğelerle | $total$, $order.Total$, $items[0]$, $list.Count$ |
| Doğru/yanlış, boş | true, false, null |
|
| Aritmetik | + - * /, % (kalan), parantezler |
=($a$ + $b$) * 2 |
| Metin birleştirme | & |
=$first$ & " " & $last$ |
| Karşılaştırma | = (veya ==), != (veya <>), <, >, <=, >= |
=$amount$ > 1000 |
| Mantık | and, or, not |
=$a$ > 0 and not $done$ |
| Fonksiyonlar | ad(değer, değer, …); değerler ; ile de ayrılabilir |
=round($x$, 2), =round($x$; 2) |
- Fonksiyon adları ile
and/or/notbüyük/küçük harfe duyarlı değildir (ROUND,Roundveroundaynıdır). - Metnin içindeki
$başvurular$da doldurulur:="Dear $name$,". - Sonuçlar türünü korur: sayı, metin, doğru/yanlış, tarih veya boş.
set --type:number --value:=$a$ + 1bir sayı saklar. Metin alanındaki bir formül metin verir (120gibi bir sayı,2026-03-05 14:30:00gibi bir tarih); sayı alanı ise sayıyı alır. - Boş bir değer hesapta 0 sayılır. Sayı olmayan bir metin toplanamaz (
"abc" + 1hata verir: metinleri&ile birleştirin). - Karşılaştırmalar sayıları sayı olarak (
"10" > "9"doğrudur), tarihleri zamana göre, geri kalan her şeyi metin olarak (büyük/küçük harfe duyarlı) karşılaştırır. - Formüllerin tamamı boşluk içerse de tırnak içine alınması gerekmez.
datatable --action:addcolumn --valueiçinde formül her satır için bir kez hesaplanır ve$row.Sütun$o satırın değeridir:--value:=$row.Price$ * $row.Qty$(bkz. veri tablosu işlemleri).
= ile başlayan metin
= ile başlaması gereken bir metnin başına, Excel'deki gibi bir kesme işareti konur: log --message:'=== done === komutu === done === yazar. Kesme işareti görev çalışırken kaldırılır. Formüllerden önce kaydedilmiş görevler otomatik olarak bu şekilde dönüştürülür; böylece değerleri aynı anlamı korur.
Bazı değerler hiçbir zaman formül değildir: koşullar (--condition; kendi sözdizimi vardır), değişken adları, listeden seçilen değerler, JavaScript kodu, yorumlar, adım açıklamaları ve excel --action:writeformula komutunun Excel formülü (hücreye yazıldığı gibi gider: --formula:=SUM(C2:C10)).
Sayılar, tarihler ve kültürler
Formüllerdeki sayılar, bilgisayarın dili ne olursa olsun noktayla yazılır ve okunur. Bir sayı metne noktayla ve sondaki sıfırlar olmadan dönüşür (1.50, 1.5 olur). Başka bir biçim için format kullanın. format ve value isteğe bağlı bir kültür alır: format($total$, "#,##0.00", "tr-TR") sonucu 1.234,50, value("1.234,56", "tr-TR") sonucu 1234.56'dır.
Biçimler .NET biçim dizeleridir. Sayılar için: 0 (bir basamak), # (varsa bir basamak), . (ondalık nokta), , (binlik), % (yüzde) ya da N2 / F2. Tarihler için: dd, MM, yyyy, HH (0-23), hh, mm, ss, MMM/MMMM (ay adı), ddd/dddd (gün adı) ve tek tırnak içinde metin.
Fonksiyonlar
Metin
| Fonksiyon | Verdiği | Örnek |
|---|---|---|
upper(text) |
Metnin büyük harflerle yazılışı | =upper($name$) |
lower(text) |
Metnin küçük harflerle yazılışı | =lower($email$) |
proper(text) |
Her kelimesi büyük harfle başlayan metin | =proper("ali veli") → Ali Veli |
trim(text) |
Metnin başındaki ve sonundaki boşluklar olmadan hali | =trim($name$) |
len(text) |
Metindeki karakter sayısı (listede öğe sayısı) | =len($code$) |
left(text, count?) |
İlk karakterler (sayı verilmezse 1) | =left($code$, 3) |
right(text, count?) |
Son karakterler (sayı verilmezse 1) | =right($iban$, 4) |
mid(text, start, count) |
Ortadan karakterler; ilk karakter 1'dir | =mid($code$, 4, 2) |
replace(text, find, with) |
Aranan her parçanın yerine yenisi (büyük/küçük harfe duyarlı) | =replace($amount$, ",", ".") |
substitute(text, find, with) |
replace ile aynı (Excel'deki adı) | =substitute($phone$, " ", "") |
contains(text, part) |
Metin parçayı içeriyorsa true (büyük/küçük harfe duyarlı) | =contains($subject$, "Invoice") |
startswith(text, part) |
Metin parçayla başlıyorsa true | =startswith($code$, "TR") |
endswith(text, part) |
Metin parçayla bitiyorsa true | =endswith($file$, ".pdf") |
concat(value, …) |
Değerlerin tek bir metinde birleşimi (& gibi) |
=concat($first$, " ", $last$) |
format(value, format, culture?) |
Sayı veya tarihin verilen biçimdeki metni | =format($date$, "dd.MM.yyyy") |
text(value, format, culture?) |
format ile aynı (Excel'deki adı) | =text($total$, "#,##0.00") |
Sayılar
| Fonksiyon | Verdiği | Örnek |
|---|---|---|
round(number, digits?) |
Noktadan sonraki basamak sayısına yuvarlanmış hali (verilmezse 0); 0.5 sıfırdan uzağa yuvarlanır; negatif basamak onlara, yüzlere… yuvarlar | =round($total$ * 0.18, 2) |
roundup(number, digits?) |
Sıfırdan uzağa yuvarlanmış hali | =roundup($hours$, 0) |
rounddown(number, digits?) |
Sıfıra doğru yuvarlanmış hali (fazla basamaklar atılır) | =rounddown($price$, 1) |
abs(number) |
Sayının işaretsiz hali | =abs($difference$) |
min(number, …) |
Sayıların en küçüğü (listeler dahil) | =min($a$, $b$) |
max(number, …) |
Sayıların en büyüğü (listeler dahil) | =max($a$, 0) |
int(number) |
Sayının aşağı yuvarlanmış tam sayı hali | =int($amount$) |
mod(number, divisor) |
Bölmeden kalan (bölenin işaretiyle) | =mod($row$, 2) |
power(number, power) |
Sayının kuvveti | =power(1.1, 3) |
sqrt(number) |
Karekök | =sqrt($area$) |
value(text, culture?) |
Metnin sayı hali | =value("1.234,56", "tr-TR") |
Tarihler
| Fonksiyon | Verdiği | Örnek |
|---|---|---|
today() |
Bugün, saat 00:00 | =today() |
now() |
Şu anki tarih ve saat | =now() |
date(year, month, day, hour?, minute?, second?) |
Parçalarından bir tarih | =date(2026, 12, 31) |
adddays(date, days) |
Tarihe gün eklenmiş (veya çıkarılmış) hali | =adddays(today(), -1) |
addmonths(date, months) |
Tarihe ay eklenmiş hali (gün korunur ya da ayın son günü olur) | =addmonths($start$, 1) |
addyears(date, years) |
Tarihe yıl eklenmiş hali | =addyears(today(), 1) |
addhours(date, hours) |
Tarihe saat eklenmiş hali | =addhours(now(), 2) |
addminutes(date, minutes) |
Tarihe dakika eklenmiş hali | =addminutes(now(), 30) |
year(date), month(date), day(date) |
Yıl; ay, 1-12; gün, 1-31 | =year($date$) |
hour(date), minute(date) |
Saat, 0-23; dakika, 0-59 | =hour(now()) |
weekday(date) |
Haftanın günü: 1 Pazartesi … 7 Pazar | =weekday(today()) |
datediff(start, end, unit?) |
Başlangıçtan bitişe tam gün sayısı; birim "hours", "minutes", "seconds", "months" veya "years" olabilir |
=datediff($invoiceDate$, today()) |
Bir tarih metin olarak da yazılabilir: adddays("2026-01-31", 1).
Mantık
| Fonksiyon | Verdiği | Örnek |
|---|---|---|
if(condition, then, else?) |
Koşul doğruysa bir değer, değilse başka bir değer (else yoksa boş) | =if($amount$ > 1000, "Large", "Small") |
and(condition, …) |
Tüm koşullar doğruysa true | =and($a$ > 0, $b$ > 0) |
or(condition, …) |
Koşullardan biri doğruysa true | =or($status$ = "New", $status$ = "Open") |
not(condition) |
Koşul yanlışsa true | =not(isempty($email$)) |
isempty(value) |
Boş metin (yalnızca boşluk olan dahil), boş liste veya değer yoksa true | =isempty($note$) |
iferror(value, fallback) |
Değerin kendisi; hesaplanamazsa yedek değer | =iferror(value($text$), 0) |
if ve iferror yalnızca kullandıkları kısmı hesaplar; bu nedenle =if($count$ > 0, $total$ / $count$, 0) hiçbir zaman sıfıra bölmez.
Dönüştürme
| Fonksiyon | Verdiği | Örnek |
|---|---|---|
tonumber(value) |
Değerin sayı hali | =tonumber($quantity$) + 1 |
totext(value) |
Değerin metin hali | =totext($count$) |
Bir formül hata verdiğinde
Hesaplanamayan bir formül, komutu formülü ve sorunun yerini gösteren bir hatayla durdurur; örneğin =$a$ / 0: division by zero (position 6). Her hatada olduğu gibi bir try bloğu veya --onerror bu hatayı ele alabilir. Bunun yerine bir değer vermek için iferror kullanın.
Ajanlar
Formülleri ajan hesaplar. Formüllerden önceki bir ajan, formül kullanan bir görevi çalıştıramaz: sunucu görevi bu ajana göndermez ve hangi formülün daha yeni bir ajan gerektirdiğini söyler. Ajanı güncel sürüme güncelleyin.