Drugi krok w AppleScript

Po przeczytaniu poprzedniego wpisu o AppleScript wiesz już jak wyświetlać okna dialogowe. Nie jest to zapewne to, co jest Ci potrzebne do automatyzacji Twojego macOSa. Potrzeba czegoś więcej.
Na szczęście AppleScript może robić więcej rzeczy, prawie wszystko to, co Ty. Tylko szybciej.
Jego podstawą jest automatyzacja kontroli aplikacji, więc możesz za jego pomocą:

  • Wysyłać e-maile, porządkować pocztę, wysyłać zaproszenia, życzenia itp.
  • Automatyzować formatowanie i pracę w edytorze tekstów, arkuszu kalkulacyjnym czy przygotowanie prezentacji.

Jeśli widziałeś wcześniej skrypty, to zauważyłeś zapewne, że większość z nich zaczyna się od tell application. Jest to instrukcja wywołania programu, któremu będziesz wydawał instrukcję, co ma zrobić. Najprostszym przykładem może być poinstruowanie Findera, żeby otworzył Twój katalog domowy:

Wszystko, co napisałeś w 2 i 3 linii jest skierowane do programu Finder, stąd takie formatowanie kodu z jednym tabulatorem przed activate i open home.

Ale skąd wiem co Finder może zrobić i jak?

No właśnie, skąd ja wiem, że Finder może wykonywać instrukcje activate i open. Zwłaszcza jak już będziesz chciał samemu coś napisać i potrzebował będziesz informacji co można i jak skryptować, będziesz używał pomocnika Słownik (Dictionary) i Biblioteka (Library).

  • W celu otwarcia Słownika w Edytorze Skryptów używamy skrótu Shift⇧+⌘+O. Otworzy on okno wyboru aplikacji, którą możemy wybrać. Wyświetli to nam spis obiektów i poleceń możliwych do użycia w kontekście aplikacji.

Zrzut ekranu 2017-03-25 o 15.16.55

  • Biblioteka, wywoływana skrótem ⇧+⌘+L, jest zbiorem słowników, do którego możemy dodawać kolejne słownik nam pomocne.

Zrzut ekranu 2017-03-25 o 15.18.13

Polecam Ci w pierwszej kolejności przejrzeć pozycję Standard Suite, która jest zbiorem najpowszechniejszych poleceń wydawanych programom.
Otwórz polecenie Activate. Możemy tam przeczytać:

activate v : Activate the specified window (or the Finder)
activate [specifier] : the window to activate (if not specified, activates the Finder)

Czyli w skrócie, aktywuj sprecyzowane okno (lub Findera) , specifier to okno do aktywacji (lub otwórz Findera, jeśli brak specyfikacji). Tak więc activate bez podania które okno chcemy otworzyć, a możemy mieć kilka Finderów, otwiera po prostu Findera.
Kolejna komenda to open home:

open v : Open the specified object(s)
open specifier : list of objects to open
[using specifier] : the application file to open the object with
[with properties record] : the initial values for the properties, to be included with the open command sent to the application that opens the direct object

Mogę z tego wyczytać, że polecenie open można wywołać z właściwością (ang. property) aplikacji. Właściwości znajdziesz w Finder Basic -> application -> Properties oznaczone literą P lub w opisie Properties.
Jest tam wiele właściwości, które możemy otworzyć np.; pulpit, katalog dokumentów, kosza itp.

Czy pilot leci z nami?

Sprawdźmy, co wiemy do tej pory. Napisz skrypt, który sprawdzi, czy w Twoim katalogu domowym istnieje katalog Muzyka. Jeśli istnieje, to wyświetl okno dialogowe z potwierdzeniem tej informacji.
Podpowiem tylko, że w słowniku Finder należy sprawdzić operację exists. Jak widzisz, jej wynik jest opisany tak:

→ boolean : true if it exists, false if not

co oznacza, że zwróci (oznaczenie strzałki) wartość boolean, czyli prawda (true) jeśli istnieje katalog i fałsz (false) jeśli nie ma takiego katalogu. Typ boolean jest typem zawierającym tylko dwa stany, stan true lub false.
Druga podpowiedz, sprawdzenie realizujemy komendą if której składnia wygląda następująco:

O sprawdzaniu warunków i pętlach będzie jeszcze w kolejnych wpisach.
Teraz, jeszcze nie patrz na rozwiązanie i spróbuj samemu napisać skrypt.

Zrzut ekranu 2017-03-25 o 16.42.53

Czy katalog istnieje?

I jak Ci poszło? Jeśli napisałeś sam skrypt i działa, to super. Jeśli nie, to nie przejmuj się, zaraz wyjaśnię jak można sprawdzić, czy katalog istnieje.
Poniższy skrypt:

działa następująco:

  • tell application “Finder” – jest powiedzenie, że kolejne komendy będą wydawane programowi Finder, a nie bezpośrednio do systemu macOS.
  • if exists folder “Muzyka” in home then – jeśli istnieje katalog Muzyka w moim katalogu domowym to będę wykonywane wszystkie komendy w środku wyrażenia if,
  • display dialog – wyświetl okno dialogowe.
  • end if – jest zakończeniem sprawdzania warunku.
  • end tell – zakończenie wydawania komend aplikacji Finder.
Michał Szafrański
Programista - Architekt - Projektant Oprogramowania. Zainteresowania: Cloud Computing - Architectural Design Patterns - Google Cloud Platform. Miłośnik sprzętu i oprogramowania firmy Apple.

Comments are closed.