AppleScript - AppleScript

AppleScript
Paradigma Természetes nyelvű programozás , Scripting
Fejlesztő Apple Inc.
Először jelent meg 1993 ; 28 évvel ezelőtt ( 1993 )
Stabil kiadás
2.5 / 2014. október 16 .; 6 évvel ezelőtt ( 2014-10-16 )
Gépelési fegyelem Gyenge , dinamikus
OS Rendszer 7 , Mac OS 8 , Mac OS 9 , macOS
Engedély Saját tulajdonú (az alkatrészek APSL alatt kaphatók )
Fájlnévkiterjesztések .scpt, .scptd, .applescript
Weboldal https://developer.apple.com/applescript
Befolyásolta
Természetes nyelv , HyperTalk

Az AppleScript az Apple Inc. által létrehozott szkriptnyelv, amely megkönnyíti a scriptelhető Mac alkalmazások automatikus vezérlését . Először a 7 -es rendszerben vezették be , jelenleg a macOS minden verziójában megtalálható a rendszer -automatizálási eszközök csomagjának részeként. Az "AppleScript" kifejezés utalhat magára a nyelvre, a nyelven írt egyedi szkriptre vagy informálisan a nyelv alapjául szolgáló macOS Open Scripting Architecture -re.

Áttekintés

Az AppleScript elsősorban egy szkriptnyelv, amelyet az Apple fejlesztett ki az alkalmazások közötti kommunikációra (IAC) az Apple események használatával . Az AppleScript kapcsolódik az Apple eseményekhez, de eltér azoktól. Az Apple események célja az adatok cseréje és vezérlése más alkalmazások között az ismétlődő feladatok automatizálása érdekében.

Az AppleScript rendelkezik bizonyos feldolgozási képességekkel, amellett, hogy Apple eseményeket küld és fogad az alkalmazásokhoz. Az AppleScript képes alapvető számításokat és szövegfeldolgozást végezni, és bővíthető, lehetővé téve olyan szkript -kiegészítések használatát, amelyek új funkciókat adnak hozzá a nyelvhez. Az AppleScript azonban elsősorban az alkalmazások és folyamatok funkcionalitására támaszkodik az összetett feladatok kezeléséhez. Ennek strukturált parancs nyelvet, AppleScript lehet hasonlítani a Unix kagyló , a Microsoft Windows Script Host , vagy az IBM REXX a célját, de ez különbözik mind a három. Funkcionalitása szempontjából elengedhetetlen, hogy a Macintosh alkalmazások "szótárakat" tesznek közzé a címezhető objektumokról és műveletekről.

Az AppleScript szintaxisa tartalmaz néhány eljárási programozási elemet , objektum-orientált programozást (különösen a szkriptobjektumok felépítésekor) és természetes nyelvi programozási tendenciákat, de nem felel meg szigorúan ezeknek a programozási paradigmáknak .

Történelem

Az 1980-as évek Apple úgy használja HyperCard „s HyperTalk programozási nyelv , mint a standard nyelv végfelhasználói fejlesztése az egész társaság, és belül a klasszikus Mac OS operációs rendszer, valamint a folyamatok közötti kommunikációt az Apple és a nem-Apple termékeket. A HyperTalk programot kezdők használhatják HyperCard verem programozására. Az Apple mérnökei felismerték, hogy hasonló, de objektum-orientáltabb szkriptnyelv bármilyen alkalmazáshoz használható , és az AppleScript projekt a Macintosh egészének korszerűsítésére irányuló kutatási erőfeszítés eredményeként született meg, és végül részévé vált. a 7 -es rendszerből .

Az AppleScript 1993 októberében jelent meg a 7.1.1 rendszer részeként (System 7 Pro, az első nagyobb frissítés a System 7 -re). A QuarkXPress (ver. 3.2) az egyik első nagy szoftver alkalmazás volt, amely támogatta az AppleScriptet. Ez pedig ahhoz vezetett, hogy az AppleScript széles körben elterjedt a kiadói és a nyomdai előkészítés világában, gyakran összekötve összetett munkafolyamatokat. Ez kulcsfontosságú tényező volt a Macintosh erőfölényének megőrzésében a kiadásban és a nyomdai előkészítésben, még azután is, hogy a QuarkXpress és más kiadói alkalmazásokat áthelyezték a Microsoft Windows rendszerbe.

Az Apple jövő generációs operációs rendszerének jövőjét illető bizonytalanság után a Mac OS X -re (2002 körül) és annak kakaókeretére való áttérés nagymértékben növelte az AppleScript hasznosságát és rugalmasságát. A kakaóalkalmazások lehetővé teszik az alkalmazásfejlesztők számára, hogy minimális erőfeszítéssel megvalósítsák alkalmazásuk alapvető szkriptálhatóságát, és ezzel bővítsék a közvetlenül szkriptelhető alkalmazások számát. Ugyanakkor az Unix alapjaira való áttérés és az AppleScript azon képessége, hogy a Unix parancsokat közvetlenül, a do shell scriptparanccsal futtassa , lehetővé tette az AppleScripts számára, hogy sokkal jobban ellenőrizze magát az operációs rendszert. A Mac OS X 10.2 -vel az Xcode részeként megjelent AppleScript Studio , később a Mac OS X 10.6 -ban megjelent AppleScriptObjC keretrendszer lehetővé tette a felhasználók számára, hogy kakaóalkalmazásokat készítsenek az AppleScript használatával.

