Powrót do bloga
Poradnik · · 10 min czytania

Więcej niż nagrywanie: instrukcje warunkowe, pętle i zmienne w skryptach

Makra rejestrujące i odtwarzające działania są najprostszym sposobem automatyzacji powtarzalnej pracy. Nagrane makro ma jednak podstawową cechę: za każdym razem wykonuje dokładnie te same czynności. W rzeczywistej pracy często trzeba zmieniać działanie zależnie od sytuacji, na przykład „jeśli stan magazynowy wynosi zero, złóż zamówienie” albo „jeśli suma przekracza budżet, wyświetl ostrzeżenie”. Samo nagrywanie nie pozwala obsłużyć takich decyzji.

Wtedy do gry wchodzą skrypty. Pozwalają one włączyć do automatyzacji podstawowe elementy programowania: instrukcje warunkowe („jeśli…, to…”), pętle (powtórzenia) i zmienne (pojemniki przechowujące wartości). Słowo „programowanie” może brzmieć onieśmielająco, ale elementy te jedynie nadają formalną postać codziennym decyzjom, a ich idea nie jest trudna. Ten artykuł w prosty sposób wyjaśnia trzy filary skryptów jako kolejny krok po nagrywaniu.

Instrukcje warunkowe (IF/ELSE): podejmowanie decyzji

Instrukcja warunkowa to mechanizm, który wykonuje określone działanie tylko wtedy, gdy spełniony jest dany warunek. Blok IF wykonuje swoją zawartość wyłącznie wtedy, gdy warunek jest prawdziwy, natomiast ELSE obsługuje wszystkie pozostałe przypadki. Można na przykład zapisać działanie: „Jeśli na ekranie pojawi się słowo »Błąd«, powiadom osobę odpowiedzialną; w przeciwnym razie przejdź od razu do następnego kroku”.

Warunkiem może być wartość wyświetlana na ekranie, kolor określonego piksela albo liczba zapisana w zmiennej. Człowiek nieświadomie wykonuje cały ciąg czynności: patrzy na ekran, ocenia sytuację i wybiera następne działanie. Instrukcje warunkowe służą właśnie do włączenia tego procesu decyzyjnego do automatyzacji. Wystarczy zapisać je raz, a później komputer za każdym razem podejmie właściwą decyzję za Ciebie.

Pętle (LOOP): powtarzanie działań

Pętla to mechanizm wielokrotnie powtarzający tę samą operację. Przypomina ustawienie „liczby odtworzeń” makra, ale pętle w skryptach są znacznie bardziej elastyczne. Oprócz określenia liczby powtórzeń, na przykład „powtórz 10 razy”, można powtarzać działanie zależnie od sytuacji: „aż w liście zabraknie wierszy” lub „aż zostanie spełniony określony warunek”.

Prawdziwa wartość pętli ujawnia się podczas przetwarzania dużych ilości danych. Wystarczy objąć pętlą operację „przetwórz jeden rekord”, aby zmienić ją w „przetwórz wszystkie rekordy z listy”. Niezależnie od tego, czy jest ich 100, czy 1000, trzeba zapisać obsługę tylko jednego rekordu — resztę pętla przetworzy automatycznie. Zadanie, które ręcznie zajęłoby kilka godzin, wystarczy opisać raz, a potem tylko poczekać. To właśnie moment, w którym automatyzacja zaczyna oszczędzać nie minuty, lecz godziny.

Zmienne: zapamiętywanie wartości

Zmienna to „pojemnik”, który służy do tymczasowego przechowywania wartości podczas wykonywania procesu. Licznik (numer bieżącego powtórzenia), nazwa pliku, liczba odczytana z ekranu czy pośredni wynik obliczeń — zapisanie tych wartości w zmiennych pozwala ponownie wykorzystywać je w kolejnych krokach. Na przykład operację „wczytaj wartość komórki do zmiennej, a jeśli przekracza 10 000, przenieś ją do innego arkusza” można zrealizować, łącząc zmienne z rozgałęzieniami warunkowymi.

