AppleScript — AppleScript
Paradygmat | Programowanie w języku naturalnym , Skrypty |
---|---|
Deweloper | Apple Inc. |
Po raz pierwszy pojawiły się | 1993 |
Wersja stabilna | 2.5 / 16 października 2014
|
Dyscyplina pisania | Słaby , dynamiczny |
OS | System 7 , Mac OS 8 , Mac OS 9 , macOS |
Licencja | Zastrzeżony (części dostępne pod APSL ) |
Rozszerzenia nazw plików | .scpt, .scptd, .applescript |
Strona internetowa | https://developer.apple.com/applescript |
Wpływem | |
Język naturalny , HyperTalk |
AppleScript to język skryptowy stworzony przez firmę Apple Inc., który ułatwia automatyczną kontrolę nad skryptowalnymi aplikacjami dla komputerów Mac . Po raz pierwszy wprowadzony w Systemie 7 , jest obecnie zawarty we wszystkich wersjach systemu macOS jako część pakietu narzędzi do automatyzacji systemu. Termin „AppleScript” może odnosić się do samego języka, do pojedynczego skryptu napisanego w tym języku lub, nieformalnie, do architektury macOS Open Scripting Architecture, na której opiera się język.
Przegląd
AppleScript to przede wszystkim język skryptowy opracowany przez firmę Apple do komunikacji między aplikacjami (IAC) przy użyciu zdarzeń firmy Apple . AppleScript jest powiązany z wydarzeniami Apple, ale różni się od nich. Zdarzenia Apple mają na celu wymianę danych między innymi aplikacjami i kontrolowanie ich w celu zautomatyzowania powtarzających się zadań.
AppleScript ma pewne własne możliwości przetwarzania, oprócz wysyłania i odbierania zdarzeń Apple do aplikacji. AppleScript może wykonywać podstawowe obliczenia i przetwarzanie tekstu, a także jest rozszerzalny, umożliwiając korzystanie z dodatków skryptowych, które dodają nowe funkcje do języka. Głównie jednak AppleScript opiera się na funkcjonalności aplikacji i procesów do obsługi złożonych zadań. Jako ustrukturyzowany język poleceń AppleScript można porównać do powłok Unix , Microsoft Windows Script Host lub IBM REXX w swoim przeznaczeniu, ale różni się od wszystkich trzech. Niezbędne dla jego funkcjonalności jest fakt, że aplikacje Macintosh publikują „słowniki” adresowalnych obiektów i operacji.
AppleScript ma pewne elementy programowania proceduralnego , programowania obiektowego (szczególnie przy budowie obiektów script) oraz język programowania naturalne tendencje w jego składni, ale nie całkowicie zgodne z któregokolwiek z tych paradygmatów programowania .
Historia
Pod koniec 1980 Jabłko uważane za pomocą HyperCard „s HyperTalk języka skryptowego jako standardowy język dla rozwoju użytkownika końcowego całej firmy oraz w jej klasycznym Mac OS systemu operacyjnego i dla międzyprocesowej komunikacji pomiędzy Apple i produktów innych niż Apple. HyperTalk może być używany przez nowicjuszy do programowania stosu HyperCard. Inżynierowie Apple uznali, że podobny, ale bardziej zorientowany obiektowo język skryptowy można zaprojektować do użytku z dowolną aplikacją , a projekt AppleScript narodził się jako efekt uboczny wysiłków badawczych mających na celu zmodernizowanie Macintosha jako całości i ostatecznie stał się jego częścią. z system 7 .
AppleScript został wydany w październiku 1993 roku jako część Systemu 7.1.1 (System 7 Pro, pierwsza poważna aktualizacja do Systemu 7). QuarkXPress (wersja 3.2) był jedną z pierwszych głównych aplikacji obsługujących AppleScript. To z kolei doprowadziło do tego, że AppleScript został szeroko zaadoptowany w świecie wydawniczym i prepress, często wiążąc złożone przepływy pracy. Był to kluczowy czynnik w utrzymaniu dominującej pozycji Macintosha w publikowaniu i przygotowaniu do druku, nawet po przeniesieniu QuarkXpress i innych aplikacji do publikowania na Microsoft Windows.
Po pewnej niepewności co do przyszłości AppleScript w systemie operacyjnym nowej generacji firmy Apple, przejście na Mac OS X (około 2002 r.) i jego frameworki Cocoa znacznie zwiększyły użyteczność i elastyczność AppleScript. Aplikacje Cocoa pozwalają programistom aplikacji zaimplementować podstawowe skrypty w swoich aplikacjach przy minimalnym wysiłku, zwiększając liczbę aplikacji, które są bezpośrednio skryptowalne. W tym samym czasie przejście na podstawy Uniksa i zdolność AppleScript do bezpośredniego uruchamiania poleceń Uniksa za pomocą do shell script
polecenia, pozwoliły AppleScripts na znacznie większą kontrolę nad samym systemem operacyjnym. AppleScript Studio , wydany z systemem Mac OS X 10.2 jako część Xcode , a później framework AppleScriptObjC , wydany w systemie Mac OS X 10.6 , umożliwił użytkownikom tworzenie aplikacji Cocoa przy użyciu AppleScript.
W artykule z 2006 roku Macworld umieścił AppleScript w swoim rankingu 30 najważniejszych do tej pory produktów Apple, umieszczając go na 17. miejscu.
W artykule dla Macworld z 2013 roku , doświadczony programista i komentator dla komputerów Mac, John Gruber, podsumował swoją refleksję na temat „nieprawdopodobnej trwałości AppleScript”: „Teoretycznie AppleScript mógłby być znacznie lepszy; w praktyce jest to jednak najlepsza rzecz, jaką mamy to działa. Stanowi przykład przewagi Maca nad iOS dla majsterkowiczów i zaawansowanych użytkowników”.
W październiku 2016 roku, wieloletni menedżer produktu AppleScript i ewangelista automatyzacji Sal Soghoian opuścił Apple, gdy jego stanowisko zostało wyeliminowane „z powodów biznesowych”. Weterani społeczności komputerów Mac, tacy jak John Gruber i Andy Ihnatko, ogólnie odpowiedzieli z niepokojem, kwestionując zaangażowanie Apple w społeczność programistów i profesjonalnych użytkowników. Starszy wiceprezes Apple ds. inżynierii oprogramowania, Craig Federighi, odpowiedział w e-mailu, mówiąc, że „Mamy wszelkie zamiary, aby kontynuować nasze wsparcie dla wspaniałych technologii automatyzacji w macOS!”, chociaż Jeff Gamet z The Mac Observer stwierdził, że niewiele to rozwiało jego wątpliwości o przyszłości automatyzacji Apple w ogóle, a AppleScript w szczególności. Na razie AppleScript pozostaje jednym ze składników technologii automatyzacji macOS, obok Automator , Shortcuts , Services i shell scripting .
Podstawowe koncepcje
AppleScript został zaprojektowany do użytku jako dostępny język skryptowy dla użytkowników końcowych, oferujący użytkownikom inteligentny mechanizm kontroli aplikacji oraz uzyskiwania dostępu do danych i dokumentów oraz ich modyfikowania. AppleScript wykorzystuje zdarzenia Apple , zestaw standardowych formatów danych, których system operacyjny Macintosh używa do wysyłania informacji do aplikacji, mniej więcej analogicznie do wysyłania zapytań XPath przez XML-RPC w świecie usług internetowych . Zdarzenia Apple pozwalają skryptowi pracować z wieloma aplikacjami jednocześnie, przekazując dane między nimi, dzięki czemu złożone zadania mogą być wykonywane bez interakcji człowieka. Na przykład AppleScript do tworzenia prostej galerii internetowej może wykonać następujące czynności:
- Otwórz zdjęcie w aplikacji do edycji zdjęć (wysyłając do tej aplikacji zdarzenie Open File Apple).
- Poleć aplikacji do edycji zdjęć, aby manipulowała obrazem (np. zmniejszyła jego rozdzielczość, dodała obramowanie, dodał kredyt fotograficzny)
- Poproś aplikację do edycji zdjęć, aby zapisała zmieniony obraz w pliku w innym folderze (wysyłając do tej aplikacji zdarzenie Zapisz i/lub Zamknij Apple).
- Wyślij nową ścieżkę pliku (za pośrednictwem innego zdarzenia Apple) do edytora tekstu lub aplikacji edytora internetowego
- Powiedz tej aplikacji edytora, aby zapisała łącze do zdjęcia w pliku HTML.
- Powtórz powyższe kroki dla całego folderu obrazów (setki, a nawet tysiące zdjęć).
- Prześlij plik HTML i folder z poprawionymi zdjęciami do witryny internetowej, wysyłając zdarzenia Apple do graficznego klienta FTP , używając wbudowanych poleceń AppleScript lub wysyłając zdarzenia Apple do narzędzi FTP systemu Unix.
Dla użytkownika setki lub tysiące kroków w wielu aplikacjach zostały zredukowane do jednej czynności uruchomienia skryptu, a zadanie jest wykonywane w znacznie krótszym czasie i bez możliwości przypadkowego błędu ludzkiego. Duży, złożony skrypt można opracować tylko raz, podczas gdy inne skrypty są używane wielokrotnie.
Elementy skryptowe aplikacji są widoczne w Słowniku skryptów aplikacji (dystrybuowanym jako część aplikacji), który można przeglądać w dowolnym edytorze skryptów . Elementy są zazwyczaj pogrupowane w zestawy, zgodnie z luźnymi zależnościami funkcjonalnymi między nimi. W każdym zestawie występują dwa podstawowe rodzaje elementów: klasy i polecenia.
- Klasy to obiekty z możliwością skryptowania — na przykład aplikacja do edycji tekstu prawie na pewno będzie miała klasy dla okien, dokumentów i tekstów — a te klasy będą miały właściwości, które można zmienić (rozmiar okna, kolor tła dokumentu, rozmiar czcionki tekstu itp.) , i może zawierać inne klasy (okno będzie zawierać jeden lub więcej dokumentów, dokument będzie zawierał tekst, obiekt tekstowy będzie zawierał akapity oraz słowa i znaki).
- Polecenia natomiast to instrukcje, które można przekazać obiektom skryptowym. Ogólnym formatem bloku AppleScript jest przekazanie skryptowi obiektu, aby uruchomił polecenie.
Wszystkie aplikacje skryptowe współdzielą kilka podstawowych poleceń i obiektów, zwykle nazywanych pakietem standardowym — polecenia otwierania, zamykania lub zapisywania pliku, drukowania, zamykania, ustawiania danych na zmienne — a także podstawowy obiekt aplikacji, który zapewnia skryptowe właściwości samej aplikacji. Wiele aplikacji ma liczne pakiety zdolne do wykonania dowolnego zadania, które może wykonać sama aplikacja. W wyjątkowych przypadkach aplikacje mogą obsługiwać wtyczki zawierające własne słowniki skryptowe.
AppleScript został zaprojektowany z możliwością intuicyjnego budowania skryptów poprzez rejestrowanie działań użytkownika. Taka możliwość nagrywania AppleScript musi być wbudowana w aplikację — aplikacja musi obsługiwać zdarzenia Apple i nagrywanie AppleScript; ponieważ Finder obsługuje nagrywanie AppleScript, może być przydatny w celach informacyjnych. Gdy Edytor AppleScript ( Edytor skryptów) jest otwarty i kliknięto przycisk Rejestruj, działania użytkownika dotyczące aplikacji do nagrywania są konwertowane na odpowiadające im polecenia AppleScript i wyświetlane w oknie Edytora skryptów. Powstały skrypt można zapisać i ponownie uruchomić, aby powielić oryginalne działania, lub zmodyfikować, aby był bardziej użyteczny.
Uwagi
Komentarze można zgłaszać na wiele sposobów. Jednowierszowy komentarz może zaczynać się od 2 myślników ( -- ). W AppleScript 2.0, wydanym po raz pierwszy w systemie Mac OS X Leopard , może również zaczynać się od znaku cyfry (#). Pozwala to na przechowywanie samodzielnego skryptu AppleScript jako wykonywalnego pliku tekstowego zaczynającego się od linii shebang #!/usr/bin/osascript
Przykład:
--This is a one line comment
# So is this! (in Mac OS X Leopard or later)
W przypadku komentarzy zajmujących wiele wierszy AppleScript używa nawiasów z gwiazdkami w środku. Przykład:
(* This is a
multiple
line
comment *)
Witaj świecie!
W AppleScript tradycyjne „Hello, World!” program może być napisany w wielu różnych formach, w tym:
display dialog "Hello, world!" -- a modal window with "OK" and "Cancel" buttons
-- or
display alert "Hello, world!" -- a modal window with a single "OK" button and an icon representing the app displaying the alert
-- or
say "Hello, world!" -- an audio message using a synthesized computer voice
AppleScript ma kilka opcji interfejsu użytkownika, w tym okna dialogowe, alerty i listę opcji do wyboru. (Znak ¬, utworzony przez wpisanie ⌥ Option+ returnw Edytorze skryptów, oznacza kontynuację pojedynczej instrukcji w wielu wierszach).
-- Dialog
set dialogReply to display dialog "Dialog Text" ¬
default answer "Text Answer" ¬
hidden answer false ¬
buttons {"Skip", "Okay", "Cancel"} ¬
default button "Okay" ¬
cancel button "Skip" ¬
with title "Dialog Window Title" ¬
with icon note ¬
giving up after 15
-- Choose from list
set chosenListItem to choose from list {"A", "B", "3"} ¬
with title "List Title" ¬
with prompt "Prompt Text" ¬
default items "B" ¬
OK button name "Looks Good!" ¬
cancel button name "Nope, try again" ¬
multiple selections allowed false ¬
with empty selection allowed
-- Alert
set resultAlertReply to display alert "Alert Text" ¬
as warning ¬
buttons {"Skip", "Okay", "Cancel"} ¬
default button 2 ¬
cancel button 1 ¬
giving up after 2
Każda metoda interakcji z użytkownikiem może zwrócić wartości klikniętych przycisków, wybranych pozycji lub wprowadzonego tekstu do dalszego przetwarzania. Na przykład:
display alert "Hello, world!" buttons {"Rudely decline", "Happily accept"}
set theAnswer to button returned of the result
if theAnswer is "Happily accept" then
beep 5
else
say "Piffle!"
end if
Metafora języka naturalnego
Podczas gdy zdarzenia Apple są sposobem na wysyłanie wiadomości do aplikacji, AppleScript to szczególny język przeznaczony do wysyłania zdarzeń Apple. Zgodnie z celem, jakim jest łatwość użycia dla początkujących, język AppleScript został zaprojektowany w oparciu o metaforę języka naturalnego , podobnie jak graficzny interfejs użytkownika został zaprojektowany w oparciu o metaforę pulpitu . Dobrze napisany AppleScript powinien być wystarczająco jasny, aby każdy mógł go przeczytać i zrozumieć, a także łatwo edytować. Język jest oparty w dużej mierze na języku HyperTalk HyperCard, rozszerzonym tak, aby odnosił się nie tylko do świata kart i stosów HyperCard, ale także teoretycznie do dowolnego dokumentu. W tym celu zespół AppleScript wprowadził model obiektowy AppleEvent (AEOM), który określa obiekty, które „znaje” każda konkretna aplikacja.
Sercem języka AppleScript jest użycie terminów, które działają jak rzeczowniki i czasowniki, które można łączyć. Na przykład zamiast innego czasownika do drukowania strony, dokumentu lub zakresu stron (takiego jak printPage, printDocument, printRange), AppleScript używa pojedynczego czasownika „print”, który można połączyć z obiektem, takim jak strona, dokument lub zakres stron.
print page 1
print document 2
print pages 1 thru 5 of document 2
Ogólnie rzecz biorąc, AEOM definiuje pewną liczbę obiektów — takich jak „dokument” lub „akapit” — oraz odpowiadające im działania — takie jak „wytnij” i „zamknij”. System definiuje również sposoby odwoływania się do właściwości obiektów, a więc można odwołać się do „trzeciego akapitu dokumentu „Dzień dobry””, czy „koloru ostatniego słowa przedniej szyby”. AEOM używa słownika aplikacji do powiązania zdarzeń Apple z terminami czytelnymi dla człowieka, umożliwiając tłumaczenie tam i z powrotem między czytelnymi dla człowieka zdarzeniami AppleScript i kodem bajtowym Apple. Aby dowiedzieć się, które elementy programu są skryptowalne, można przeglądać słowniki obsługiwanych aplikacji. (W aplikacjach Xcode i Script Editor znajduje się to w Plik → Otwórz słownik .)
Aby określić, która aplikacja ma być celem takiej wiadomości, AppleScript używa konstrukcji „tell”:
tell application "Microsoft Word"
quit
end tell
Alternatywnie, tell może być wyrażony w jednym wierszu za pomocą bezokolicznika :
tell application "Microsoft Word" to quit
W przypadku zdarzeń z pakietu „Core Suite” (aktywacja, otwieranie, ponowne otwieranie, zamykanie, drukowanie i zamykanie) aplikacja może być dostarczana jako bezpośredni obiekt poleceń przechodnich:
quit application "Microsoft Word"
Pojęcie hierarchii obiektów można wyrazić za pomocą zagnieżdżonych bloków:
tell application "QuarkXPress"
tell document 1
tell page 2
tell text box 1
set word 5 to "Apple"
end tell
end tell
end tell
end tell
Pojęcie hierarchii obiektów można również wyrazić za pomocą zagnieżdżonych fraz przyimkowych :
pixel 7 of row 3 of TIFF image "my bitmap"
które w innym języku programowania mogą być wyrażone jako sekwencyjne wywołania metod , tak jak w tym pseudokodzie :
getTIFF("my bitmap").getRow(3).getPixel(7);
AppleScript zawiera składnię liczenia porządkowego „pierwszy akapit”, a także kardynalnego „akapit pierwszy”. Podobnie, same liczby mogą być określane jako tekst lub numerycznie, wszystkie „pięć”, „piąty” i „5” są obsługiwane; są synonimami w AppleScript. Ponadto słowo „the” może być legalnie użyte w dowolnym miejscu w skrypcie w celu zwiększenia czytelności: nie ma to wpływu na funkcjonalność skryptu.
Przykłady skryptów
Kalkulator bezpieczeństwa:
tell application "Finder"
-- Set variables
set the1 to text returned of (display dialog "1st" default answer "Number here" buttons {"Continue"} default button 1)
set the2 to text returned of (display dialog "2nd" default answer "Number here" buttons {"Continue"} default button 1)
try
set the1 to the1 as integer
set the2 to the2 as integer
on error
display dialog "You may only input numbers into a calculator." with title "ERROR" buttons {"OK"} default button 1
return
end try
-- Add?
if the button returned of (display dialog "Add?" buttons {"No", "Yes"} default button 2) is "Yes" then
set ans to (the1 + the2)
display dialog ans with title "Answer" buttons {"OK"} default button 1
say ans
-- Subtract?
else if the button returned of (display dialog "Subtract?" buttons {"No", "Yes"} default button 2) is "Yes" then
set ans to (the1 - the2)
display dialog ans with title "Answer" buttons {"OK"} default button 1
say ans
-- Multiply?
else if the button returned of (display dialog "Multiply?" buttons {"No", "Yes"} default button 2) is "Yes" then
set ans to (the1 * the2)
display dialog ans with title "Answer" buttons {"OK"} default button 1
say ans
-- Divide?
else if the button returned of (display dialog "Divide?" buttons {"No", "Yes"} default button 2) is "Yes" then
set ans to (the1 / the2)
display dialog ans with title "Answer" buttons {"OK"} default button 1
say ans
else
delay 1
say "You haven't selected a function. The operation has cancelled."
end if
end tell
Prosta sekwencja okna dialogowego z nazwą użytkownika i hasłem . Tutaj nazwa użytkownika to John, a hasło to app123:
tell application "Finder"
set passAns to "app123"
set userAns to "John"
if the text returned of (display dialog "Username" default answer "") is userAns then
display dialog "Correct" buttons {"Continue"} default button 1
if the text returned of (display dialog "Username : John" & return & "Password" default answer "" buttons {"Continue"} default button 1 with hidden answer) is passAns then
display dialog "Access granted" buttons {"OK"} default button 1
else
display dialog "Incorrect password" buttons {"OK"} default button 1
end if
else
display dialog "Incorrect username" buttons {"OK"} default button 1
end if
end tell
Narzędzia programistyczne
Edytory skryptów
Edytory skryptów zapewniają ujednolicone środowisko programistyczne dla AppleScripts, w tym narzędzia do komponowania, sprawdzania, kompilowania, uruchamiania i debugowania skryptów. Zapewniają również mechanizmy otwierania i przeglądania słowników AppleScript z aplikacji skryptowych, zapisywania skryptów w wielu formatach (skompilowane pliki skryptów, pakiety aplikacji, pakiety skryptów i zwykłe pliki tekstowe) i zwykle zapewniają funkcje, takie jak podświetlanie składni i wstępnie napisane fragmenty kodu .
Od Apple
- Edytor AppleScript (Edytor skryptów)
- Edytor AppleScript spakowany z systemem macOS, zwany Edytorem AppleScript w systemie Mac OS X Snow Leopard (10.6) do systemu OS X Mavericks (10.9) oraz Edytor skryptów we wszystkich wcześniejszych i nowszych wersjach systemu macOS. Skrypty są pisane w oknach edycji dokumentów, w których można je kompilować i uruchamiać, a okna te zawierają różne panele, w których rejestrowane informacje, wyniki wykonywania i inne informacje są dostępne do celów debugowania. Dostęp do słowników skryptów i gotowych fragmentów kodu jest możliwy za pośrednictwem menu aplikacji. Od OS X Yosemite (10.10), Script Editor umożliwia pisanie zarówno w AppleScript, jak i JavaScript .
- Xkod
- Zestaw narzędzi do tworzenia aplikacji z funkcjami edycji AppleScripts lub tworzenia pełnoprawnych aplikacji napisanych w AppleScript.
Od stron trzecich
- Debuger skryptów , z Late Night Software
- Komercyjne IDE innej firmy dla AppleScript. Script Debugger to bardziej zaawansowane środowisko AppleScript, które umożliwia piszącemu skrypty debugowanie skryptów AppleScript za pomocą pojedynczych kroków , punktów przerwania , wchodzenia i wychodzenia z funkcji/podprogramów, śledzenia zmiennych itp. Script Debugger zawiera również zaawansowaną przeglądarkę słowników, która pozwala użytkownikowi zobaczyć słownik w akcji w rzeczywistych sytuacjach. Oznacza to, że zamiast tylko listy tego, co obejmuje słownik, można na przykład otworzyć dokument w Pages i zobaczyć, jak terminy słownika odnoszą się do tego dokumentu, co ułatwia określenie, których części słownika użyć. Script Debugger nie jest przeznaczony do tworzenia skryptów z GUI, innych niż podstawowe alerty i okna dialogowe, ale koncentruje się bardziej na kodowaniu i debugowaniu skryptów.
- Uśmiech i SmileLab
- Darmowe/komercyjne IDE innej firmy dla AppleScript, napisane w całości w AppleScript. Smile jest darmowy i przeznaczony głównie do programowania w AppleScript. SmileLab to komercyjne oprogramowanie z rozbudowanymi dodatkami do analizy numerycznej, tworzenia wykresów, automatyzacji maszyn i produkcji internetowej. Smile i SmileLab używają asortymentu różnych okien — okien AppleScript do uruchamiania i zapisywania pełnych skryptów, terminali AppleScript do testowania kodu linia po linii, okien Unicode do pracy z tekstem i XML. Użytkownicy mogą tworzyć złożone interfejsy — zwane oknami dialogowymi — w sytuacjach, w których wbudowane okna dialogowe w AppleScript są niewystarczające.
- ASObjC Explorer 4, od Shane Stanley
- Wycofane komercyjne IDE innej firmy dla AppleScript, zwłaszcza dla AppleScriptObjC . Główną funkcją jest rejestrowanie obiektów/zdarzeń Cocoa , debugowanie i uzupełnianie kodu. Użytkownicy mogą odczytywać zdarzenia i obiekty Cocoa, podobnie jak inne aplikacje ze skryptami. To narzędzie zostało pierwotnie zbudowane dla bibliotek AppleScript (dostępne w OS X Mavericks ). Biblioteki AppleScript są przeznaczone do wielokrotnego użytku składników AppleScript i obsługują wbudowany słownik AppleScript (sdef). ASObjC Explorer 4 może być również zewnętrznym edytorem skryptów Xcode.
- FaceSpan, z oprogramowania Late Night
- Wycofane komercyjne środowisko IDE innej firmy do tworzenia aplikacji AppleScript z graficznym interfejsem użytkownika.
Wyrzutnie skryptów
AppleScripts można uruchomić z edytora skryptów, ale zwykle wygodniej jest uruchamiać skrypty bezpośrednio, bez otwierania aplikacji edytora skryptów. Można to zrobić na kilka sposobów:
- Aplety
- Skrypty AppleScript można zapisać z edytora skryptów jako aplikacje (nazywane apletami lub dropletami, gdy akceptują dane wejściowe metodą przeciągania i upuszczania ). Aplety można uruchamiać z Docka , z paska narzędzi okien Findera , z Spotlight , z programów uruchamiających aplikacje innych firm lub z dowolnego innego miejsca, w którym można uruchamiać aplikacje.
- Działania dotyczące folderów
- Korzystając z akcji folderów AppleScript, skrypty można uruchamiać, gdy w folderach wystąpią określone zmiany (takie jak dodawanie lub usuwanie plików). Akcje folderu można przypisać, klikając folder i wybierając opcję Ustawienia akcji folderu... z menu kontekstowego; lokalizacja tego polecenia różni się nieznacznie w systemie Mac OS X 10.6.x od wcześniejszych wersji. To samo działanie można osiągnąć za pomocą narzędzi innych firm, takich jak Hazel.
- Wyrzutnie skrótów
- Skróty klawiaturowe można przypisywać do skryptów AppleScript w menu skryptów za pomocą panelu preferencji Ustawienia klawiatury i myszy w Preferencjach systemowych . Ponadto dostępne są różne narzędzia innych firm — Alfred , FastScripts, Keyboard Maestro , QuicKeys, Quicksilver , TextExpander — które mogą uruchamiać AppleScripts na żądanie przy użyciu kombinacji klawiszy.
- Menu skryptów
- To ogólnosystemowe menu zapewnia dostęp do skryptów AppleScript z paska menu systemu macOS, widocznego niezależnie od uruchomionej aplikacji. (Ponadto wiele aplikacji Apple, niektóre aplikacje innych firm i niektóre dodatki udostępniają własne menu skryptów. Można je aktywować na różne sposoby, ale wszystkie działają zasadniczo w ten sam sposób). Wybranie skryptu w menu skryptów powoduje uruchomienie to. Począwszy od systemu Mac OS X 10.6.x, ogólnosystemowe menu skryptów można włączyć w preferencjach Edytora skryptów ; we wcześniejszych wersjach systemu Mac OS X można go było włączyć za pomocą aplikacji AppleScript Utility. Po pierwszym włączeniu menu skryptów wyświetla domyślną bibliotekę dość ogólnych, funkcjonalnych skryptów AppleScript, które można również otworzyć w Edytorze skryptów i wykorzystać jako przykłady do nauki AppleScript. Skrypty można zorganizować w taki sposób, aby pojawiały się w menu tylko wtedy, gdy na pierwszym planie znajdują się określone aplikacje.
- Wiersz poleceń Unix i launchd
- AppleScripts można uruchamiać z wiersza poleceń systemu Unix lub z programu launchd w przypadku zaplanowanych zadań za pomocą narzędzia wiersza poleceń osascript. Narzędzie osascript może uruchamiać skompilowane skrypty (pliki .scpt) i zwykłe pliki tekstowe (pliki .applescript — są one kompilowane przez narzędzie w czasie wykonywania). Aplikacje skryptowe można uruchamiać za pomocą polecenia otwartego systemu Unix.
Powiązane problemy ze skryptami
- Biblioteki AppleScript
- Moduły AppleScript wielokrotnego użytku (dostępne od OS X Mavericks ), napisane w AppleScript lub AppleScriptObjC i zapisane jako pliki skryptów lub pakiety w określonych lokalizacjach, które można wywołać z innych skryptów. Po zapisaniu jako pakiet, biblioteka może zawierać plik słownika AppleScript (sdef), działając w ten sposób jak dodatek do skryptów, ale napisany w AppleScript lub AppleScriptObjC.
- Studio AppleScript
- Framework do dołączania interfejsów Cocoa do aplikacji AppleScript, część pakietu Xcode w systemie Mac OS X 10.4 i 10.5, obecnie przestarzały na rzecz AppleScriptObjC.
- AppleScriptObjC
- Cocoa rozwój ram oprogramowanie , zwane także AppleScript / Objective-C lub Asoc, część pakietu Xcode od Mac OS X Snow Leopard . AppleScriptObjC umożliwia AppleScripts bezpośrednie używanie klas i metod Cocoa. Poniższa tabela przedstawia dostępność AppleScriptObjC w różnych wersjach systemu macOS:
W Xcode | W apletach | W bibliotekach AppleScript |
W edytorze skryptów | |
---|---|---|---|---|
10,6 | ||||
10,7 | ||||
10,8 | ||||
10,9 | ||||
10.10 |
- Automatyzator
- Graficzne, modułowe środowisko edycyjne, w którym przepływy pracy są budowane z akcji. Ma na celu powielenie wielu funkcji AppleScript bez konieczności posiadania wiedzy programistycznej. Automator posiada akcję zaprojektowaną specjalnie do przechowywania i uruchamiania skryptów AppleScript dla zadań, które są zbyt złożone dla uproszczonej struktury Automatora.
- Skryptowalne aplikacje systemowe
- Te aplikacje działające tylko w tle, spakowane z systemem macOS, są używane, aby umożliwić AppleScript dostęp do funkcji, które normalnie nie byłyby skryptami. Począwszy od systemu Mac OS X 10.6.3 obejmują one skryptowe aplikacje VoiceOver (pakiet skryptów do obsługi słuchu i czytnika ekranu Braille'a), zdarzenia systemowe (kontrola aplikacji nie obsługujących skryptów oraz dostęp do niektórych funkcji systemowych i podstawowych operacji na plikach), narzędzie konfiguracji drukarki ( skryptowe narzędzie do obsługi zadań drukowania), Image Events (podstawowa obróbka obrazu), HelpViewer (skryptowalne narzędzie do wyświetlania ekranów pomocy), Database Events (minimalny interfejs bazy danych SQLite3) i AppleScript Utility (do tworzenia skryptów kilku preferencji związanych z AppleScript), a także jako kilka aplikacji użytkowych używanych przez system.
- Dodatki do skryptów (OSAX)
- Wtyczki do AppleScript opracowane przez firmę Apple lub strony trzecie. Zostały zaprojektowane w celu rozszerzenia wbudowanego zestawu poleceń, rozszerzenia funkcji AppleScript i uczynienia go nieco mniej zależnym od funkcjonalności zapewnianej przez aplikacje. macOS zawiera zbiór dodatków do skryptów nazywanych dodatkami standardowymi ( StandardAdditions.osax ), które dodają zestaw poleceń i klas, które nie są częścią podstawowych funkcji AppleScript, w tym okna dialogowe interakcji użytkownika, odczytywanie i zapisywanie plików, polecenia systemu plików, funkcje daty oraz operacje tekstowe i matematyczne; bez tego OSAX, AppleScript nie miałby możliwości wykonywania wielu podstawowych czynności, które nie są bezpośrednio zapewniane przez aplikację.
Podstawy językowe
Klasy (typy danych)
Chociaż aplikacje mogą definiować wyspecjalizowane klasy (lub typy danych), AppleScript ma również szereg klas wbudowanych. Te podstawowe klasy danych są bezpośrednio obsługiwane przez język i są powszechnie rozpoznawane przez aplikacje skryptowe. Najczęstsze z nich to:
- Obiekty podstawowe
-
application : obiekt aplikacji, używany głównie jako specyfikator dla instrukcji tell (
tell application "Finder" …
). - skrypt : obiekt skryptu. Obiekty skryptów to kontenery na skrypty. Każdy AppleScript tworzy obiekt skryptu po uruchomieniu, a obiekty skryptu mogą być tworzone w ramach AppleScripts.
- class : metaobiekt określający typ innych obiektów.
-
reference : obiekt, który zawiera nieoceniony specyfikator obiektu, który może, ale nie musi wskazywać na prawidłowy obiekt. Może być oceniany na żądanie, uzyskując dostęp do jego
contents
właściwości.
-
application : obiekt aplikacji, używany głównie jako specyfikator dla instrukcji tell (
- Standardowe obiekty danych
-
stała : stała wartość. Istnieje szereg stałych językowych zdefiniowane, takich jak
pi
,tab
ilinefeed
. -
boolean : wartość logiczna prawda/fałsz. Faktycznie podklasa od
constant
. -
Numer : a rzadko używane streszczenie nadklasą z
integer
ireal
. - liczba całkowita : liczba całkowita . Można nimi manipulować za pomocą wbudowanych operatorów matematycznych.
- real : liczba zmiennoprzecinkowa ( rzeczywista ). Można nimi manipulować za pomocą wbudowanych operatorów matematycznych.
- data : data i godzina.
-
tekst : tekst. W wersjach AppleScript wcześniejszych niż 2.0 (Mac OS X 10.4 i starsze)
text
klasa różniła się odstring
iUnicode text
, a trzy zachowywały się nieco inaczej; w wersji 2.0 (10.5) i nowszych wszystkie są synonimami, a cały tekst jest obsługiwany jako zakodowany w UTF-16 („ Unicode ”).
-
stała : stała wartość. Istnieje szereg stałych językowych zdefiniowane, takich jak
- Kontenery
- list : uporządkowana lista obiektów. Może zawierać dowolną klasę, w tym inne listy i klasy zdefiniowane przez aplikacje.
- rekord : lista obiektów z kluczami. Jak lista, z wyjątkiem ustrukturyzowanych jako pary klucz-wartość . Dostęp kluczowany w czasie wykonywania nie jest obsługiwany; wszystkie klucze muszą być stałymi identyfikatorami czasu kompilacji.
- System plików
- alias : odniesienie do obiektu systemu plików (pliku lub folderu). Alias zachowa swoje łącze do obiektu, jeśli obiekt zostanie przeniesiony lub zmieniona nazwa.
- file : odniesienie do obiektu systemu plików (pliku lub folderu). Jest to odwołanie statyczne i może wskazywać na obiekt, który aktualnie nie istnieje.
- Plik POSIX : odwołanie do obiektu systemu plików (pliku lub folderu), w postaci zwykłego tekstu, przy użyciu notacji w stylu Unix ( POSIX ) z ukośnikiem (/). Nie jest to prawdziwy typ danych, ponieważ AppleScript automatycznie konwertuje pliki POSIX na zwykłe pliki za każdym razem, gdy są używane.
- Różnorodny
- Kolor RGB : określa trójkę RGB (w 16-bitowym formacie z wysokimi kolorami ) do użycia w poleceniach i obiektach, które pracują z kolorami.
-
typy jednostek : klasa, która konwertuje jednostki standardowe. Na przykład wartość można zdefiniować jako
square yards
, a następnie przekonwertować nasquare feet
przez rzutowanie między typami jednostek (za pomocąas
operatora).
Struktury językowe
Wiele procesów AppleScript jest zarządzanych przez bloki kodu, gdzie blok zaczyna się poleceniem polecenia, a kończy instrukcją end polecenia . Najważniejsze struktury zostały opisane poniżej.
Warunkowe
AppleScript oferuje dwa rodzaje warunków.
-- Simple conditional
if x < 1000 then set x to x + 1
-- Compound conditional
if x is greater than 3 then
-- commands
else
-- other commands
end if
Pętle
Pętla powtarzania AppleScript występuje w kilku nieco innych odmianach. Wszystkie one wykonują kilka razy blok między powtórzonymi i końcowymi liniami powtórzeń . Pętla może zostać przedwcześnie zatrzymana komendą exit repeat .
Powtarzaj w nieskończoność.
repeat
-- commands to be repeated
end repeat
Powtórz daną liczbę razy.
repeat 10 times
-- commands to be repeated
end repeat
Pętle warunkowe. Blok wewnątrz powtarzaj while pętla jest wykonywana, dopóki warunek ma wartość true. Warunek jest ponownie oceniany po każdym wykonaniu bloku. Powtarzać aż do pętli jest inaczej identyczne, ale blok jest wykonywany tak długo, jak analizuje schemat stan false.
set x to 5
repeat while x > 0
set x to x - 1
end repeat
set x to 5
repeat until x ≤ 0
set x to x - 1
end repeat
Pętla ze zmienną. Podczas uruchamiania pętli zmienna jest przypisywana do wartości początkowej. Po każdym wykonaniu bloku do zmiennej dodawana jest opcjonalna wartość kroku. Wartość domyślna kroku to 1.
-- repeat the block 2000 times, i gets all values from 1 to 2000
repeat with i from 1 to 2000
-- commands to be repeated
end repeat
-- repeat the block 4 times, i gets values 100, 75, 50 and 25
repeat with i from 100 to 25 by -25
-- commands to be repeated
end repeat
Wymień listę. W każdej iteracji ustaw loopVariable na nowy element na podanej liście
set total to 0
repeat with loopVariable in {1, 2, 3, 4, 5}
set total to total + loopVariable
end repeat
Kierowanie aplikacji | Obsługa błędów |
---|---|
-- Simple form
tell application "Safari" to activate
-- Compound
tell application "MyApp"
-- commands for app
end tell
|
try
-- commands to be tested
on error
-- error commands
end try
|
Jedna ważna odmiana tej struktury bloków ma postać bloków on — end ... , które są używane do definiowania programów obsługi (podprogramów podobnych do funkcji). Programy obsługi zaczynają się od on functionName() i kończą na end functionName i nie są wykonywane jako część normalnego przepływu skryptu, chyba że zostaną wywołane z jakiegoś miejsca w skrypcie.
Obsługa funkcji | Blokowanie akcji folderu | Uruchom obsługę |
---|---|---|
on myFunction(parameters...)
-- subroutine commands
end myFunction
|
on adding folder items to thisFolder after receiving theseItems
-- commands to apply to the folder or items
end adding folder items to
|
on run
-- commands
end run
|
Programy obsługi mogą być również definiowane przy użyciu "to" zamiast "on" i mogą być napisane tak, aby akceptować parametry etykietowane, nieujęte w nawiasy.
Handler z oznaczonymi parametrami | Handler używający "to" i oznaczonych parametrów |
---|---|
on rock around the clock
display dialog (clock as string)
end rock
-- called with:
rock around the current date
|
to check for yourNumber from bottom thru top
if bottom ≤ yourNumber and yourNumber ≤ top then
display dialog "Congratulations! You scored."
end if
end check
--called with:
check for 8 from 7 thru 10
|
Istnieją cztery typy predefiniowanych programów obsługi w AppleScript — uruchom, otwórz, bezczynność i zakończ — z których każdy jest tworzony w taki sam sposób, jak procedura obsługi pokazana powyżej.
- Uruchom obsługę
- Definiuje główny kod skryptu, który jest wywoływany po uruchomieniu skryptu. Bloki obsługi uruchamiania są opcjonalne, chyba że do skryptu są przekazywane argumenty. Jeśli jawny blok obsługi uruchomienia zostanie pominięty, cały kod, który nie jest zawarty w blokach obsługi, jest wykonywany tak, jakby znajdował się w niejawnej procedurze obsługi.
- Otwórz obsługę
- Zdefiniowane za pomocą "przy otwarciu elementów".
on open theItems
repeat with thisItem in theItems
tell application "Finder" to update thisItem
end repeat
end open
Kiedy skrypt zawierający „otwartą procedurę obsługi” jest zapisywany jako aplet, staje się on dropletem. Droplet można rozpoznać w Finderze po jego ikonie, która zawiera strzałkę, wskazującą, że elementy mogą zostać upuszczone na ikonę. handler jest wykonywany, gdy pliki lub foldery są upuszczane na ikonę dropletu, referencje do elementów upuszczanych na ikonę dropletu są przekazywane do skryptu dropletu jako parametr otwartego handlera, droplet może być również uruchamiany w taki sam sposób jak zwykły aplet, wykonywanie procedury obsługi uruchomienia.
- Obsługa bezczynności
- Podprogram uruchamiany okresowo przez system, gdy aplikacja jest bezczynna.
on idle
--code to execute when the script's execution has completed
return 60 -- number of seconds to pause before executing idle handler again
end idle
Procedura obsługi bezczynności może być używana w apletach lub dropletach zapisanych jako aplety pozostające otwarte i jest przydatna w przypadku skryptów, które obserwują określone dane lub zdarzenia. Długość czasu bezczynności domyślnie wynosi 30 sekund, ale można ją zmienić, dołączając instrukcję „return x” na końcu podprogramu, gdzie x to liczba sekund, przez które system powinien odczekać przed ponownym uruchomieniem procedury obsługi.
- Zakończ obsługę
- Procedura obsługi, która jest uruchamiana, gdy aplet otrzymuje żądanie Quit. Może to służyć do zapisywania danych lub wykonywania innych końcowych zadań przed zakończeniem.
on quit
--commands to execute before the script quits
continue quit -- required for the script to actually quit
end quit
- Obiekty skryptów
Obiekty skryptów można zdefiniować jawnie za pomocą składni:
script scriptName
-- commands and handlers specific to the script
end script
Obiekty skryptów mogą korzystać z tych samych struktur „tell”, które są używane w obiektach aplikacji i mogą być ładowane z plików i zapisywane w nich. W niektórych przypadkach czas wykonywania w środowisku wykonawczym można skrócić, korzystając z obiektów skryptów.
Różne informacje
- Zmienne nie są ściśle typowane i nie muszą być deklarowane. Zmienne mogą przyjmować dowolny typ danych (w tym skrypty i funkcje). Poniższe polecenia są przykładami tworzenia zmiennych:
set variable1 to 1 -- create an integer variable called variable1 set variable2 to "Hello" -- create a text variable called variable2 copy {17, "doubleday"} to variable3 -- create a list variable called variable3 set {variable4, variable5} to variable3 -- copy the list items of variable3 into separate variables variable4 and variable5 set variable6 to script myScript -- set a variable to an instance of a script
- Obiekty skryptów są obiektami pełnymi — mogą hermetyzować metody i dane oraz dziedziczyć dane i zachowanie ze skryptu nadrzędnego.
- Podprogramów nie można wywoływać bezpośrednio z bloków tell aplikacji. W tym celu użyj słów kluczowych „mój” lub „mnie”.
tell application "Finder"
set x to my myHandler()
-- or
set x to myHandler() of me
end tell
on myHandler()
--commands
end myHandler
Użycie tej samej techniki do skryptów poleceń dodawania może zmniejszyć liczbę błędów i poprawić wydajność.
tell application "Finder"
set anyNumber to my (random number from 5 to 50)
end tell
Otwarta architektura skryptów
Ważnym aspektem implementacji AppleScript jest architektura Open Scripting Architecture ( OSA ). Firma Apple zapewnia OSA dla innych języków skryptowych i produktów do obsługi skryptów/automatyzacji innych firm, takich jak QuicKeys i UserLand Frontier, aby działały na równym poziomie z AppleScript. AppleScript został zaimplementowany jako komponent skryptowy , a podstawowe specyfikacje dotyczące łączenia takich komponentów z OSA były publiczne, umożliwiając innym programistom dodawanie własnych komponentów skryptowych do systemu. Publiczne interfejsy API klienta służące do ładowania, zapisywania i kompilowania skryptów działałyby tak samo dla wszystkich takich komponentów, co oznaczało również, że aplety i droplety mogłyby przechowywać skrypty w dowolnym z tych języków skryptowych.
Jedną z funkcji OSA są dodatki do skryptów lub OSAX for Open Scripting Architecture eXtension , które zostały zainspirowane poleceniami zewnętrznymi HyperCard . Dodatki do skryptów to biblioteki, które umożliwiają programistom rozszerzenie funkcji AppleScript. Polecenia zawarte jako dodatki do skryptów są dostępne w całym systemie i nie są zależne od aplikacji (zobacz także § Biblioteki AppleScript ). Edytor AppleScript może również bezpośrednio edytować i uruchamiać niektóre języki OSA.
JavaScript do automatyzacji
W systemie OS X Yosemite i nowszych wersjach macOS składnik JavaScript for Automation ( JXA ) pozostaje jedyną poważną alternatywą dla języka OSA dla AppleScript, chociaż wersje dla komputerów Macintosh Perl , Python , Ruby i Tcl obsługują natywne sposoby pracy ze zdarzeniami Apple bez bycia komponentami OSA.
JXA zapewnia również interfejs w języku obcym Objective-C (i C). Będąc środowiskiem opartym na silniku JavaScriptCore WebKit, zestaw funkcji JavaScript jest zsynchronizowany z systemowym silnikiem przeglądarki Safari. JXA zapewnia modułowy system JavaScript i możliwe jest również użycie CommonJS moduły poprzez browserify.
Zobacz też
- BBEdit — wysoce skryptowalny edytor tekstu
Bibliografia
Dalsza lektura
- „Przewodnik po języku AppleScript” . programista.apple.com . 2016 . Źródło 9 maja 2017 .Starsza wersja (2015) w formacie PDF dostępna pod adresem : CiteSeer x : 10.1.1.697.5220
- Munro, Mark Conway (2010). AppleScript . Dokumentacja programisty. Wileya. Numer ISBN 978-0-470-56229-1.
- Rosenthal, Hanaan; Sanderson, Hamish (2010). Dowiedz się AppleScript: kompleksowy przewodnik po skryptach i automatyzacji w systemie Mac OS X (wyd. trzecie). Naciśnij . Numer ISBN 978-1-4302-2361-0.
- Soghoian, Sal ; Cheeseman, Bill (2009). Seria szkoleniowa Apple: AppleScript 1-2-3 . Peachpit Prasa . Numer ISBN 978-0-321-14931-2.
- Kucharz, William (2007). "AppleScript" (PDF) . Historia języków programowania (HOPL III) . Obrady trzeciej konferencji ACM SIGPLAN. ŚP: 1–21. doi : 10.1145/1238844.1238845 . Numer ISBN 9781595937667. S2CID 220938191 .
- Ford Jr., Jerry Lee (2007). Programowanie AppleScript dla absolutnie początkujących . Technologia kursu . Numer ISBN 978-1-59863-384-9.
- Neuburg, Matt (2006). AppleScript: Ostateczny przewodnik . O'Reilly Media . Numer ISBN 0-596-10211-9.
- Goldstein, Adam (2005). AppleScript: brakujący podręcznik . Media O'Reilly. Numer ISBN 0-596-00850-3.
- Trinko, Tom (2004). AppleScript dla opornych . Dla manekinów . Numer ISBN 978-0-7645-7494-8.
Zewnętrzne linki
- AppleScript w Curlie (treść na stronie jest nieaktualna od lat)
- "Przegląd AppleScript" . programista.apple.com . 2007 . Źródło 7 listopada 2020 .
- „AppleScript dla programistów Pythona (wykres porównawczy)” . aurelio.net . 2005 . Źródło 9 maja 2017 .
- „Skrypty AppleScript Douga dla iTunes” . dougscripts.com . Źródło 9 maja 2017 .
- „Automatyzacja systemu Mac OS X” . macosautomation.pl . Źródło 9 maja 2017 .
- "Społeczność MacScriptera AppleScript" . macscripter.net . Źródło 9 maja 2017 .