Bloga dön
Nasıl yapılır · · 10 dk okuma

Kaydın ötesi: betiklerde koşullu dallanma, döngüler ve değişkenler

İşlemleri kaydedip yeniden oynatan makrolar, tekrarlanan işleri otomatikleştirmenin en kolay yoludur. Ancak kaydedilmiş makroların temel bir özelliği vardır: “Her seferinde tamamen aynı şeyi yaparlar.” Gerçek iş süreçleri ise “stok sıfırsa sipariş ver” veya “toplam bütçeyi aşarsa uyarı göster” gibi, duruma göre davranışı değiştiren pek çok karar içerir. Yalnızca kayıt kullanarak bu “kararları” ele alamazsınız.

İşte bu noktada “betikler” devreye girer. Betikler sayesinde koşullu dallanma (“eğer… ise”), döngü (tekrar) ve değişken (değeri saklayan bir kutu) gibi temel programlama öğelerini otomasyonunuza ekleyebilirsiniz. “Programlama” sözcüğü gözünüzü korkutabilir, ancak bunlar günlük kararların doğrudan biçimlendirilmiş hâlidir ve mantıkları hiç de zor değildir. Bu makalede, kayıttan sonraki adım olarak betiklerin üç temel direği anlaşılır biçimde açıklanmaktadır.

Koşullu dallanma (IF/ELSE): karar vermesini sağlama

Koşullu dallanma, “yalnızca belirli bir koşul sağlandığında belirli bir işlemi gerçekleştiren” bir mekanizmadır. IF bloğu, içindeki işlemleri yalnızca koşul doğru olduğunda yürütür; ELSE ise diğer tüm durumları ele alır. Örneğin, “Ekranda ‘Hata’ sözcüğü varsa sorumlu kişiye bildir; yoksa doğrudan sonraki adıma geç” şeklindeki bir davranış böyle ifade edilebilir.

Koşul olarak ekranda görüntülenen bir değer, belirli bir pikselin rengi veya bir değişkende saklanan sayı kullanılabilir. İnsanlar “ekrana bakma, durumu değerlendirme ve sonraki eyleme karar verme” sürecini bilinçsizce gerçekleştirir. Koşullu dallanma, tam olarak bu karar verme sürecini otomasyona katmak içindir. Bir kez yazdıktan sonra bilgisayar her seferinde sizin yerinize doğru kararı verir.

Döngüler (LOOP): işlemleri tekrarlatma

Döngü, aynı işlemi birçok kez tekrarlayan bir mekanizmadır. Makronun “oynatma sayısını” belirtmeye benzer, ancak betiklerdeki döngüler çok daha esnektir. “10 kez tekrarla” gibi sabit bir sayı belirtmenin yanı sıra, “listede satır kalmayana kadar tekrarla” veya “belirli bir koşul karşılanana kadar tekrarla” gibi duruma bağlı tekrarlar da yapılabilir.

Döngülerin asıl değeri büyük miktarda veri işlenirken ortaya çıkar. “Bir veri kaydını işle” adımını bir döngünün içine almak, onu “listedeki tüm kayıtları işle” adımına dönüştürür. İster 100 ister 1.000 kayıt olsun, yalnızca tek bir kayıt için işlem yazarsınız; döngü geri kalanların tümünü otomatik olarak dolaşır. Elle yapıldığında saatler süren bir işlem, döngü sayesinde yalnızca bir kez yazılır ve sonrasında sadece tamamlanmasını beklersiniz. Otomasyonun “dakikalar” yerine “saatler” kazandırmaya başladığı ayrım noktası budur.

Değişkenler: değerleri saklama

Değişken, işlem sırasında bir değeri geçici olarak saklamak için kullanılan bir “kutu”dur. Sayaç (kaçıncı işlem olduğu), dosya adı, ekrandan okunan sayısal değer veya bir hesaplamanın ara sonucu gibi değerleri değişkenlere kaydederek sonraki adımlarda yeniden kullanabilirsiniz. Örneğin, “bir hücrenin değerini değişkene oku ve değer 10.000’i aşıyorsa başka bir sayfaya aktar” şeklindeki bir işlem, değişkenler ile koşullu dallanma birleştirilerek gerçekleştirilir.