Gdy połączy się zmienne, rozgałęzienia warunkowe i pętle, możliwości automatyzacji gwałtownie rosną. „Odczytaj dane (zmienne), zmień sposób przetwarzania zależnie od ich zawartości (rozgałęzienia warunkowe) i zastosuj go do wszystkich elementów (pętle)” — już ta kombinacja pozwala obsłużyć znaczną część rzeczywistych zadań. To właśnie tutaj zaczyna się „inteligentna automatyzacja”, której nie dało się osiągnąć przez proste nagrywanie i odtwarzanie.

Obsługa błędów, czyli „automatyzacja, która się nie zatrzymuje”

Po opanowaniu rozgałęzień warunkowych, pętli i zmiennych warto poznać „obsługę błędów”. Podczas długotrwałego działania automatyzacji nieoczekiwane sytuacje są nieuniknione. Sieć może na chwilę przestać działać, plik, który powinien się otworzyć, może być niedostępny, a ekran może wyglądać inaczej niż zwykle. Nieprzygotowany na takie sytuacje skrypt natychmiast całkowicie się zatrzyma. Jeśli działa bez nadzoru w nocy, praca może pozostać wstrzymana aż do następnego ranka.

Tu przydaje się mechanizm obsługi błędów TRY/CATCH. Pozwala on zbudować przepływ, w którym błąd w bloku TRY nie zatrzymuje całego procesu, lecz powoduje przejście do czynności zapisanych w bloku CATCH — takich jak zarejestrowanie błędu, wysłanie powiadomienia albo pominięcie tylko danego elementu i przejście do następnego. Dzięki temu powstaje niezawodna automatyzacja, która nawet po niepowodzeniu jednego elementu przetwarza wszystkie pozostałe do końca. Innymi słowy, uczymy skrypt naturalnej dla człowieka reakcji: „Jeśli coś się nie powiedzie, najpierw to odnotuj, a potem działaj dalej”.

Poznaj często używane polecenia SCR

Skrypty SCR w makuroku zawierają polecenia często używane w codziennej pracy. Nie trzeba uczyć się ich wszystkich naraz, ale znajomość dostępnych możliwości pomaga dostrzegać kolejne zadania, które można zautomatyzować. Przyjrzyjmy się kilku najważniejszym poleceniom.

  • FIND_IMAGE / WAIT_IMAGE: wyszukiwanie elementu na ekranie na podstawie obrazu lub oczekiwanie na jego pojawienie się
  • IF / ELSE / LOOP: rozgałęzienia warunkowe i pętle
  • SET / ADD / SUB: przypisywanie wartości do zmiennych i obliczenia
  • READ_FILE / WRITE_FILE: odczytywanie i zapisywanie plików
  • HTTP_GET / POST: komunikacja z usługami zewnętrznymi
  • NOTIFY / PROMPT: wyświetlanie powiadomień i żądanie wprowadzenia danych przez użytkownika

Łącząc te funkcje, można tworzyć zaawansowane automatyzacje, których nie da się osiągnąć za pomocą prostego nagrywania — na przykład odczytać dane z pliku, zmienić sposób przetwarzania zależnie od warunków, wysłać wynik do usługi zewnętrznej i powiadomić o zakończeniu. Rola każdego polecenia jest przy tym prosta, więc ich nauka nie jest trudna. Wystarczy stopniowo poszerzać swój zestaw narzędzi, zaczynając od potrzebnych poleceń.

Przykłady automatyzacji możliwych do wykonania za pomocą skryptów

Połączenie instrukcji warunkowych, pętli, zmiennych i obsługi błędów umożliwia automatyzację znacznie wykraczającą poza możliwości prostego nagrywania. Przyjrzyjmy się kilku konkretnym przykładom. Może to być na przykład zadanie: „otwórz kolejno wszystkie pliki w folderze, sprawdź ich zawartość i przenieś do innego folderu tylko te, które spełniają określone warunki”. Można je wykonać, przechodząc w pętli przez wszystkie pliki i segregując je za pomocą instrukcji warunkowych. Sortowanie, które ręcznie zajęłoby godzinę, po jednorazowym napisaniu skryptu potrwa zaledwie kilka minut.