Egy 2006 -os cikkében a Macworld felvette az AppleScriptet az Apple eddigi 30 legjelentősebb terméke közé, így a 17. helyen áll.

A Macworld 2013 -ban megjelent cikkében a veterán Mac szoftverfejlesztő és kommentátor, John Gruber úgy fejezte be az "AppleScript valószínűtlen fennmaradásáról" szóló gondolatait, hogy megjegyezte: "Elméletileg az AppleScript sokkal jobb lehet; a gyakorlatban azonban ez a legjobb Ez példázza a Mac előnyeit az iOS -hez képest a barkácsolók és a haladó felhasználók számára. "

2016 októberében az AppleScript hosszú távú termékmenedzsere és automatizálási evangélista, Sal Soghoian távozott az Apple -től, amikor pozícióját "üzleti okokból" megszüntették. A Mac közösség veteránjai, mint John Gruber és Andy Ihnatko általában aggodalommal válaszoltak, és megkérdőjelezték az Apple elkötelezettségét a fejlesztői közösség és a profi felhasználók iránt. Apple alelnöke szoftverfejlesztés Craig Federighi válaszolt egy e-mailt, hogy „Van minden szándék, hogy továbbra is támogatja a nagy automatizálási technológiák MacOS!”, Bár Jeff Gamet meg a Mac Observer úgy vélte, hogy ez nem sokat csillapít a kétség az Apple automatizálásának jövőjéről általában és különösen az AppleScriptről. Egyelőre az AppleScript továbbra is a macOS automatizálási technológiák egyik összetevője, az Automator , a parancsikonok , a szolgáltatások és a shell script mellett .

Alapfogalmak

Az AppleScriptet úgy tervezték, hogy hozzáférhető végfelhasználói szkriptnyelvként használható legyen, intelligens mechanizmust kínálva a felhasználóknak az alkalmazások vezérlésére, valamint az adatok és dokumentumok elérésére és módosítására. Az AppleScript az Apple eseményeket használja , szabványosított adatformátumok halmazát, amelyeket a Macintosh operációs rendszer használ az adatok küldésére az alkalmazásokhoz, nagyjából hasonlóan az XPath lekérdezések XML-RPC-n keresztüli küldéséhez a webszolgáltatások világában . Az Apple -események lehetővé teszik, hogy egy szkript egyszerre több alkalmazással működjön, és adatokat továbbítson közöttük, így az összetett feladatok emberi beavatkozás nélkül is elvégezhetők. Például egy egyszerű webes galéria létrehozására szolgáló AppleScript a következőket teheti:

  1. Nyisson meg egy fényképet egy képszerkesztő alkalmazásban (az alkalmazás Open File Apple eseményének elküldésével ).
  2. Mondja meg a képszerkesztő alkalmazásnak, hogy manipulálja a képet (pl. Csökkentse a felbontását, adjon hozzá szegélyt, adjon hozzá fényképhitelet)
  3. Mondja meg a képszerkesztő alkalmazásnak, hogy mentse el a megváltozott képet egy fájlba egy másik mappába (küldje el az alkalmazásnak a Mentés és/vagy az Apple bezárása eseményt).
  4. Küldje el az új fájl elérési útját (egy másik Apple eseményen keresztül) egy szövegszerkesztőnek vagy webszerkesztő alkalmazásnak
  5. Mondja meg a szerkesztő alkalmazásnak, hogy írjon egy linket a fényképhez egy HTML fájlba.
  6. Ismételje meg a fenti lépéseket egy teljes képmappához (több száz vagy akár ezer fényképhez).
  7. Töltse fel a módosított fényképek HTML-fájlját és mappáját egy webhelyre, az Apple eseményeinek grafikus FTP- ügyfélre történő küldésével , a beépített AppleScript-parancsok használatával vagy az Apple-események Unix FTP-segédprogramokhoz való elküldésével.

A felhasználó számára több száz vagy ezer lépés több alkalmazásban lecsökkent a szkript egyetlen futtatására, és a feladat sokkal rövidebb idő alatt, és véletlenszerű emberi hiba nélkül valósul meg. Egy nagy komplex szkriptet csak egyszer lehet futtatni, míg más szkripteket újra és újra használnak.

Egy alkalmazás parancsfájl elemei láthatók az alkalmazás Scripting Dictionary -jében (az alkalmazás részeként terjesztve), amely bármely szkriptszerkesztőben megtekinthető . Az elemeket általában lakosztályokba csoportosítják , a köztük lévő laza funkcionális kapcsolatok szerint. Minden alaptípusban két alapvető elem létezik: osztályok és parancsok.

  • Az osztályok írható objektumok - például egy szövegszerkesztő alkalmazás szinte biztosan tartalmaz osztályokat az ablakokhoz, dokumentumokhoz és szövegekhez -, és ezeknek az osztályoknak olyan tulajdonságai lesznek, amelyeket meg lehet változtatni (ablakméret, dokumentum háttérszíne, betűméret stb.) , és tartalmazhat más osztályokat is (egy ablak egy vagy több dokumentumot, egy dokumentum szöveget, egy szöveges objektum bekezdéseket, szavakat és karaktereket tartalmaz).
  • Ezzel szemben a parancsok parancsok , amelyek parancsfájlokkal írható objektumokhoz adhatók. Az általános formátum a blokk AppleScript hogy elmondja szkriptelhető objektumot futtatni egy parancsot.

