BotreamDokümanlar Web sitesi English v0.1.1

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/not büyük/küçük harfe duyarlı değildir (ROUND, Round ve round aynı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$ + 1 bir sayı saklar. Metin alanındaki bir formül metin verir (120 gibi bir sayı, 2026-03-05 14:30:00 gibi bir tarih); sayı alanı ise sayıyı alır.
  • Boş bir değer hesapta 0 sayılır. Sayı olmayan bir metin toplanamaz ("abc" + 1 hata 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 --value iç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.

Botream 0.1.1 · Oluşturulma 2026-10-14