Değişkenler, koşullu dallanma ve döngüler bir araya geldiğinde otomasyonun ifade gücü hızla artar. “Verileri oku (değişkenler), içeriğe göre işlemi değiştir (koşullu dallanma) ve tüm kayıtlara uygula (döngüler)” — yalnızca bu birleşimle bile gerçek işlerin oldukça büyük bir bölümü karşılanabilir. Basit kayıt ve oynatmayla ulaşılamayan “akıllı otomasyon”un giriş noktası işte burasıdır.

Hata işlemeyle “durmayan otomasyon” oluşturma

Koşullu dallanma, döngüler ve değişkenlere alıştıktan sonra öğrenmeniz gereken sıradaki konu “hata işleme”dir. Otomasyon uzun süre çalıştırıldığında beklenmedik durumlar mutlaka yaşanır. Ağ bağlantısı bir anlığına kesilebilir, açılması gereken dosya bulunamayabilir veya ekran her zamankinden farklı görünebilir. Böyle durumlarda hiçbir önlem içermeyen bir betik olduğu yerde tamamen durur. Gece gözetimsiz çalışıyorsa işler ertesi sabaha kadar durmuş halde kalabilir.

Bu noktada TRY/CATCH hata işleme mekanizması devreye girer. Bu mekanizmayla “TRY bloğunda bir hata oluşsa bile tüm işlemi durdurmak yerine CATCH bloğunda yazılan işlemlere geçme (hatayı kaydetme, bildirim gönderme, yalnızca o kaydı atlayıp sonrakine ilerleme vb.)” davranışı oluşturulabilir. Böylece bir kayıt başarısız olsa bile kalanların sonuna kadar işlendiği sağlam bir otomasyon elde edilir. Başka bir deyişle, insanların doğal olarak yaptığı “başarısız olsa da önce kaydet ve devam et” yaklaşımı betiğe öğretilir.

Sık kullanılan SCR komutlarını öğrenme

makuroku’nun SCR betiklerinde gerçek işlerde sık kullanılan komutlar bulunur. Hepsini bir kerede öğrenmeniz gerekmez; ancak neler yapılabileceğini bilmek, “bu da otomatikleştirilebilir” şeklinde yeni fikirler geliştirmenize yardımcı olur. Başlıca komutlardan bazılarına bakalım.

  • FIND_IMAGE / WAIT_IMAGE: Ekrandaki öğeleri görüntüyle bulma veya görünmelerini bekleme
  • IF / ELSE / LOOP: Koşullu dallanma ve yineleme
  • SET / ADD / SUB: Değişkenlere değer atama ve hesaplama
  • READ_FILE / WRITE_FILE: Dosya okuma ve yazma
  • HTTP_GET / POST: Harici hizmetlerle iletişim
  • NOTIFY / PROMPT: Bildirim gösterme ve kullanıcıdan giriş isteme

Bu işlevleri birleştirerek “bir dosyadan veri okuma, koşullara göre işlemi değiştirme, sonucu harici bir hizmete gönderme ve tamamlandığını bildirme” gibi basit bir kaydın çok ötesinde kalan gelişmiş otomasyonlar oluşturabilirsiniz. Üstelik her komutun görevi basittir, dolayısıyla öğrenmeleri zor değildir. İhtiyaç duyduğunuz komutlardan başlayarak araç repertuvarınızı yavaş yavaş genişletmeniz yeterlidir.

Komut dosyalarıyla gerçekleştirilebilecek otomasyon örnekleri

Koşullu dallanmaları, döngüleri, değişkenleri ve hata işlemeyi bir araya getirerek basit bir kaydın çok ötesinde otomasyonlar oluşturabilirsiniz. Birkaç somut örneğe bakalım. Örneğin “bir klasördeki tüm dosyaları tek tek açma, içeriklerini kontrol etme ve yalnızca koşulları karşılayanları başka bir klasöre taşıma” işi, bir döngüyle tüm dosyaları dolaşıp koşullu dallanmayla sınıflandırarak gerçekleştirilebilir. Elle yapıldığında bir saat süren bu ayırma işi, komut dosyası bir kez yazıldıktan sonra birkaç dakikada tamamlanır.