Minden szkriptelhető alkalmazás megoszt néhány alapvető parancsot és objektumot, amelyeket általában Standard Suite -nak hívnak - fájlok megnyitására, bezárására vagy mentésére, valami kinyomtatására, kilépésre, az adatok változókra állítására vonatkozó parancsokat, valamint egy alapvető alkalmazásobjektumot, amely megadja a magának az alkalmazásnak a leírható tulajdonságai. Sok alkalmazásnak számos csomagja van, amelyek képesek bármilyen feladat elvégzésére, amelyet maga az alkalmazás is elvégezhet. Kivételes esetekben az alkalmazások támogathatnak olyan beépülő modulokat, amelyek saját szkript szótáraikat tartalmazzák.

Az AppleScriptet úgy tervezték, hogy intuitív módon készítsen szkripteket a felhasználói műveletek rögzítésével. Az ilyen AppleScript rögzíthetőséget be kell építeni az alkalmazásba - az alkalmazásnak támogatnia kell az Apple eseményeit és az AppleScript rögzítését; mivel a Finder támogatja az AppleScript felvételt, hasznos lehet referenciaként. Amikor az AppleScript Editor (Script Editor) meg van nyitva, és a Record gombra kattint, az írható alkalmazások felhasználói műveletei a megfelelő AppleScript parancsokká alakulnak át, és a Script Editor ablakba kerülnek. A kapott szkript menthető és újra futtatható az eredeti műveletek megismétlésére, vagy módosítható, hogy általánosságban hasznos legyen.

Hozzászólások