Innym przykładem jest monitorowanie polegające na „regularnym pobieraniu danych ze strony internetowej, porównywaniu ich z poprzednią wartością i wysyłaniu powiadomienia w razie zmiany” — to również zadanie, w którym skrypty sprawdzają się znakomicie. Dane są pobierane przez HTTP, porównywane z poprzednią wartością zapisaną w zmiennej, a instrukcja warunkowa uruchamia powiadomienie, gdy wykryje zmianę. Połączenie tego z wykonywaniem według harmonogramu pozwala stworzyć system monitorowania, który nie przeoczy żadnej zmiany bez jakiegokolwiek działania z Twojej strony.

Taka automatyzacja może na pierwszy rzut oka wydawać się trudna, ale każdy jej element — pętle, instrukcje warunkowe, zmienne, komunikacja i powiadomienia — jest prosty. Trudne jest „zrozumienie wszystkiego naraz”, a nie „łączenie elementów po kolei”. Zacznij na przykład tylko od instrukcji warunkowych, potem poznaj pętle i stopniowo poszerzaj wiedzę o potrzebne elementy. Nim się obejrzysz, będziesz w stanie samodzielnie tworzyć całkiem zaawansowane automatyzacje.

Ważne, aby od razu nie dążyć do stworzenia idealnego skryptu. Najpierw przygotuj minimalną działającą wersję, uruchom ją, a następnie stopniowo poprawiaj miejsca, które nie działają zgodnie z oczekiwaniami. makuroku ma funkcję debugowania, która w czasie rzeczywistym wyróżnia aktualnie wykonywany wiersz, dzięki czemu możesz na bieżąco sprawdzać, „gdzie jesteś i co się właśnie dzieje”, oraz wprowadzać ulepszenia. Wypróbuj, popraw i wypróbuj ponownie — takie powtarzanie to najszybsza droga do opanowania skryptów.

Jak zachować czytelność skryptów

Praca nad skryptem nie kończy się po jego napisaniu — często trzeba później do niego wracać i go modyfikować. Dlatego dbanie o „czytelność” już podczas pisania znacznie ułatwi Ci pracę w przyszłości. Oto kilka wskazówek. Przede wszystkim nadawaj zmiennym zrozumiałe nazwy. Zamiast „x” lub „a” używaj nazw takich jak „łączna kwota” czy „nazwa pliku docelowego”, które wyjaśniają zawartość. Dzięki temu nawet po dłuższym czasie od razu zrozumiesz cel danego przetwarzania.

Następnie dodawaj komentarze do poszczególnych bloków przetwarzania. Nawet krótkie notatki, takie jak „od tego miejsca pobieranie danych” czy „tutaj sprawdzenie kwoty”, ułatwiają śledzenie całego przebiegu skryptu. Warto także dzielić złożone operacje na kilka mniejszych skryptów. Zbiór krótkich skryptów podzielonych według funkcji jest łatwiejszy do modyfikowania i ponownego wykorzystania niż jeden ogromny skrypt. Sekretem tworzenia trwałych skryptów jest pisanie ich z myślą: „Czy mój przyszły ja będzie w stanie to przeczytać i zrozumieć?”

Jak debugować skrypty

Podczas pisania skryptów nieuniknione są sytuacje, w których coś nie działa zgodnie z oczekiwaniami. Spokojne ustalanie przyczyny takiego problemu nazywa się „debugowaniem”. Podstawą debugowania jest określenie, „do którego miejsca wszystko działa poprawnie i od którego punktu zachowanie odbiega od oczekiwań”. makuroku oferuje funkcję wyróżniania w czasie rzeczywistym aktualnie wykonywanego wiersza oraz wyjście PRINT wyświetlające wartości pośrednie na ekranie. Dzięki temu możesz szukać przyczyny, obserwując, „gdzie jesteś i co się właśnie dzieje”.