Başka bir örnek olarak, “bir web sitesinden düzenli aralıklarla veri alma, önceki değerle karşılaştırma ve değişiklik varsa bildirim gönderme” şeklindeki izleme işleri de komut dosyalarının güçlü olduğu alanlardandır. Veriler HTTP iletişimiyle alınır, bir değişkende saklanan önceki değerle karşılaştırılır ve koşullu dallanma aracılığıyla “değişiklik varsa bildir” işlemi gerçekleştirilir. Bunu zamanlanmış çalıştırmayla birleştirirseniz, siz hiçbir şey yapmadan değişiklikleri kaçırmayan bir izleme sistemi elde edersiniz.

Bu tür otomasyonlar ilk bakışta zor görünebilir ancak döngü, koşullu dallanma, değişken, iletişim ve bildirim gibi her bir öğe aslında basittir. Zor olan “her şeyi bir kerede anlamak”tır; “öğeleri tek tek birleştirmek” değil. Önce yalnızca koşullu dallanmayı, sonra yalnızca döngüleri öğrenmek gibi, ihtiyaç duyduğunuz öğelerden başlayarak kapsamınızı yavaş yavaş genişletirseniz bir süre sonra oldukça gelişmiş otomasyonları kendi başınıza oluşturabildiğinizi göreceksiniz.

Önemli olan, en başından kusursuz bir komut dosyası oluşturmaya çalışmamaktır. Önce çalışan en küçük sürümü hazırlayın, gerçekten çalıştırın ve düzgün işlemeyen yerleri azar azar düzeltin. makuroku, yürütülmekte olan satırı gerçek zamanlı olarak vurgulayan bir hata ayıklama özelliğine sahiptir. Böylece “şu anda nerede, ne olduğunu” gözünüzle kontrol ederek iyileştirme yapabilirsiniz. Denemek, düzeltmek ve yeniden denemek — komut dosyalarında ustalaşmanın en kısa yolu bu tekrardır.

Komut dosyalarını okunaklı tutmanın ipuçları

Bir komut dosyasının işi yazıldığında bitmez; daha sonra sık sık yeniden incelenmesi ve değiştirilmesi gerekir. Bu nedenle yazarken “okunabilirliğe” dikkat etmek, gelecekte işinizi kolaylaştırır. Bunun için birkaç ipucu vardır. Öncelikle değişkenlere anlamlı adlar verin. “x” veya “a” yerine, içeriği belli eden “toplam tutar” ya da “hedef dosya adı” gibi adlar kullanırsanız daha sonra baktığınızda işlemin amacını hemen anlayabilirsiniz.

Ardından her işlem grubu için yorumlar ekleyin. “Buradan itibaren verileri al” veya “Tutarı burada kontrol et” gibi kısa notlar bile komut dosyasının genel akışını izlemeyi kolaylaştırır. Karmaşık işlemleri birkaç küçük komut dosyasına bölmek de etkilidir. Görevlerine göre ayrılmış kısa komut dosyalarından oluşan bir koleksiyonu değiştirmek ve yeniden kullanmak, tek bir dev komut dosyasına kıyasla daha kolaydır. Uzun süre kullanılabilecek komut dosyaları oluşturmanın sırrı, “Gelecekteki ben bunu okuyup anlayabilir mi?” ölçütüyle yazmaktır.

Komut dosyalarında hata ayıklama yöntemi

Komut dosyası yazarken işlerin istediğiniz gibi çalışmadığı durumlar kaçınılmazdır. Böyle zamanlarda paniğe kapılmadan nedeni bulma sürecine “hata ayıklama” denir. Hata ayıklamanın temeli, “hangi noktaya kadar doğru çalıştığını ve hangi noktadan itibaren beklenenden farklılaştığını” belirlemektir. makuroku, yürütülmekte olan satırı gerçek zamanlı vurgulayan bir özelliğe ve ara değerleri ekranda gösteren PRINT çıktısına sahiptir. Böylece “şu anda nerede, ne olduğunu” gözünüzle kontrol ederken nedeni arayabilirsiniz.

Etkili hata ayıklamanın yolu, önce işlemi küçük parçalara bölmek ve her parçanın çalışmasını tek tek kontrol etmektir. Her şeyi bir kerede tamamlamaya çalışırsanız sorunun nerede oluştuğunu anlamak zorlaşır. Azar azar yazın, sık sık çalıştırın ve doğru çalıştığını doğruladıktan sonra sonraki adıma geçin. Bu düzenli tekrar, sonuçta en hızlı ve en güvenilir şekilde script oluşturmanızı sağlar. Bir hata çıksa bile bunu “nereyi düzeltmeniz gerektiğini” gösteren bir ipucu olarak görürseniz hata ayıklama korkutucu olmaz.