A megjegyzéseket többféleképpen is meg lehet tenni. Az egysoros megjegyzés 2 kötőjellel ( - ) kezdődhet . Az AppleScript 2.0 -ban, amelyet először a Mac OS X Leopard -ban adtak ki , ez is számjeggyel kezdődhet (#). Ez lehetővé teszi egy önálló AppleScript-szkript tárolását végrehajtható szövegfájlként, amely a shebang sorral kezdődik. #!/usr/bin/osascript Példa:

--This is a one line comment
# So is this! (in Mac OS X Leopard or later)

A több sort tartalmazó megjegyzésekhez az AppleScript zárójeleket használ, amelyekben csillag szerepel. Példa:

(* This is a
multiple
line
comment *)

Helló Világ!

Az AppleScriptben a hagyományos "Hello, World!" A program sokféle formában írható, többek között:

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

Az AppleScript számos felhasználói felület -opciót kínál, beleértve a párbeszédpaneleket, figyelmeztetéseket és a választási listát. (A ¬ karakter, amelyet a ⌥ Option+ beírásával állítottak elő returna Script Editorban, egyetlen utasítás folytatását jelenti több sorban.)

-- 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

Minden felhasználói interakciós módszer visszaadhatja a kattintott gombok értékét, a kiválasztott elemeket vagy a beírt szöveget további feldolgozás céljából. Például:

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

Természetes nyelv metafora

Míg az Apple események az üzenetek alkalmazásba küldésének egyik módja, addig az AppleScript egy bizonyos nyelv, amelyet az Apple események küldésére terveztek. A kezdők könnyű használatának céljával összhangban az AppleScript nyelvét a természetes nyelv metaforájára tervezték , akárcsak a grafikus felhasználói felületet az asztali metaforára . A jól megírt AppleScriptnek elég világosnak kell lennie ahhoz, hogy bárki el tudja olvasni és megértse, és könnyen szerkesztheti. A nyelv nagyrészt a HyperCard HyperTalk nyelvén alapul, amely nemcsak a kártyák és kötegek HyperCard világára vonatkozik, hanem elméletileg bármilyen dokumentumra is. Ebből a célból az AppleScript csapata bemutatta az AppleEvent Object Model (AEOM) modellt, amely meghatározza az adott alkalmazás által "ismert" objektumokat.

Az AppleScript nyelv szíve a kifejezések használata, amelyek főnévként és igeként kombinálhatók. Például az Apple, az oldalak, dokumentumok vagy oldalak nyomtatásához használt más ige helyett (például printPage, printDocument, printRange) az AppleScript egyetlen "print" igét használ, amely kombinálható egy objektummal, például egy oldallal, dokumentumot vagy oldalak sorát.

print page 1

print document 2

print pages 1 thru 5 of document 2

Általában az AEOM számos objektumot definiál - például "dokumentum" vagy "bekezdés" - és a megfelelő műveleteket, például "kivágást" és "bezárást". A rendszer meghatározza az objektumok tulajdonságaira való hivatkozás módját is, így hivatkozhatunk a "Jó nap" dokumentum harmadik bekezdésére "vagy az" első ablak utolsó szavának színére ". AEOM használ egy alkalmazást szótár társítani az Apple események ember által olvasható feltételeket, így a fordítás között oda-vissza, ember által olvasható AppleScript és bytecode Apple eseményeket. Annak kiderítéséhez, hogy a program mely elemei írhatók, megtekinthetők a támogatott alkalmazásokhoz tartozó szótárak. (Az Xcode és Script Editor alkalmazásokban ez a Fájl → Szótár megnyitása alatt található .)

Az AppleScript egy "tell" konstrukciót használ annak meghatározásához, hogy melyik alkalmazás legyen az ilyen üzenet célpontja:

tell application "Microsoft Word"
  quit
end tell

Alternatív megoldásként az tell kifejezhető egy sorban egy infinitívum használatával :

tell application "Microsoft Word" to quit

A "Core Suite" eseményeiben (aktiválás, megnyitás, újranyitás, bezárás, nyomtatás és kilépés) az alkalmazás közvetlen objektumként szállítható a tranzitív parancsokhoz:

quit application "Microsoft Word"

A koncepció egy tárgy hierarchia lehet kifejezni a beágyazott blokkok:

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

A koncepció egy tárgy hierarchia is ki lehet fejezni a beágyazott prepozíciós mondatok :

pixel 7 of row 3 of TIFF image "my bitmap"

amelyet egy másik programozási nyelven szekvenciális metódushívásokként lehet kifejezni , például ebben az álkódban :

getTIFF("my bitmap").getRow(3).getPixel(7);

Az AppleScript magában foglalja a rendszámlálás szintaxisát, az "első bekezdést", valamint a kardinális "első bekezdést". Hasonlóképpen, maguk a számok szövegként vagy számszerűen is hivatkozhatnak, az "öt", az "ötödik" és az "5" mind támogatottak; ezek az AppleScript szinonimái. Ezenkívül a "the" szó legálisan használható a szkriptben bárhol az olvashatóság javítása érdekében: nincs hatással a szkript funkcionalitására.

Példák a szkriptekre

Egy hibamentes számológép:

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

Egyszerű felhasználónév és jelszó párbeszédpanel -sorozat. Itt a felhasználónév John, a jelszó pedig 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

Fejlesztési eszközök

Forgatókönyv -szerkesztők

A szkriptszerkesztők egységes programozási környezetet biztosítanak az AppleScripts számára, beleértve a szkriptek összeállításához, érvényesítéséhez, fordításához, futtatásához és hibakereséséhez szükséges eszközöket. Emellett mechanizmusokat kínálnak az AppleScript szótárak szkriptelhető alkalmazásokból történő megnyitására és megtekintésére, a szkriptek számos formátumban történő mentésére (összeállított szkriptfájlok, alkalmazáscsomagok, szkriptcsomagok és egyszerű szöveges fájlok), és általában olyan funkciókat is tartalmaznak, mint a szintaxis kiemelése és az előre írt kódrészletek .

Az Apple -től

AppleScript szerkesztő (Script Editor)
A MacOS -hoz csomagolt AppleScript szerkesztő , az AppleScript Editor a Mac OS X Snow Leopard (10.6) -ban az OS X Mavericks (10.9) és a Script Editor segítségével a macOS korábbi és későbbi verzióiban. A szkriptek dokumentumszerkesztő ablakokban vannak írva, ahol össze lehet állítani és futtatni, és ezek az ablakok különböző paneleket tartalmaznak, amelyekben naplózott információk, végrehajtási eredmények és egyéb információk állnak rendelkezésre hibakeresési célokra. A parancsfájl -szótárakhoz és az előre megírt kódrészletekhez az alkalmazásmenükben lehet hozzáférni. Az OS X Yosemite (10.10) óta a Script Editor lehetővé teszi az AppleScript és a JavaScript írást is .
Xcode
Eszközkészlet alkalmazások fejlesztéséhez, amelyek az AppleScripts szerkesztésének funkcióival vagy az AppleScript-sel írt teljes értékű alkalmazások létrehozásával rendelkeznek.

Harmadik felektől

Script Debugger , a Late Night Software -től
Harmadik féltől származó kereskedelmi IDE az AppleScript számára. A Script Debugger egy fejlettebb AppleScript környezet, amely lehetővé teszi a szkriptíró számára az AppleScriptek hibakeresését egyetlen lépéssel , töréspontokkal , funkciók/alprogramok be- és kilépésével, változó követéssel stb. A Script Debugger egy fejlett szótárböngészőt is tartalmaz, amely lehetővé teszi a felhasználó számára, hogy a szótár a valós helyzetekben. Vagyis a szótár által lefedett felsorolás helyett például megnyithat egy dokumentumot a Pages -ben , és megnézheti, hogyan vonatkoznak a szótár kifejezései az adott dokumentumra, így könnyebben meghatározható, hogy a szótár mely részeit használja. A Script Debugger nem az alapvető riasztásokon és párbeszédablakokon kívül GUI -val rendelkező szkriptek létrehozására készült, hanem inkább a szkriptek kódolására és hibakeresésére összpontosít.
Mosoly és SmileLab
Harmadik féltől származó ingyenes/kereskedelmi IDE az AppleScript számára, maga az AppleScript-ben írva. A Smile ingyenes, és elsősorban az AppleScript fejlesztésére készült. A SmileLab egy kereskedelmi szoftver, amely kiterjedt kiegészítésekkel rendelkezik a numerikus elemzésekhez, grafikonokhoz, gépi automatizáláshoz és webes gyártáshoz. A Smile és a SmileLab különböző ablakok választékát használja-AppleScript ablakok a teljes szkriptek futtatásához és mentéséhez, AppleScript terminálok a kód soronkénti teszteléséhez, Unicode ablakok szöveggel és XML-sel való munkához. A felhasználók bonyolult interfészeket-úgynevezett párbeszédpaneleket-hozhatnak létre olyan helyzetekben, amikor az AppleScript beépített párbeszédpanelei nem elegendőek.
ASObjC Explorer 4, Shane Stanley
Megszűnt harmadik féltől származó kereskedelmi IDE az AppleScript számára, különösen az AppleScriptObjC esetében . A fő jellemző a kakaó -objektum/eseménynaplózás, hibakeresés és kódkiegészítés. A felhasználók olvashatnak kakaóeseményeket és objektumokat, mint más szkriptelhető alkalmazások. Ezt az eszközt eredetileg az AppleScript Libraries számára készítették (elérhető az OS X Mavericks rendszerben ). Az AppleScript Libraries célja az újra felhasználható AppleScript-összetevők létrehozása, és támogatja a beépített AppleScript szótárt (sdef). Az ASObjC Explorer 4 külső Xcode szkriptszerkesztő is lehet.
FaceSpan, a Late Night Software -től
Megszűnt harmadik féltől származó kereskedelmi IDE grafikus felhasználói felülettel rendelkező AppleScript-alkalmazások létrehozásához.

Forgatókönyv -indítók

Az AppleScripts parancsfájl -szerkesztőből futtatható, de általában kényelmesebb a parancsfájlok közvetlen futtatása anélkül, hogy megnyitná a szkriptszerkesztő alkalmazást. Erre számos lehetőség van:

Almák
Az AppleScriptek menthetők a parancsfájl -szerkesztőből alkalmazásokként ( kisalkalmazásoknak vagy cseppeknek, ha elfogadják az áthúzással történő bevitelt ). Az applikációk futtathatók a dokkolóból , a Finder ablakok eszköztárából , a Spotlightból , harmadik féltől származó alkalmazásindítókból vagy bármely más olyan helyről, ahol az alkalmazások futtathatók.
Mappa műveletek
Az AppleScript mappaműveleteivel szkriptek indíthatók, amikor a mappákban bizonyos változások történnek (például fájlok hozzáadása vagy eltávolítása). A mappaműveletek hozzárendeléséhez kattintson egy mappára, és válassza a Mappa műveletek beállítása ... lehetőséget a helyi menüből; ennek a parancsnak a helye kissé eltér a Mac OS X 10.6.x rendszerben a korábbi verziótól. Ugyanez a művelet érhető el olyan harmadik féltől származó segédprogramokkal, mint a Hazel.
Gyorsbillentyűk
Billentyűparancsok lehet rendelni AppleScriptet a script menü segítségével a billentyűzet és egér beállításai tulajdonságpanelt a System Preferences . Ezen kívül különféle külső segédprogramok is rendelkezésre állnak- Alfred , FastScripts, Keyboard Maestro , QuicKeys, Quicksilver , TextExpander-, amelyek igény szerint futtathatják az AppleScripteket a billentyűkombinációk használatával.
Szkript menü
Ez a rendszerszintű menü hozzáférést biztosít az AppleScriptekhez a macOS menüsoráról, függetlenül attól, hogy melyik alkalmazás fut. (Ezenkívül sok Apple-alkalmazás, néhány harmadik féltől származó alkalmazás és egyes kiegészítők saját szkriptmenüket biztosítanak. Ezeket különböző módon lehet aktiválni, de mindegyik lényegében azonos módon működik.) A szkript menüben a szkript kiválasztása elindul azt. A Mac OS X 10.6.x óta a rendszerre kiterjedő szkriptmenü engedélyezhető a Script Editor beállításaiból ; a Mac OS X korábbi verzióiban az AppleScript Utility alkalmazásból engedélyezhető. Amikor először engedélyezi, a szkript menü megjeleníti az alapértelmezett, meglehetősen általános, funkcionális AppleScripts könyvtárat, amely a Script Editorban is megnyitható, és példaként használható az AppleScript elsajátítására. A szkripteket úgy lehet megszervezni, hogy csak akkor jelenjenek meg a menüben, ha bizonyos alkalmazások vannak előtérben.
Unix parancssor és indítás
Az AppleScripts futtatható a Unix parancssorból, vagy az elindított ütemezett feladatokhoz az osascript parancssori eszköz használatával. A osascript eszköz futtathat fordított szkripteket (.scpt fájlokat) és egyszerű szöveges fájlokat (.applescript fájlokat - ezeket az eszköz futás közben fordítja le). A szkriptalkalmazások a Unix open paranccsal futtathatók.

Kapcsolódó parancsfájl -problémák

AppleScript könyvtárak
Újrafelhasználható AppleScript modulok (elérhetőek az OS X Mavericks óta ), amelyek AppleScript vagy AppleScriptObjC nyelven íródtak, és szkriptfájlokként vagy csomagokként kerültek mentésre bizonyos helyeken, amelyek más szkriptekből is hívhatók. Csomagként mentve a könyvtár tartalmazhat egy AppleScript szótárfájlt (sdef), így úgy működik, mint egy szkript -kiegészítés, de AppleScript vagy AppleScriptObjC nyelven íródott.
AppleScript Studio
Keretrendszer a kakaó -interfészek AppleScript -alkalmazásokhoz való csatolásához, amely az Xcode csomag része a Mac OS X 10.4 és 10.5 rendszerben, mára megszűnt az AppleScriptObjC javára.
AppleScriptObjC
A Cocoa fejlesztés szoftver keretrendszer , más néven AppleScript / Objective-C vagy Asoc része a Xcode csomag óta Mac OS X Snow Leopard . Az AppleScriptObjC lehetővé teszi, hogy az AppleScripts közvetlenül használja a kakaó osztályokat és módszereket. Az alábbi táblázat az AppleScriptObjC elérhetőségét mutatja a macOS különböző verzióiban:
Ahol az AppleScriptObjC használható minden macOS verzióban
A Xcode Kisalkalmazásokban Az AppleScript
könyvtárakban
A Script Editorban
10.6 Igen
10.7 Igen Igen
10.8 Igen Igen
10.9 Igen Igen Igen
10.10 Igen Igen Igen Igen
Automator
Grafikus, moduláris szerkesztési környezet, amelyben a munkafolyamatok műveletekből épülnek fel . Az AppleScript számos funkcióját meg kívánja másolni anélkül, hogy programozási ismeretekre lenne szükség. Az Automatornak van egy művelete, amelyet kifejezetten az AppleScriptek tárolására és futtatására terveztek, olyan feladatokhoz, amelyek túl bonyolultak az Automator egyszerűsített keretrendszeréhez.
Szkriptelhető alapvető rendszer alkalmazások
Ezek a csak háttéralkalmazások, amelyek macOS-szal vannak csomagolva, arra szolgálnak, hogy az AppleScript hozzáférhessen olyan funkciókhoz, amelyek általában nem írhatók le. A Mac OS X 10.6.3-as verziójától kezdve tartalmazzák a VoiceOver szkriptelhető alkalmazásait (szkriptelhető hang- és Braille-képernyőolvasó csomag), a Rendezvényeseményeket (a nem szkriptelhető alkalmazások vezérlése, valamint bizonyos rendszerfunkciókhoz és alapvető fájlműveletekhez való hozzáférés), a Nyomtatóbeállító segédprogramot ( szkriptelhető segédprogram nyomtatási feladatok kezelésére), Képesemények (alapvető képmanipuláció), HelpViewer (szkriptelhető segédprogram a súgó megjelenítéséhez), Adatbázis -események (minimális SQLite3 adatbázis -felület) és az AppleScript segédprogram (néhány AppleScript -hez kapcsolódó beállítás szkripteléséhez), valamint néhány, a rendszer által használt segédprogramként.
Szkript -kiegészítések (OSAX)
Az Apple vagy harmadik felek által kifejlesztett beépülő modulok az AppleScripthez. Úgy tervezték, hogy kibővítsék a beépített parancskészletet, bővítve az AppleScript funkcióit, és némileg kevésbé függve az alkalmazások által biztosított funkcióktól. A macOS szabványos kiegészítéseknek ( StandardAdditions.osax ) nevezett parancsfájl -kiegészítések gyűjteményét tartalmazza , amely olyan parancsokat és osztályokat ad hozzá, amelyek nem tartoznak az AppleScript alapvető funkciói közé, beleértve a felhasználói interakciós párbeszédpaneleket, fájlok olvasását és írását, fájlrendszer -parancsokat, dátumfüggvényeket , valamint szöveges és matematikai műveletek; az OSAX nélkül az AppleScript nem lenne képes olyan alapvető műveletek végrehajtására, amelyeket nem közvetlenül biztosít az alkalmazás.

Nyelvtudás

Osztályok (adattípusok)

Míg az alkalmazások speciális osztályokat (vagy adattípusokat) határozhatnak meg, az AppleScript számos beépített osztályt is tartalmaz. Ezeket az alapvető adatosztályokat a nyelv közvetlenül támogatja, és általában a szkriptelhető alkalmazások általánosan elismerik. A leggyakoribbak a következők:

  • Alapvető objektumok
    • alkalmazás : egy alkalmazásobjektum, amelyet leginkább a tell utasítások ( tell application "Finder" …) specifikusaként használnak .
    • script : script objektum. A szkript objektumok a parancsfájlok tárolói. Minden AppleScript parancsfájl objektumot hoz létre futtatáskor, és szkript objektumok hozhatók létre az AppleScripts programban.
    • class : egy meta-objektum, amely meghatározza a többi objektum típusát.
    • referencia : egy objektum, amely egy nem értékelt objektum -specifikátort foglal magában, amely lehet vagy nem mutat egy érvényes objektumra. Igény szerint értékelhető az contentsingatlanhoz való hozzáféréssel .
  • Standard adatobjektumok
    • állandó : állandó érték. Számos nyelv által definiált állandók, például pi, tabés linefeed.
    • logikai érték : logikai igaz/hamis érték. Valójában egy alosztálya az constant.
    • szám : a ritkán használt absztrakt superclass a integerés real.
    • egész szám : egész szám . Beépített matematikai operátorokkal manipulálható.
    • valós : lebegőpontos ( valós ) szám. Beépített matematikai operátorokkal manipulálható.
    • dátum : dátum és idő.
    • szöveg : szöveg. A változat a AppleScript előtt 2,0 (Mac OS X 10.4 és alább) az textosztály volt, elkülönült string, és Unicode text, és a három viselkedett némileg eltérő; a 2.0 (10.5) és későbbi verzióiban mind szinonimák, és minden szöveg UTF-16 („ Unicode ”) kódolású.
  • Konténerek
    • lista : az objektumok rendezett listája. Bármely osztályt tartalmazhat, beleértve az alkalmazások által meghatározott egyéb listákat és osztályokat.
    • rekord : az objektumok kulcsos listája. Mint egy lista, kivéve a kulcs-érték párokat . A futásidejű kulcsos hozzáférés nem támogatott; minden kulcsnak fordítási idő állandó azonosítónak kell lennie.
  • Fájlrendszer
    • alias : hivatkozás egy fájlrendszer -objektumra (fájlra vagy mappára). Az álnév megtartja hivatkozását az objektumhoz, ha az objektumot áthelyezi vagy átnevezi.
    • fájl : hivatkozás egy fájlrendszer -objektumra (fájlra vagy mappára). Ez egy statikus hivatkozás, és egy olyan objektumra mutathat, amely jelenleg nem létezik.
    • POSIX fájl : hivatkozás fájlrendszer objektumra (fájlra vagy mappára), egyszerű szövegben, Unix ( POSIX ) stílusú perjel (/) jelöléssel. Nem valódi adattípus, mivel az AppleScript automatikusan konvertálja a POSIX fájlokat közönséges fájlokká, amikor azokat használják.
  • Vegyes
    • RGB szín : meghatározza az RGB triplettet ( 16 bites, magas színformátumban ), parancsokhoz és objektumokhoz, amelyek színekkel dolgoznak.
    • egységtípusok : osztály, amely a szabványos egységek között konvertál. Például egy érték definiálható square yards, majd átalakítható az square feetegységtípusok közötti átváltással (az asoperátor segítségével).

Nyelvi struktúrák

Sok AppleScript folyamatok által kezelt kód blokkokat, ahol egy blokk kezdődik egy parancs parancs és záró vége parancs nyilatkozatot. A legfontosabb szerkezeteket az alábbiakban ismertetjük.

Feltételes

Az AppleScript kétféle feltételt kínál.

-- 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

Hurok

Az AppleScript ismétlődő ciklusa több kissé eltérő ízben kapható. Mindegyik többször végrehajtja a blokkot az ismétlés és az ismétlés befejezése között . A hurok idő előtt megállítható a exit exit ismétlés paranccsal .

Ismételje meg örökké.

repeat
     -- commands to be repeated
end repeat

Ismételje meg a megadott számú alkalommal.

repeat 10 times
     -- commands to be repeated
end repeat

Feltételes hurkok. A blokk az ismétlés közben ciklusban addig fut, amíg a feltétel igaznak minősül. A feltétel újraértékelésre kerül a blokk minden egyes végrehajtása után. Az ismétlés addig, amíg a ciklus egyébként azonos, de a blokk addig fut, amíg a feltétel hamisnak minősül.

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

Hurok változóval. A ciklus indításakor a változó hozzá van rendelve a kezdőértékhez. A blokk minden végrehajtása után az opcionális lépésérték hozzáadódik a változóhoz. A lépés értéke alapértelmezés szerint 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

Soroljon fel egy listát. Minden iterációnál állítsa a loopVariable -t egy új elemre az adott listában

set total to 0
repeat with loopVariable in {1, 2, 3, 4, 5}
	set total to total + loopVariable
end repeat
Alkalmazáscélzás Hibakezelés
-- 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

Az egyik fontos változata ezt a blokkot szerkezet formájában on - végén ... blokkok, hogy meghatározására használt rakodók (függvényszerű szubrutinok). Rakodók kezdődik a functionName () és befejezve vége functionName , és nem kerülnek végrehajtásra részeként a szokásos forgatókönyvet áramlási hacsak nevű valahol a forgatókönyvet.

Funkciókezelő Mappa műveletek blokkja Futtatáskezelő
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

A kezelők az "on" helyett a "to" használatával is definiálhatók, és írhatók úgy, hogy elfogadják a címkézett paramétereket, nem zárójelek között.

Címkézett paraméterekkel rendelkező kezelő Kezelő a "to" és a címkézett paraméterek használatával
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

Az AppleScriptben négyféle előre definiált kezelő létezik - futás, nyitott, tétlen és kilépés -, amelyek mindegyike a fent látható futáskezelővel megegyező módon jön létre.

Futtatáskezelő
A szkript fő kódját határozza meg, amelyet a parancsfájl futtatásakor hívnak meg. A futáskezelő blokkok nem kötelezőek, kivéve, ha az argumentumokat továbbítják a szkriptnek. Ha egy explicit futáskezelő blokkot kihagyunk, akkor minden olyan kód, amely nem található a kezelőblokkokban, úgy kerül végrehajtásra, mintha egy implicit futáskezelőben lenne.
Nyitott kezelő
Az "on the Item" megnyitásakor definiálva.
on open theItems
     repeat with thisItem in theItems
         tell application "Finder" to update thisItem
     end repeat 
end open

Amikor egy "nyitott kezelőt" tartalmazó szkript kisalkalmazásként kerül mentésre, akkor az aprócsepp lesz. A csepp a Finderben azonosítható az ikonjával, amely egy nyilat tartalmaz, amely jelzi, hogy az elemeket az ikonra lehet ejteni. A kezelő akkor kerül végrehajtásra, amikor fájlokat vagy mappákat csepegtet a csepp ikonjára. A csepp ikonra ejtett elemekre való hivatkozások a csepp parancsfájljába kerülnek, mint a nyitott kezelő paramétere. A csepp ugyanúgy indítható, mint egy közönséges kisalkalmazás, futáskezelőjének végrehajtása.

Üresjárati kezelő
Egy alprogram, amelyet a rendszer periodikusan futtat, amikor az alkalmazás tétlen.
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

Egy tétlen kezelő használható kisalkalmazásokban vagy cseppekben, amelyek nyitva maradó kisalkalmazásokként vannak mentve, és hasznos olyan szkriptekhez, amelyek bizonyos adatokat vagy eseményeket figyelnek. A készenléti idő hossza alapértelmezés szerint 30 másodperc, de megváltoztatható úgy, hogy a szubrutin végén szerepel egy „return x” utasítás, ahol x az a másodperc, ameddig a rendszernek várnia kell, mielőtt újra futtatná a kezelőt.

Lépjen ki a kezelőből
Olyan kezelő, amely akkor fut, amikor az kisalkalmazás kilépési kérést kap. Ezzel lehet adatokat menteni vagy más befejező feladatokat elvégezni a kilépés előtt.
on quit
     --commands to execute before the script quits
  continue quit -- required for the script to actually quit
end quit
Szkript objektumok

A szkript objektumok kifejezetten a szintaxis segítségével határozhatók meg:

script scriptName
     -- commands and handlers specific to the script
end script

A szkriptobjektumok ugyanazokat a "tell" struktúrákat használhatják, mint az alkalmazásobjektumok, és betölthetők és fájlokba menthetők. A futásidejű végrehajtási idő bizonyos esetekben csökkenthető szkriptobjektumok használatával.

Különféle információk

  • A változókat nem írják be szigorúan, és nem kell deklarálni. A változók bármilyen adattípust felvehetnek (beleértve a parancsfájlokat és a függvényeket). A következő parancsok példák a változók létrehozására:
    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
    
  • A szkriptobjektumok teljes objektumok - módszereket és adatokat kapszulázhatnak, és adatokat és viselkedést örökölhetnek a szülői szkriptből.
  • Az alprogramok nem hívhatók meg közvetlenül az alkalmazás -mondatblokkokból. Ehhez használja az „én” vagy „én” kulcsszavakat.
tell application "Finder"
    set x to my myHandler()
    -- or
    set x to myHandler() of me
end tell

on myHandler()
    --commands
end myHandler

Ugyanezt a technikát használva a parancsfájl -kiegészítési parancsokhoz csökkentheti a hibákat és javíthatja a teljesítményt.

tell application "Finder"
	set anyNumber to my (random number from 5 to 50)
end tell

Nyissa meg a parancsfájl -architektúrát

Az AppleScript megvalósításának fontos aspektusa az Open Scripting Architecture ( OSA ). Apple biztosít OSA más script nyelvek és a harmadik fél scripting / automatizálási termékek, mint QuicKeys és userland Frontier, hogy működjenek az egyenlő státuszt AppleScript. AppleScript hajtották végre, mint egy script alkatrész , és az alapvető specifikációk illesztéséhez ilyen alkatrészeket, az OSA volt nyilvános, így más fejlesztők számára, hogy saját script komponenseket a rendszerhez. A szkriptek betöltésére, mentésére és fordítására szolgáló nyilvános ügyfél -API -k ugyanúgy működnek minden ilyen összetevőnél, ami azt is jelentette, hogy az kisalkalmazások és cseppek a szkriptnyelvek bármelyikén tárolhatnak szkripteket.

Az OSA egyik jellemzője a szkript -kiegészítések, vagy az OSAX for Open Scripting Architecture eXtension , amelyeket a HyperCard külső parancsai inspiráltak . A szkript -kiegészítések olyan könyvtárak, amelyek lehetővé teszik a programozók számára az AppleScript funkció kiterjesztését. A parancsfájl-kiegészítésként mellékelt parancsok az egész rendszerben rendelkezésre állnak, és nem függnek az alkalmazástól (lásd még § AppleScript Libraries ). Az AppleScript Editor képes az OSA egyes nyelveinek közvetlen szerkesztésére és futtatására is.

JavaScript az automatizáláshoz

Az OS X Yosemite és a macOS későbbi verziói alatt a JavaScript for Automation ( JXA ) összetevő továbbra is az egyetlen komoly OSA nyelvi alternatíva az AppleScript mellett, bár a Perl , a Python , a Ruby és a Tcl Macintosh verziói mind támogatják az Apple eseményekkel való natív módszereket anélkül, hogy OSA összetevők lennének.

A JXA Objective-C (és C nyelvű) idegen nyelvi felületet is biztosít. Mivel a WebKit JavaScriptCore motorján alapuló környezet, a JavaScript funkciókészlet szinkronban van a rendszer Safari böngészőmotorjával. A JXA JavaScript modulrendszert biztosít, és a CommonJS modulok is használhatók a browserify segítségével.

Lásd még

Hivatkozások

További irodalom

Külső linkek