Apple Script – podstawy

AppleScript – Co to takiego?

AppleScript jest językiem skryptowym zapewniającym bezpośrednią kontrolę nad aplikacjami, które umożliwiają ich oskrytpowanie (ang. scriptable applications). Są to te aplikacje, które odpowiadają na zdarzenia Apple (ang. Apple events) poprzez wykonywanie odpowiednich operacji i dostarczanie żądanych danych. Apple event to wiadomość wymieniana między procesami, która może zawierać zarówno polecenia jak i dane.

Do tworzenia skryptów AppleScript można wykorzystać zarówno XCode jak i program ScriptEdit.

Okno programu ScriptEdit
Okno programu ScriptEdit

Pliki z kodem skryptu zapisuje się z rozszerzeniem

.scpt

.

OSA – Open Scripting Architecture

Open Scripting Architecture to standard określający budowę aplikacji w sposób umożliwiający reakcję i współpracę ze skryptami AppleScript. Definiuje struktury danych i funkcje, dzięki którym aplikacja może komunikować się z innymi aplikacjami, czy skryptami z wykorzystaniem Apple events.

Podstawy AppleScript

Język oparty na zdarzeniach

Wszystko co dzieje się w języku AppleScript jest odpowiedzią na jakieś zdarzenie (ang. event). Poniższy skrypt odpowiada reakcji na zdarzenie uruchomienia skryptu. ( zdarzenie run ).

on run
 -- jakiś kod
end run

Zdarzeń podstawowych w AppleScript jest niewiele. Ale użytkownik, może definiować swoje.

Podstawowe zdarzenia AppleScript

on run
 -- to reakacja na zdarzenie odpowiadające uruchomieniu skryptu
end run
on open listaReferencji
(*
 to zdarzenie następuje, kiedy skrypt jest otwierany
  i będzie obsługiwał obiekty przekazane mu metodą drag & drop
  zmienna "listaReferencji" jest zmiennà stworzoną przez użytkownika,
  może mieć dowolną nazwę, zawiera ona listę referencji do
  przeniesionych obiektów
*)
end open
on quit
 -- zdarzenie to jest aktywowane tuż przed opuszczeniem skryptu
 -- aby wyjść ze skryptu, należy użyć polecenia
 continue quit
end quit
on idle
(*
 Jeśli skrypt jest zapisany z opcją "No exit",
 do stanu idle przechodzi on po wyjściu z obsługi
 zdarzenia: "run" albo "open".
  *)
 -- jeżeli chcemy uśpić skrypt pomiędzy kolejnymi obiegami idle używamy
 return 10
 -- liczba 10 podaje liczbe sekund jakie skrypt bedzie czekał
end idle

Typy danych

AppleScript posiada podstawowe typy danych:

-- integer (liczby całkowite)
set x to 5
-- real (liczby rzeczywiste)
set x to 3.57
-- characters (typ znakowy)
set x to "f"
-- strings (typ łańcuchowy)
set x to "The Hitch-hicker's Guide To The Galaxy"
-- lists (listy)
set x to {"foo", 2, 3.57}

Instrukcja set (jak pokazano powyżej) służy do nadania wartości zmiennej. Można również do tego wykorzystać instrukcję copy.

copy “kopiowany lancuch znakow” to lancuch

Przykłady skryptów

Uruchomienie aplikacji: Książka adresowa

-- uruchomienie książki adresowej
tell application "Address Book"
 activate
end tell

Odczytanie obecnej daty na głos

set volume 7
copy the (current date) to theDate
say theDate as string

Odtwarzanie następnego utwory w iTunes

tell application "iTunes"
 play (next track)
end tell

Otworzenie okna dialogowego

display dialog "Hello world" 
Rezultat działania skryptu - okno dialogowe z tekstem “Hello World”
Rezultat działania skryptu - okno dialogowe z tekstem “Hello World”

Odliczanie czasu

property countdown : false
property currentDate : 0
property startDate : 0
property endDate : 0
(* ===== Event Handlers ===== *)
on launched theObject
 -- Pokaż okno
 set visible of window "main" to true
 -- Wyświetlenie okna dialogowego z prośbą o podanie czasu w formacie HH:MM:SS
 display dialog "Enter the amount of time for the countdown timer:" default answer "00:00:05"
attached to window "main"
end launched
on dialog ended theObject with reply withReply
 -- Sprawdzenie czy naciśnięto przycisk OK
 if button returned of withReply is "OK" then
  -- Zapisanie aktualnego czasu
  set currentDate to date (text returned of withReply)
  --  ustawienie czasu starti
  set startDate to current date
  -- wyznaczenie czasu końca odliczania
  set endDate to startDate + (time of currentDate)
  -- uaktualnienie wyśwetlania okna głównego
  set contents of text field "display" of window "main" to currentDate
  --odliczanie czasu - rozpoczęcie
  set countdown to true
 end if
end dialog ended
on idle theObject
 -- sprawdzenie czy możńa odliczać czas
 if countdown then
  -- jeśli określona porcja czasu już minęła - wyświetli się okno z informacją
  if (current date) is greater than endDate then
   set countdown to false
   display alert "Time's Up!"
  else
   --  w przeciwnym wypadku określamy ile czasu upłynęło
   set elapsedTime to (current date) - startDate
   -- uaktualniamy odmierzany czas w okienku
   set contents of text field "display" of window "main" to currentDate - elapsedTime
  end if
 end if
 -- w celu aktualizacji tzw idle event co sekundę zwracamy 1
 return 1
end idle
Okno pytania o czas do odliczenia
Okno pytania o czas do odliczenia
Okno pokazujące czas do zakończenia odliczania
Okno pokazujące czas do zakończenia odliczania
Informacja o zakończeniu odliczania
Informacja o zakończeniu odliczania

Jedno przemyślenie nt. „Apple Script – podstawy”

Dodaj komentarz