Script öğrenmek için önerilen sıra

Script öğelerini hangi sırayla öğrenmeniz gerektiğine dair genel bir yol haritası verelim. İlk öğrenilmesi gereken konu elbette koşullu dallanmadır (IF/ELSE). “Eğer … ise” biçimindeki kararlar tüm otomasyonların temelini oluşturur. Sırada döngüler (LOOP) vardır. Tekrarlanan işlemler, büyük miktarda veriyle çalışırken son derece etkilidir. Yalnızca bu ikisini kullanabilmek bile basit bir kayıtla gerçekleştirilemeyen pek çok işi otomatikleştirmenizi sağlar.

Bundan sonraki konu değişkenlerdir. Değerleri saklama mekanizması, koşullu dallanma ve döngülerle birleştirildiğinde daha esnek işlemler yapılmasını sağlar. Bu noktaya geldiğinizde hata işlemeyi (TRY/CATCH) öğrenin. Uzun süre gözetimsiz çalıştırmak istiyorsanız süreç içinde bir hata oluşsa bile durmayan bir mekanizma vazgeçilmezdir. Son olarak dosya işlemleri, HTTP iletişimi ve OCR gibi amaca özel komutlardan yalnızca ihtiyaç duyduklarınızı öğrenmeniz yeterlidir.

Önemli olan, her şeyi bir kerede öğrenmeye çalışmamaktır. Gerçek bir iş üzerinde çalışırken “Bunu da yapabilsem çok kullanışlı olurdu” diye düşündüğünüzde ilgili özelliği araştırıp kullanmayı deneyin. “İhtiyaç nedeniyle öğrenme” yaklaşımı, sonuçta bilgilerin en kalıcı şekilde öğrenilmesini sağlar. Bir ders kitabını en başından sırayla okumak yerine, önünüzdeki işleri otomatikleştirirken ihtiyaç duyduğunuz öğeleri o anda öğrenmek size daha pratik beceriler kazandırır.

Script ilk bakışta zor görünebilir, ancak her bir öğesi basittir ve adım adım öğrenildiğinde mutlaka kavranabilir. Bir kez öğrendiğinizde otomatikleştirebileceğiniz işlerin kapsamı çarpıcı biçimde genişler. Önce kayıtla başlayın ve kayda tek bir koşullu dallanma ekleyerek script dünyasına ilk adımınızı atın.

Kayıttan script kullanımına sorunsuz geçiş

“Script yazmak zor görünüyor” diye düşünenlerin özellikle bilmesi gereken şey, sıfırdan yazmak zorunda olmadıklarıdır. makuroku ile önce işlemleri GUI üzerinden kaydedebilir, ardından makroyu düzenlenebilir bir SCR scriptine dönüştürebilirsiniz. Başka bir deyişle, daha en baştan çalışan bir iskelete sahip olursunuz. Sonrasında yalnızca gerekli kısımları değiştirmeniz yeterlidir; örneğin tekrarlamak istediğiniz bölümü LOOP içine alabilir veya karar verilmesi gereken yere IF ekleyebilirsiniz.

Ayrıca yazarken sözdizimi denetimi çalıştığı için yazım hataları anında bildirilir. Çalıştırılan satırı gerçek zamanlı olarak vurgulayan bir hata ayıklama özelliği de vardır; böylece “işlemin şu anda nerede olduğunu” gözünüzle görebilirsiniz. Bu destekler sayesinde kayıttan script kullanımına geçiş yumuşak ve kolaydır. Önce kayıtla iskeleti oluşturup ardından koşulları ve döngüleri azar azar ekleyin. Bu yöntemle programlama deneyimi olmayan kişiler bile kendi başlarına kullanışlı otomasyonlar oluşturabilir. makuroku ile bu özelliklerin tamamını ücretsiz deneyebilirsiniz.

Ücretsiz deneyin

Bunu makuroku ile otomatikleştirin

makuroku farenizi ve klavyenizi kaydeder, ardından otomatik olarak oynatır. Daha fazlasına ihtiyaç duyduğunuzda SCR betikleri ve AI (MCP) entegrasyonu ekleyin. Windows'ta tüm özellikler ücretsiz.