Değişkenler ve veri tipleri
Değişkenler, bir görevin üzerinde çalıştığı verileri tutar: bir sayfadan okunan metin, toplanacak bir sayı, bir dosya listesi, bir veritabanından gelen tablo, üzerinde işlem yapılacak bir pencere veya tarayıcı sayfası. Bu sayfa veri tiplerini, değişkenlerin nasıl tanımlanıp doldurulacağını ve görevlerin birbirine nasıl değer aktardığını listeler.
Değişken tanımlama
Bir değişkeni set ile, --type değerini ve isterseniz bir başlangıç değeri vererek tanımlayın:
set --name:customer --type:string --value:"ACME Ltd"
set --name:total --type:number --value:0
set --name:today --type:datetime --value:now
Düzenleyicide VARIABLES sekmesindeki Add variable seçeneğini veya Insert variable penceresindeki (F2) New variable seçeneğini kullanın: Botream set komutunu sizin için görevin en üstüne ekler.
- Adlar bir harf veya
_ile başlar ve yalnızca harf, rakam ve_içerir (orderId,_temp2). Görev çalışırken adlar büyük/küçük harfe duyarlı değildir. --typeolmadanset, zaten var olan bir değişkeni değiştirir ve türünü korur:set --name:total --value:42.- Birçok komut
--outputile, döngüler ise--variableile değişkenleri kendileri oluşturur. Bunları önceden tanımlamanız gerekmez.
Bir değişkeni adını dolar işaretleri arasına yazarak okuyun: $customer$. Alanlar ($order.Total$), öğeler ($items[0]$), .Count ve .Length için Değerlerde değişkenler bölümüne bakın.
Veri tipleri
| Tip | Tuttuğu | Başlangıç değeri (--value) |
|---|---|---|
string |
Metin | Herhangi bir metin; $variables$ içerebilir. Verilmezse boş |
number |
Tam veya ondalıklı sayı | 42, -3.14. Verilmezse 0 |
boolean |
true veya false | true veya false. Verilmezse false |
datetime |
Tarih ve saat | now, 2026-09-30, 2026-09-30 14:30 veya 2026-09-30 14:30:00. Verilmezse komutun çalıştığı an |
list |
Sıralı öğeler | Bir JSON dizisi: ["a", "b", 3]. Verilmezse boş |
dictionary |
Anahtar → değer çiftleri | Bir JSON nesnesi: {"env": "prod", "retries": 3}. Verilmezse boş |
record |
Adlandırılmış alanlardan oluşan tek bir satır | Bir JSON nesnesi: {"Name": "Ali", "Age": 30}. Verilmezse boş |
datatable |
Satırlar ve sütunlar | {"columns": ["Name", "Age"], "rows": [["Ali", 30]]}. Verilmezse boş |
file |
Bir dosya yolu | C:\In\orders.xlsx gibi bir yol |
window |
Bir masaüstü penceresi | --value yerine --title ve/veya --path |
browser |
Bir tarayıcı sayfası | browser --action:open --output ile doldurulur |
credential |
Bir kasadan alınan kullanıcı adı ve parola | --value yerine --vault ve --credential |
Sabit bir değer yerine, herhangi bir başlangıç değeri başka bir değişkene yapılan tek bir başvuru olabilir (--value:$other$); görev çalışırken tanımlanan tipe dönüştürülür. Düzenleyici sabit değerleri siz yazarken denetler: set --type:number --value:abc bir hatadır.
Metin, sayılar, mantıksal değerler ve tarihler
set --name:greeting --type:string --value:"Hello $customer$"
set --name:rate --type:number --value:0.18
set --name:isTest --type:boolean --value:true
set --name:deadline --type:datetime --value:"2026-12-31 17:00"
Sayılarda ondalık ayırıcı olarak nokta kullanılır. Metni dönüştürmek için string komutunu kullanın: --action:tonumber, --action:todatetime --format:dd.MM.yyyy, --action:toboolean; number --action:tostring ve datetime --action:format değerleri yeniden metne çevirir.
Listeler
set --name:countries --type:list --value:["DE", "AT", "CH"]
list --action:add --name:countries --value:FR
log --message:"First: $countries[0]$, total: $countries.Count$"
loop --type:list --list:$countries$ --variable:country
log --message:$country$
endloop
JSON sabit değerleri, içlerinde boşluk olsa bile değerin tamamı tırnak içine alınmadan yazılır. İçlerinde başvurular yer alabilir: ["$first$", "b"].
Sözlükler ve kayıtlar
Her ikisi de bir JSON nesnesi olarak yazılır ve nokta ile okunur: $config.env$, $person.Name$. Bir sözlük serbest bir anahtar kümesidir; bir kayıt ise Excel satırları, veri tabloları, dosyalar ve kuyruk öğeleri üzerindeki döngülerin size verdiği gibi adlandırılmış alanlardan oluşan tek bir satırdır. Alan adları büyük/küçük harf gözetilmeden eşleştirilir.
set --name:config --type:dictionary --value:{"env": "prod", "retries": 3}
set --name:person --type:record --value:{"Name": "Ali", "Age": 30}
dictionary --action:addkey --name:config --key:region --value:eu-west
log --message:"$person.Name$ ($person.Age$) on $config.env$"
Boşluk veya başka karakterler içeren bir anahtar noktadan sonra yazılamaz; onu getvalue ile okuyun:
dictionary --action:getvalue --name:config --key:"Order No" --output:orderNo
Veri tabloları
Bir veri tablosunun adlandırılmış sütunları ve satırları vardır. Onu sütunlar ve satırlar olarak ya da aynı anahtarlara sahip nesnelerden oluşan bir liste olarak yazın:
set --name:people --type:datatable --value:{"columns": ["Name", "Age"], "rows": [["Ali", 30], ["Veli", 25]]}
set --name:prices --type:datatable --value:[{"Item": "Pen", "Price": 1.5}, {"Item": "Pad", "Price": 3}]
Sütun adları benzersiz olmalıdır. Düzenleyicide Create table, tipli sütunlar ve Paste from Excel seçeneği içeren bir tablo açar.
$people[0].Name$bir hücreyi,$people[1]$bir satırı (bir kayıt),$people.Count$satır sayısını okur.loop --type:datatable --table:$people$ --variable:rowher satır için bir kez çalışır; hücreleri$row.Name$olarak okuyun.capture --action:gettable,database --action:query,csv --action:read,excel --action:readrangevejson --action:todatatableveri tablosu döndürür.- Bunları
datatableeylemleriyle birleştirin, gruplayın, arayın ve toplayın; bkz. Veri tablolarını birleştirme, gruplama ve arama.
Dosyalar
Bir file değişkeni bir yol tutar. loop --type:eachfile her dosyayı Name, NameWithoutExtension, Extension, Path, Directory, Size, CreatedDate ve ModifiedDate alanlarına sahip bir kayıt olarak verir; loop --type:eachfolder ise Name, Path, Parent, FileCount ve CreatedDate verir.
set --name:report --type:file --value:C:\Reports\daily.xlsx
loop --type:eachfile --folder:C:\In --filter:*.pdf --variable:pdf
log --message:"$pdf.Name$ is $pdf.Size$ bytes"
endloop
Pencereler
Bir pencere değişkeni, komutların hangi masaüstü penceresi üzerinde işlem yapacağını tanımlar. Onu bir başlık ve/veya program yolu ile tanımlayın; her ikisinde de * bir joker karakterdir:
set --name:notepad --type:window --path:"C:\Windows\notepad.exe" --title:"*Notepad*"
sendkeys --window:$notepad$ --keys:"Hello[ENTER]"
Ya da bir programı başlatın veya ona bağlanın ve pencereyi alın:
window --action:open --path:C:\Apps\erp.exe --output:erp
window --action:attach --title:"*Invoice*" --output:invoiceWindow
window --action:getproperty --window:$erp$ --property:Title --output:erpTitle
window --action:getproperty; Title, Path, ProcessId, X, Y, Width, Height, IsMinimized, IsMaximized ve Handle değerlerini okur. Düzenleyicide bir pencere alanının yanındaki New, ajan makinesinde açık olan pencerelerden birinden bir pencere değişkeni oluşturur. Bkz. Masaüstü otomasyonu.
Tarayıcı sayfaları
browser --action:open --output:shop bir tarayıcı açar ve sayfasını $shop$ içine koyar; ardından her web komutu --browser:$shop$ ile onu hedefler. --browser olmadan bir web komutu en son kullanılan sayfayı kullanır.
browser --action:open --url:"https://shop.example.com" --output:shop
capture --browser:$shop$ --action:click --dompath:"#login"
Uyarı: Tek başına
set --type:browserhiçbir sayfa tutmaz. Bir--browser:$page$değişkeni hiçbir zamanbrowser --action:open --outputile doldurulmadığında düzenleyici uyarır. Bkz. Web otomasyonu.
Kimlik bilgileri
Bir kimlik bilgisi değişkeni, set komutu çalıştığında bir kasadan kullanıcı adı ve parola okur:
set --name:login --type:credential --vault:Production --credential:PortalUser
capture --browser:$portal$ --action:settext --dompath:"#user" --value:$login.Username$
capture --browser:$portal$ --action:settext --dompath:"#password" --value:$login.Password$
Parola asla günlüklere yazılmaz: görüneceği her yerde (günlük satırları, hata mesajları, bir catch'in hata değişkeni, görev çıktıları) *** ile değiştirilir. --credential parametresi olan komutlar (örneğin mail ve restapi) değişkenin tamamını alır: --credential:$login$; mail ayrıca kasayı ve kimlik bilgisinin adını doğrudan alır (--vault:"Mail" --credential:"Robot mailbox"). Bir çalıştırmanın bir kasayı okuyup okuyamayacağı, onu başlatan kullanıcıya bağlıdır; bkz. Kasalar.
Komut çıktıları
Bir değer üreten komutlar onu --output ile adlandırılan değişkene yazar. Tip, komuta bağlıdır:
| Komut | Çıktı |
|---|---|
restapi |
Bir kayıt: StatusCode, IsSuccess, Body, Json, Headers, ContentType, ElapsedMs, File |
capture --action:gettable, database --action:query, csv --action:read, excel --action:readrange, json --action:todatatable, datatable --action:join/groupby/distinct |
Bir veri tablosu |
capture --action:gettext, getproperty, ocr --action:read, clipboard --action:gettext, ai --action:ask |
Metin |
browser --action:open / window --action:open, attach |
Bir tarayıcı sayfası / bir pencere |
mail --action:read (her öğe, loop --type:mail döngüsünün verdiği kayıttır) |
Kayıtlardan oluşan bir liste: Id, From, FromName, To, Cc, Subject, Date, Body, HtmlBody, IsRead, Attachments |
queue --action:next (ve loop --type:queue) |
Bir kayıt: Found, Id, Reference, Data, Attempt, Priority, Status |
pdf --action:getinfo |
Bir kayıt: PageCount, Title, Author, … |
ocr --action:find |
Bir kayıt: Found, Text, X, Y, Width, Height, CenterX, CenterY |
mouse --action:getposition |
Bir kayıt: X, Y |
ai --action:extract / classify |
İstenen alanlardan oluşan bir kayıt / Label, Confidence, Reason |
messagebox |
Seçilen düğme: yes, no, ok, cancel veya timeout |
restapi --action:get --url:"https://api.example.com/orders/$id$" --output:response
if --condition:$response.IsSuccess$
log --message:"Status $response.StatusCode$ in $response.ElapsedMs$ ms"
endif
Her komutun çıktısı için komut başvurusuna bakın.
Değişkenlerle çalışma: string, number, list…
Her değişken tipinin yalnızca ona uyan eylemleri içeren kendi komutu vardır: string, number, boolean, list, dictionary (kayıtlar için de), datetime ve datatable. --name üzerinde çalışılan değişkendir; düzenleyicide listesi yalnızca o tipteki değişkenleri gösterir. --output ile sonuç başka bir değişkene gider; olmadan değişken yerinde güncellenir. Başka bir şey döndüren eylemler (bir uzunluk, doğru/yanlış, bir öğe) --output ister.
number --action:increment --name:count
number --action:increment --name:count --by:5
string --action:uppercase --name:code
string --action:replace --name:text --old:";" --new:"," --output:cleaned
string --action:split --name:line --separator:";" --output:parts
datetime --action:adddays --name:today --value:-1 --output:yesterday
datatable --action:filter --name:orders --column:Total --operator:">" --value:1000 --output:bigOrders
| Komut | Eylemler |
|---|---|
| string | trim, trimleft, trimright, uppercase, lowercase, titlecase, replace, substring, between, concat, insert, remove, padleft, padright, repeat, reverse, split, length, isempty, isnumber, contains, startswith, endswith, indexof, lastindexof, regex, regexmatch, regexreplace, format, base64encode, base64decode, urlencode, urldecode, hash, tonumber, toboolean, todatetime |
| number | increment, decrement, add, subtract, multiply, divide, modulo, power, min, max, round, floor, ceiling, truncate, abs, sqrt, random, format (ör. {0:N2}), tostring |
| boolean | toggle, not, and, or, tostring |
| list | add, insert, setat, remove, removeat, clear, getat, count, isempty, contains, indexof, sort, reverse, join |
| dictionary | addkey, removekey, getvalue, containskey, keys, values, count, isempty, clear |
| datetime | now, parse, adddays, addhours, addminutes, addseconds, addmonths, addyears, datediff, getpart, format |
| datatable | addrow, removerow, getrow, getcell, setcell, rowcount, columncount, columns, addcolumn, removecolumn, getcolumn, filter, sort, reverse, isempty, clear, join, distinct, groupby, lookup, aggregate |
Komut başvurusu her eylemin parametrelerini listeler. Eski, her tipi tek komutta toplayan variable komutuyla (variable --action:uppercase …) yazılmış görevler değişmeden çalışmaya devam eder; yeni bloklar yukarıdaki komutları kullanır.
Veri tablolarını birleştirme, gruplama ve arama
Raporlar ve mutabakatlar — bölge bazında satışlar, ödemelerle eşleştirilen faturalar, yöneticisi olmayan çalışanlar — birkaç datatable bloğundan ibarettir. Her biri yeni bir veri tablosu (ya da bir değer) verir; --output olmadan tablonun yerini alır.
datatable --action:join --name:orders --with:$customers$ --on:"CustomerId=Id" --type:left --output:ordersWithCustomers
datatable --action:distinct --name:applicants --columns:"Email" --output:uniqueApplicants
datatable --action:groupby --name:sales --columns:"Region" --aggregates:"Total=sum(Amount), Orders=count(), Average=avg(Amount)" --output:summary
datatable --action:addcolumn --name:lines --column:Total --value:=$row.Price$ * $row.Qty$
datatable --action:lookup --name:rates --column:Currency --value:$invoice.Currency$ --return:Rate --default:1 --output:rate
datatable --action:aggregate --name:sales --function:sum --column:Amount --output:totalSales
| Eylem | Ne verir |
|---|---|
join |
Tablonun her satırını --with tablosunun eşleşen satırlarıyla birlikte. --on iki tablonun ortak sütununu (CustomerId) ya da adlar farklıysa Sol=Sağ biçimini (Id=CustomerId) belirtir; birden çok çift virgülle ayrılır. --type:inner (varsayılan) yalnızca eşleşen satırları, left tablonun her satırını (eşleşme yoksa değerler boş kalır), full ayrıca --with tablosunun hiçbir şeyle eşleşmeyen satırlarını da tutar. --with tablosunun sütunları eklenir; zaten kullanılan bir ad sonek alır, ör. Name_2. |
distinct |
Tekrarlanan satırları olmayan tablo; --columns ile yalnızca bu sütunlar karşılaştırılır (ör. e-posta adresi). Her birinin ilk satırı tutulur. |
groupby |
--columns değerleri aynı olan her grup için bir satır, --aggregates hesaplamalarıyla birlikte: Ad=fonksiyon(Sütun), virgülle ayrılmış. Fonksiyonlar: sum, count, avg, min, max, first, last; count() grubun satırlarını sayar. Düzenleyicide Calculations per group bir listedir: hesaplamayı ve sütunu, ardından sonuç sütununun adını seçin. |
addcolumn |
Yeni bir sütun; --value ile her satır bir değer alır. Formül her satır için ayrı hesaplanır ve $row.Sütun$ o satırın değeridir: --value:=$row.Price$ * $row.Qty$, --value:=if($row.Days$ > 30, "Late", "On time"). = ile başlamayan bir değer her satırda aynıdır (yine de $row.Sütun$ kullanabilir). |
lookup |
--column değeri --value olan ilk satırın --return değeri (Excel'deki DÜŞEYARA gibi); --return boşsa satırın tamamı bir kayıt olarak. Hiçbir satır eşleşmezse sonuç --default olur. |
aggregate |
Bir sütundan tek bir sayı: --function:sum, count, avg, min veya max. --column olmadan count satırları sayar. |
Değerler nasıl karşılaştırılır: sütun adlarında büyük/küçük harf fark etmez; sayılar, biri metin olarak yazılmış olsa da sayılarla eşleşir (1 ve "1.0"), ancak 007 gibi başında sıfır olan kodlar metin olarak kalır; metinlerde büyük/küçük harf ve baştaki/sondaki boşluklar dikkate alınmaz; birleştirmede boş değerler hiçbir zaman eşleşmez. Hesaplamalar boş hücreleri atlar; hiç değer yoksa sum ve count 0, avg, min ve max boş olur.
İpucu:
addcolumn --valueiçindeki$row$, hesaplanmakta olan satırdır ve tablonun sütunları alanlarıdır (formül oluşturucu bunları listeler). Görevinrowadlı kendi değişkeni varsa değerini korur.
Düzenleyicide sütun alanları, tablonun bilinen sütunlarını listeler — Create table, Veri çıkarma sihirbazı ya da daha önceki bir join veya group by'dan — ve başka bir ad da yazılabilir. Bu eylemler bu sürümden bir agent gerektirir; eski bir agent'a görev, onu güncellemenizi isteyen bir mesajla reddedilir.
Excel çalışma kitapları
excel komutu bir çalışma kitabını bir oturum adıyla açar; sonraki her excel bloğu (ve loop --type:excelrows) bu adı kullanır:
excel --action:open --file:"C:\Reports\Sales.xlsx" --session:Sales
excel --action:readrange --session:Sales --output:sales
excel --action:writerange --session:Sales --range:"H1" --data:$summary$
excel --action:close --session:Sales --save:true
readrange, sütunları ilk satır olan bir veri tablosu verir (--header:false ile satırlardan oluşan bir liste). writerange bir veri tablosunu sütun adları ve satırlarıyla yazar; böylece readrange → datatable blokları → writerange bir sayfayı baştan sona işler.
Bir çalışma kitabını açmanın iki yolu vardır (open üzerinde --engine):
| Motor | Ne yapar |
|---|---|
file (varsayılan) |
.xlsx dosyasını doğrudan okur ve yazar. Excel'in kurulu olması gerekmez, hiçbir şey gösterilmez ve en hızlısıdır. |
excel |
Agent makinesindeki Microsoft Excel üzerinden çalışır: Excel'in açtığı her dosya (.xlsx, .xlsm, .xls, .xlsb, .csv), Excel'in hesapladığı formüller ve dört ek eylem: runmacro, refreshall, exportpdf ve autofit. --visible:false Excel penceresini göstermeden çalışır. |
excel --action:open --file:"C:\Reports\Sales.xlsm" --session:Sales --engine:excel --visible:false
excel --action:refreshall --session:Sales
excel --action:runmacro --session:Sales --macro:"Module1.FormatReport" --args:"2026, 10"
excel --action:autofit --session:Sales --range:"A:F"
excel --action:exportpdf --session:Sales --file:"C:\Reports\Sales.pdf" --scope:workbook
excel --action:close --session:Sales --save:true
runmacroçalışma kitabının bir VBA makrosunu çalıştırır (Module1.FormatReportya da yalnızcaFormatReport);--argsona değer geçirir (bir liste değişkeni ya da virgülle ayrılmış değerler) ve--outputbirFunction'ın döndürdüğünü alır.refreshallher veri bağlantısını, sorguyu ve pivot tabloyu yeniler ve Excel bitirene kadar bekler.exportpdfetkin sayfayı (--scope:sheet, varsayılan) ya da tüm sayfaları (--scope:workbook) PDF olarak kaydeder.autofitsütunları içerikleri kadar genişletir.
Botream her oturum için kendi Excel'ini başlatır, Excel'in sorularını ("Bağlantılar güncellensin mi?" gibi) kapatır ve onu her zaman yeniden kapatır — close sonrasında, görev bittiğinde ve başarısız olduğunda — böylece arka planda çalışan bir Excel kalmaz. Değişiklikler yalnızca save, saveas ya da close --save:true ile kaydedilir.
Not:
excelmotoru, agent makinesinde Microsoft Excel'in kurulu olmasını ve agent'ın oturum açılmış bir Windows oturumunda çalışmasını gerektirir.--engine:exceliçeren bir görev bu sürümden bir agent gerektirir. Makrolar yalnızca Excel dosya için onlara izin verdiğinde çalışır (Güven Merkezi).
Görev girdileri ve çıktıları
Bir görev, kendisini çağırandan değer alabilir ve ona değer geri verebilir. Bunları görevin en üstünde input ve output ile tanımlayın:
input --name:invoiceNo --type:string
input --name:maxRetries --type:number --default:3 --required:false
output --name:bookingNo --type:string
--required(varsayılantrue): çağıran bir değer vermediğinde ve--defaultyoksa çalıştırma "Required input … was not provided" hatasıyla başarısız olur.--default,set --valuegibi yazılır.- Bir çıktıya diğer değişkenler gibi değer verin; örneğin
set --name:bookingNo --value:$result.Number$.
Görevi düzenleyiciden başlattığınızda, çalıştırma penceresi girdileri INPUTS altında varsayılan değerleriyle doldurulmuş olarak ister.
Başka bir görevi çağırma
runtask bir görevi adıyla (veya birden fazla klasörde bu adda görev olduğunda Finance/Invoices/Import gibi klasör yoluyla) çağırır. Girdileri --<input>:value olarak aktarın, çıktıları --<output>To:variable olarak alın:
runtask --name:BookInvoice --invoiceNo:$row.InvoiceNo$ --maxRetries:5 --bookingNoTo:booking
log --message:"Booked as $booking$"
Çağrılan görev kendi değişkenleriyle çalışır; yalnızca eşlenen çıktılar geri gelir. Özellikler panelinde Choose task görevi seçer, Mappings ise girdilerini ve çıktılarını listeler; Auto map boş eşlemeleri aynı adlı değişkenlerden doldurur. Çağrılan görevdeki bir hata, türü korunarak runtask komutunu başarısız kılar (bkz. Hata yönetimi).
Sistem değişkenleri
Her görevde, tanımlamaya gerek kalmadan yerleşik $System$ bulunur; diğer RPA araçlarındaki sistem değişkenleri gibi. Alanları kullanıldıkları anda okunur, bu yüzden $System.Date$ her zaman o anki zamandır.
log --message:"Started on $System.Machine$ as $System.UserName$ at $System.Hour$:$System.Minute$"
file --action:copy --source:C:\In\report.xlsx --destination:"$System.DesktopFolder$\report-$System.Year$-$System.Month$.xlsx"
| Alan | Tür | Değer |
|---|---|---|
$System.Date$ |
datetime | Şu an: geçerli tarih ve saat |
$System.Year$, Month, Day |
number | Geçerli tarih (ay 1-12) |
$System.Hour$, Minute, Second, Millisecond |
number | Geçerli saat (saat 0-23) |
$System.DayOfWeek$ |
string | Haftanın günü (İngilizce), ör. Monday |
$System.Machine$ |
string | Görevin çalıştığı bilgisayarın adı |
$System.UserName$ |
string | Ajanın çalıştığı Windows kullanıcısı |
$System.Domain$ |
string | Windows etki alanı (yoksa bilgisayar adı) |
$System.OSName$ |
string | Windows sürümü, ör. Windows 11 Pro 24H2 |
$System.CPUUsage$ |
number | Tüm bilgisayarın işlemci kullanımı, yüzde olarak (çeyrek saniyede ölçülür) |
$System.RAMUsage$ |
number | Kullanılan bellek, yüzde olarak |
$System.TotalRAM$, AvailableRAM |
number | Bilgisayarın belleği ve boş bellek, MB olarak |
$System.Clipboard$ |
string | Panodaki metin |
$System.TempFolder$, DesktopFolder, DocumentsFolder, DownloadsFolder |
string | Ajan kullanıcısının klasörleri |
$System.TaskName$ |
string | Çalışan görevin adı (çağrılan bir görev kendi adını görür) |
$System.ExecutionId$ |
string | Çalıştırmanın kimliği (çalıştırma geçmişindeki gibi) |
$System.AgentName$ |
string | Görevi çalıştıran ajanın adı |
$System.NewLine$, Tab |
string | Satır sonu ve sekme karakteri |
$System$ salt okunurdur ve hiçbir değişkene System adı verilemez. Düzenleyici, $System. yazıldıktan sonra alanlarını önerir.
Global değerler
Birçok görevin paylaştığı değerler — bir klasör, bir web adresi, bir limit, bir alıcı listesi — Global values sayfasında (Manage global values yetkisi, varsayılan olarak Developer) bir kez tutulur ve herhangi bir görevde $Global.Ad$ olarak okunur:
loop --type:eachfile --folder:$Global.InvoiceFolder$ --filter:*.pdf --variable:file
if --condition:"$file.Size$ > $Global.MaxFileSize$"
mail --action:send --to:$Global.SupportMail$ --subject:"Invoice too large: $file.Name$"
endif
endloop
- Her değerin bir adı, bir türü (string, number, boolean, datetime, list, dictionary, record veya data table), değeri ve açıklaması vardır. Değer, bir değişkenin başlangıç değeriyle aynı düzenleyicilerle girilir.
- Bir çalıştırma, başladığı andaki değerleri alır; bir değişiklik, hiçbir görevi düzenlemeden veya yayınlamadan sonraki çalıştırmalarda geçerli olur.
$Global$görev içinde salt okunurdur (set --name:Globalreddedilir) ve hiçbir değişkeneGlobaladı verilemez. Düzenleyici,$Global.yazıldıktan sonra adları önerir.- Global değerleri oluşturmak, değiştirmek ve silmek denetim kaydına yazılır.
Not: Global değerler gizli değildir: Manage global values yetkisine sahip herkes bunları görür ve günlüklerde görünebilirler. Parolaları ve anahtarları kasalarda tutun.
catch'in hatası
Yerleşik bir hata değişkeni yoktur: bir catch, hatayı alacak değişkene ad verir (ör. catch --error:err); ardından $err.Message$, $err.Type$, $err.CommandLine$, $err.CommandType$ ve $err.Timestamp$ hatayı tanımlar. Bkz. Hata yönetimi ve yeniden denemeler.
Değişkenleri inceleme
- Hata ayıklama sırasında, çalıştırma durduğunda VARIABLES bölmesi tüm değişkenleri gösterir.
- Bir çalıştırma başarısız olduğunda, çalıştırma sayfası hata anındaki değişkenleri gösterir. Her ikisinde de parolalar maskelenir ve uzun değerler kısaltılır.