Czym jest AppleScript i dlaczego warto go poznać
AppleScript to język skryptowy stworzony przez Apple, który pozwala na automatyzację zadań w systemie macOS i sterowanie aplikacjami za pomocą komend zbliżonych do naturalnego angielskiego. Jeśli kiedykolwiek chcieliście, żeby wasz Mac robił powtarzalne rzeczy za was — przenosił pliki, wysyłał maile, generował raporty — AppleScript jest narzędziem, które to umożliwia bez konieczności otwierania terminala i pisania bashowych one-linerów.
Język ten jest głęboko zintegrowany z ekosystemem Apple. Każda aplikacja, która szanuje standardy macOS, może udostępniać swój tzw. “dictionary” — słownik komend, które AppleScript potrafi wywołać. To oznacza, że możecie sterować Finderem, Safari, Mail, iTunes, a nawet aplikacjami trzecimi jak Adobe Photoshop czy Microsoft Excel, wszystko z jednego skryptu.
Warto go poznać, bo mimo że nie jest to język, który wpisze się na wasze CV jako “must-have”, to w ekosystemie Apple jest niezastąpiony. Administratorzy systemów macOS, power userzy i deweloperzy, którzy muszą automatyzować workflow na Macach, wciąż sięgają po AppleScript. Nawet w erze Shortcuts i Automatora, AppleScript daje poziom kontroli, którego te nowsze narzędzia nie zawsze oferują.
Krótka historia i ewolucja
AppleScript zadebiutował w 1993 roku wraz z System 7.1.1 jako część projektu “Scripting Manager”. Jego twórcą był William Cook, a język bazował na koncepcjach z języka HyperTalk znanego z HyperCard. Od samego początku ideą było to, żeby skrypty mogły pisać osoby, które nie są programistami — stąd składnia przypominająca zdania w języku angielskim.
Przez lata AppleScript przeszedł kilka faz rozwoju. W erze Mac OS X zyskał wsparcie dla Unixowych skryptów powłoki i integrację z Cocoa przez AppleScriptObjC. W 2014 roku Apple wprowadził JavaScript for Automation (JXA) jako alternatywę, ale społeczność AppleScript pozostała lojalna wobec oryginalnego języka.
Współczesny macOS nadal wspiera AppleScript, choć Apple coraz mocniej promuje Shortcuts jako narzędzie do automatyzacji dla zwykłych użytkowników. Mimo to, AppleScript pozostaje jedynym sposobem na głęboką automatyzację aplikacji przez ich scripting dictionaries i prawdopodobnie przetrwa jeszcze długo jako narzędzie dla zaawansowanych użytkowników.
Kluczowe cechy i filozofia
AppleScript jest językiem zorientowanym na obiekty, ale w sposób, który różni się od typowych języków OOP. Zamiast klas i dziedziczenia, operujecie na obiektach aplikacji — dokumentach, oknach, plikach, wiadomościach e-mail. Każdy obiekt ma właściwości i metody zdefiniowane w słowniku aplikacji, a wy odwołujecie się do nich za pomocą ścieżek w stylu document 1 of application "Pages".
Typowanie w AppleScript jest dynamiczne i dość elastyczne. Język sam konwertuje typy tam, gdzie to możliwe — liczba na string, listę na rekord. To wygodne, ale potrafi prowadzić do frustrujących błędów, gdy konwersja nie zadziała tak, jak oczekujecie. Składnia jest verbose — tell application "Finder" to set name of file "old.txt" of folder "Documents" of home to "new.txt" to jedna komenda, ale czytacie ją prawie jak zdanie po angielsku.
Filozofia AppleScript zakłada, że skryptowanie powinno być dostępne dla każdego, nie tylko dla programistów. To dlatego Script Editor ma wbudowany przycisk “Record” — możecie nagrywać swoje akcje w GUI i zamieniać je na kod. W praktyce nagrane skrypty wymagają sporo ręcznej edycji, ale sam koncept jest elegancki.
Unikalną cechą jest model komunikacji międzyprocesowej (IPC) oparty na Apple Events. Kiedy piszecie tell application "Safari", AppleScript nie uruchamia nowej instancji Safari — wysyła zdarzenia do już działającej aplikacji przez systemowy mechanizm IPC. To sprawia, że skrypty mogą sterować aplikacjami GUI w sposób, który w innych systemach operacyjnych wymagałby skomplikowanych bibliotek typu UI Automation.
Gdzie AppleScript sprawdza się najlepiej
Najlepszym use case’em dla AppleScript jest automatyzacja workflow na macOS. Wyobraźcie sobie: codziennie rano musicie pobrać raport z SAP, przekonwertować go na CSV, wysłać mailem do zespołu i przesunąć plik do archiwum. W AppleScript to jeden skrypt, który odpalacie jednym kliknięciem lub ustawiacie na cronie przez launchd.
Branża kreatywna kocha AppleScript od lat. W studiach graficznych i postprodukcyjnych skrypty automatyzują eksport plików z Adobe Creative Suite, batch renaming w Finderze, czy generowanie miniaturek. Wiele agencji marketingowych ma całe biblioteki skryptów AppleScript, które oszczędzają godziny pracy dziennie.
Administratorzy fleet Maców w firmach używają AppleScript w połączeniu z bashem i narzędziami MDM (Mobile Device Management) do konfiguracji maszyn, deployowania ustawień i automatyzacji zadań konserwacyjnych. Choć do ciężkiego DevOps raczej sięga się po inne narzędzia, AppleScript wypełnia niszę między prostą automatyzacją a pełnym programowaniem.
Jak wygląda kod w AppleScript
Prosty skrypt, który tworzy nowy folder i kopiuje do niego pliki:
tell application "Finder"
set targetFolder to make new folder at desktop with properties {name:"Raporty"}
set sourceFiles to every file of folder "Downloads" of home whose name extension is "pdf"
duplicate sourceFiles to targetFolder
end tell
display notification "Skopiowano pliki PDF!" with title "Gotowe"
A oto skrypt wysyłający maila z załącznikiem:
tell application "Mail"
set newMessage to make new outgoing message with properties {subject:"Raport dzienny", content:"W załączniku dzisiejszy raport.", visible:true}
tell newMessage
make new to recipient at end of to recipients with properties {address:"team@firma.pl"}
make new attachment with properties {file name:"Macintosh HD:Users:ja:Desktop:raport.pdf"} at after the last paragraph
end tell
send newMessage
end tell
Zwróćcie uwagę na składnię tell ... end tell — to blok, w którym wszystkie komendy są kierowane do konkretnej aplikacji. Przypomina to trochę SQL-owe zapytania — deklaratywne i verbose.
Ekosystem i narzędzia
Podstawowym IDE dla AppleScript jest Script Editor, który przychodzi z macOS. Ma podświetlanie składni, debugger z breakpointami i — co najważniejsze — przeglądarkę słowników aplikacji. Możecie otworzyć dictionary dowolnej aplikacji i zobaczyć dokładnie, jakie komendy i obiekty są dostępne. Alternatywą jest Script Debugger od Late Night Software — płatne narzędzie, które oferuje znacznie lepszy debugging, inspekcję obiektów i profiling.
Dla tych, którzy wolą edytory tekstowe, VS Code ma rozszerzenia do AppleScript, a Sublime Text i Vim też mają pluginy z podświetlaniem składni. W terminalu możecie uruchamiać skrypty za pomocą osascript — to potężne narzędzie, które pozwala też wykonywać pojedyncze komendy inline.
Społeczność AppleScript nie jest ogromna, ale jest aktywna. Forum MacScripter.net to miejsce, gdzie od lat gromadzi się wiedza. Na GitHubie znajdziecie sporo gotowych skryptów, szczególnie w repozytoriach związanych z automatyzacją macOS. Warto też wspomnieć o Hammerspoon — narzędziu do automatyzacji, które choć używa Lua, świetnie uzupełnia się z AppleScript.
Mocne i słabe strony
Największą siłą AppleScript jest głęboka integracja z macOS. Żaden inny język nie daje tak łatwego dostępu do scripting dictionaries aplikacji. Możecie sterować prawie każdą natywną aplikacją na Macu bez dodatkowych bibliotek czy API. Składnia jest czytelna dla osób nieprogramujących, co ułatwia współpracę z nietechnicznymi członkami zespołu.
Z drugiej strony, AppleScript ma sporo wad. Składnia bywa niekonsekwentna — różne aplikacje definiują swoje dictionary w różny sposób, więc ta sama operacja może wymagać zupełnie innego kodu w Finderze i w Safari. Debugging jest bolesny, komunikaty o błędach są często niejasne, a dokumentacja Apple jest rozproszona i nie zawsze aktualna. Wydajność przy dużych operacjach też pozostawia wiele do życzenia.
Język nie nadaje się do niczego poza ekosystemem Apple — to rozwiązanie platform-specific w najczystszym wydaniu. Nie napiszecie w nim serwera, aplikacji webowej ani niczego cross-platform. Dla wielu deweloperów to dealbreaker, ale jeśli wasz świat kręci się wokół macOS, AppleScript jest wart nauki.
Podsumowanie
AppleScript to narzędzie niszowe, ale w swojej niszy — automatyzacji macOS — jest trudny do pobicia. Powinni go poznać wszyscy, którzy spędzają dużo czasu na Macu i chcą zautomatyzować powtarzalne zadania. Nie musicie być programistami — jeśli potraficie opisać zadanie po angielsku, prawdopodobnie potraficie je też zautomatyzować w AppleScript.
Przyszłość języka jest niepewna w obliczu rosnącej roli Shortcuts, ale dopóki aplikacje macOS będą wspierać Apple Events i scripting dictionaries, AppleScript pozostanie relevantny. To jeden z tych języków, które nie zrobią z was rockstar developera, ale mogą zaoszczędzić wam setki godzin pracy.