Aby skutecznie debugować, najpierw podziel proces na małe fragmenty i sprawdzaj działanie każdego z nich osobno. Próba ukończenia wszystkiego naraz utrudnia ustalenie, gdzie wystąpił problem. Pisz stopniowo, często uruchamiaj skrypt i przechodź dalej dopiero po upewnieniu się, że działa prawidłowo. Takie konsekwentne powtarzanie czynności jest ostatecznie najszybszą i najpewniejszą drogą do stworzenia skryptu. Nawet jeśli pojawi się błąd, debugowanie nie będzie straszne, gdy potraktujesz go jako wskazówkę mówiącą, „co należy poprawić”.

Zalecana kolejność nauki skryptów

Oto sugerowana kolejność opanowywania poszczególnych elementów skryptów. Najpierw warto nauczyć się rozgałęzień warunkowych (IF/ELSE). Decyzje w rodzaju „jeśli…, to…” stanowią podstawę każdej automatyzacji. Następne są pętle (LOOP). Powtarzanie operacji jest niezwykle skuteczne podczas pracy z dużymi ilościami danych. Już samo opanowanie tych dwóch elementów pozwala zautomatyzować wiele zadań, których nie dało się wykonać za pomocą prostego nagrywania.

Kolejnym krokiem są zmienne. Mechanizm przechowywania wartości, połączony z warunkami i pętlami, umożliwia tworzenie bardziej elastycznych procesów. Po opanowaniu tych elementów warto poznać obsługę błędów (TRY/CATCH). Przy długotrwałej pracy bez nadzoru niezbędny jest mechanizm, dzięki któremu proces nie zatrzyma się mimo wystąpienia błędu. Na koniec wystarczy uczyć się w miarę potrzeb specjalistycznych poleceń dopasowanych do celu, takich jak operacje na plikach, komunikacja HTTP czy OCR.

Ważne, aby nie próbować nauczyć się wszystkiego naraz. Gdy podczas rzeczywistej pracy pomyślisz: „Przydałoby się móc to zrobić”, wyszukaj odpowiednią funkcję i ją wypróbuj. Taki styl „uczenia się pod wpływem potrzeby” ostatecznie najlepiej utrwala wiedzę. Zamiast czytać podręcznik od początku po kolei, więcej praktycznych umiejętności zdobędziesz, automatyzując bieżące zadania i przyswajając potrzebne elementy w miarę ich pojawiania się.

Skrypty mogą na pierwszy rzut oka wydawać się trudne, ale każdy ich element jest prosty i można go opanować, ucząc się krok po kroku. Gdy już je poznasz, zakres zadań możliwych do zautomatyzowania znacznie się poszerzy. Zacznij od nagrania, a następnie zrób pierwszy krok w świecie skryptów, dodając do niego jedno rozgałęzienie warunkowe.

Płynne przejście od nagrywania do skryptów

Osoby, którym wydaje się, że „skrypty są trudne”, powinny przede wszystkim wiedzieć, że nie trzeba pisać ich od zera. W makuroku można najpierw nagrać operacje za pomocą GUI, a następnie przekształcić makro w edytowalny skrypt SCR. Oznacza to, że od razu otrzymujesz działający szkielet. Później wystarczy zmienić tylko potrzebne fragmenty, na przykład objąć sekcję do powtarzania poleceniem LOOP albo dodać IF w miejscu, w którym należy podjąć decyzję.

Ponadto podczas pisania działa kontrola składni, która od razu informuje o błędach. Dostępna jest również funkcja debugowania, która w czasie rzeczywistym wyróżnia wykonywany wiersz, dzięki czemu można łatwo zobaczyć, „który fragment jest obecnie przetwarzany”. Takie wsparcie zapewnia płynne przejście od nagrywania do skryptów. Najpierw utwórz szkielet za pomocą nagrania, a następnie stopniowo dodawaj warunki i pętle. Dzięki temu podejściu nawet osoba bez doświadczenia w programowaniu może samodzielnie tworzyć praktyczne automatyzacje. W makuroku wszystkie te funkcje można wypróbować bezpłatnie.

Wypróbuj za darmo

Zautomatyzuj to z makuroku

makuroku nagrywa mysz i klawiaturę, a następnie odtwarza je automatycznie. Dodaj skrypty SCR i integrację AI (MCP), gdy potrzebujesz więcej. Wszystkie funkcje za darmo na Windows.