AppleScript

AppleScript
Utvikler(e)
Apple
http://developer.apple.com/applescript/
Generell informasjon
Vanlige utvidelser .scpt, .scptd, .applescript
Dukket opp i 1993
Siste stabile versjon 2.2.1
type system dynamisk
påvirket av Hyperkort
Operativsystem System 7 , Mac OS 8 , Mac OS 9 og Mac OS X
Tillatelse privat lisens

Applescript er et programmeringsspråk utviklet av Apple og designet for å kjøre under Mac OS -systemer . Generelt er Applescript ordet som brukes for å betegne Mac OS-skriptmiljøet, ment å fungere parallelt med GUI .

Historie

Applescript-prosjektet var en spin-off av HyperCard -prosjektet . HyperCard inneholdt et engelskbasert programmeringsspråk kalt HyperTalk , som kunne brukes til å inkludere logisk innhold i et HyperCard-program. Apple-ingeniører trodde at et lignende skriptspråk kunne designes for å brukes med alle programmer, og Applescript-prosjektet ble startet der.

MacOS trengte dype endringer og forbedringer for å implementere Applescript. Mange av disse endringene ble utgitt med utgivelsen av System 7, spesielt Apple Event -konseptet . Applescript konkurrerte om utviklernes oppmerksomhet med andre nye teknologier som ble utgitt på samme tid ( Baloon-hjelp , Publish and Subscribe , etc.). For noen av applikasjonene var Applescript den vanskeligste teknologien å implementere, og krever at store deler av lavnivåkode ble skrevet om, og til og med Apples eget applikasjonsrammeverk, MacApp , støttet ikke Apple Events på en stund. .

Utgivelsen var i oktober 1993 som en del av system 7.1.1 (den første store oppdateringen til system 7). QuarkXPress (versjon 3.2) var en av de første store applikasjonene som støttet Applescript, og som et resultat ble Applescript bredt tatt i bruk i Apples publiseringsmarkedssegmenter. Selv om det er diskutabelt, var grunnen til at Mac-plattformen forble markedsleder etter utgivelsen av QuarkXPress og andre applikasjoner for Microsoft Windows -plattformen at den var den eneste som støttet automatisering av komplekse arbeidsflyter.

Overgangen til Mac OS X og dets Cocoa - rammeverk har betydd en bedre implementering av Applescript. Kakaoapplikasjoner tilbyr grunnleggende Applescript-støtte uten innsats fra utvikleren, og kan nå dype nivåer av støtte med en liten investering av utviklertid. AppleScript Studio , utgitt med Mac OS X 10.2, lar brukere programmere hele applikasjoner ved hjelp av Applescript- og Cocoa-objekter.

Grunnleggende konsepter

Applescript ble først og fremst tenkt som et skriptprogrammeringsspråk, og tilbyr brukere et intelligent kontrollverktøy og tillater kommunikasjon mellom forskjellige applikasjoner.

Systemer før System 7 hadde en rudimentær hendelsesmodell der et fast antall hendelser på lavt nivå, for eksempel "tast ned" eller "museknapp ned", kunne utføres. Hver applikasjon var ansvarlig for å administrere og oversette dem til handlinger på høyt nivå som var fornuftige for brukeren, for eksempel «Utfør Lim inn menyalternativ». I mange tilfeller inneholdt den samme hendelsen både konseptet for handlingen (klikk) og instruksjonene for utførelse av den (når du klikket, utfør Lim inn).

Implementering av Applescript krevde at utvikleren skulle skille handling fra utførelse, en jobb Apple refererte til som "Factoring". Programmerere ble oppfordret til å skrive to forskjellige måter å håndtere hendelser på, en for håndtering av hendelser på lavt nivå (klikk, tastetrykk osv.) og en for hendelser på høyt nivå (Apple-hendelser).

Applescript på Mac OS X

På Mac OS X er Applescript mye enklere for utviklere å implementere, spesielt for programmer utviklet i Cocoa. I motsetning til Mac OS hvor hendelser behandles av applikasjoner, blir hendelser under Cocoa omgjort til en instruksjon på høyt nivå av NSApplication-objektet, og deretter dirigert til riktig mål. Dette betyr at alle Cocoa-applikasjoner har "Factoring" gjort, programmereren skriver normalt ikke noe om håndteringen av hendelsen og må kun skrive hvordan applikasjonen vil reagere på prosessene som hendelsen ber om.

En annen viktig fordel er at kakaoobjekter presenteres for oss som standard slik at alle kan få direkte tilgang til dem. Under kakao er Applescript mye "lettere"; skriptmotoren tolker skriptet, oversetter objektnavnene til deres interne format, og sender dem deretter til målapplikasjonen. teknologiske konsepter som er? er behov, sortering ect.

Metaforen "naturlig språk"

Mens Apple-hendelser er en måte å sende instruksjoner til applikasjoner på, er Applescript et spesifikt språk for å generere Apple-hendelser. I tråd med Mac OS-tradisjonen for brukervennlighet, er Applescript-språket designet basert på "naturlig språk"-metaforen, på samme måte som GUI er basert på skrivebordsmetaforen . Applescript-programmer er generelt lesbare og redigerbare av alle. Det er basert på HyperTalk-språket fra HypeCard, og forbedret slik at det ikke bare kan referere til verden, men teoretisk referere til ethvert dokument. For dette formål introduserte Applescript-teamet den nye AppleEvent Object Model (AEOM), som definerte objekter som enhver applikasjon visste om.

AEOM definerte vanligvis et visst antall objekter, for eksempel "dokument" eller "avsnitt", og handlinger som kunne gjøres med dem, for eksempel "lukk" eller "kopi". Systemet definerte også måter å referere til objektegenskaper, slik at man kunne peke på "tredje avsnitt i dokument 1", eller "fargen på det siste ordet i det aktive vinduet". AEOM bruker en ordbok for å assosiere Apple Events med menneskelesbare objekter, og tillater oversettelse frem og tilbake mellom Applescript og Apple Events. For å finne ut hvilke elementer i en applikasjon som kan skriptes, kan du konsultere disse ordbøkene (for eksempel i Xcode og skripteditoren).

Syntaks

Hei verden

Den typiske Hello World er skrevet i AppleScript med følgende kode:

vis dialogen "Hei verden!"

Resultatet oppnådd ved utføring av skriptet er et nytt vindu som det som vises i margen.

Kommentarer

Det er to typer kommentarer i AppleScript:

  • Syntaksen (* kommentartekst *) lar deg skrive en kommentar på flere linjer.
  • --- flagget brukes til å skrive enlinjekommentarer.
--Denne kommentaren kan bare ta én linje #Denne kommentaren kan bare ta én linje (* I stedet for med denne kan vi bruke flere linjer*)

I tillegg kan vi også starte skriptet med linjen #!/usr/bin/osascript for å kunne kjøre tekstfilen som en Unix-kjørbar.

Variabler og datatyper

Variabler trenger ikke deklareres og er ikke sterkt skrevet. To metoder kan brukes for å tilordne en gitt verdi til en variabel:

sett VariableName til VariableValue --o kopier VariableValue til VariableName

Variabelnavn skiller ikke mellom store og små bokstaver , så myVariable og MyVariable er likeverdige. Variablenavn kan inneholde bokstavene a til z , unntatt ñ , tall og tegnet _.

De grunnleggende typene i AppleScript er:

  • boolsk
  • Antall
  • Tekst: Det er en serie Unicode-tegn
  • Records: er et uordnet sett med etiketter med tilhørende verdi.
  • Liste: Det er et ordnet sett med verdier, ikke nødvendigvis av samme type.

Eksempler på disse typene er:

--Booleans: satt sann til sann sett usann til usann sett nummer til 10 --nummer er av typen Number sett teksten til "Dette er en tekst" sett listen til { verdi1 , verdi2 , verdi3 } -- De forskjellige verdiene er atskilt med komma sett register til { tag1 : verdi1 , tag2 : verdi2 } -- Taggen er en unik identifikator som kommer foran verdien

Datatypene kan endres for den brukes:

TypeValue1 som EndType

Verdien som returneres av dette uttrykket er representasjonen av typen FinalType av verdien TypeValue1 . For eksempel:

2 som tekst -- returnerer "2" sant som tekst -- returnerer "true" "3.14" som tall -- returnerer 3.14 --Det er også umulige konverteringer: "tekst" som tall --Går en feil

Funksjoner

Funksjonserklæringer i AppleScript, kalt behandlere , kan ha flere former:

funksjonsnavn for parametrisk (* funksjonstekst *) --hvis vi vil at den skal returnere en verdi : returner resultatet sluttfunksjonsnavn --For å kalle opp funksjonen, bruk: FunctionName for aVariable

Du kan endre ordet fortil ett av følgende: about, above, against, apart from, around, aside from, at, below, beneath, beside, between, by, for, from, instead of, into, on, onto, out of, over, since, thru (o through), under. Funksjoner med flere parametere kan defineres ved hjelp av flere av ordene oppført ovenfor, forskjellige for hver parameter.

brøk for teller over nevner returner teller / nevner sluttbrøk _

Funksjonsanrop kan gjøres med parameterne i en annen rekkefølge enn den som er deklarert:

brøk for 12 over 24 brøk over 24 for 12 --De to samtalene er likeverdige og returnerer 0,5

Funksjoner kan også deklareres med posisjonsparametere:

on functionName ( parameter1 , parameter2 ) --function body end functionName

Slik at funksjonen ikke trenger parametere, skrives kun parentesene, uten navn mellom dem. Funksjoner kan også defineres ved å endre onvedto

Spesielle funksjoner

Når et skript lagres som et program, er det 4 funksjoner som kan deklareres slik at det har visse virkemåter:

Run

Det er funksjonen som automatisk kalles opp når du kjører et skript eller starter et skript som er lagret som en applikasjon. Det kan defineres på to måter:

  1. Hvis flere kommandoer er skrevet i skriptet, uten at de er inne i funksjonserklæringer eller skriptobjekter, er funksjonen runallerede implisitt deklarert.
  2. Den kan eksplisitt defineres som en hvilken som helst funksjon, men da kan det ikke være noen kommandoer utenfor funksjonserklæringer eller skriptobjekter:
on run args --kommandoer for å utføre end run Parameteren argser valgfri og brukes til å sende parametere ved oppstart, for eksempel ved å kjøre den fra kommandolinjen.

Open

Skriptet mottar ordren om å utføre funksjonen opennår brukeren drar filer til programikonet, og sender en liste over aliaser til de drade filene som et argument.

åpne filnavn --kommandoer for å kjøre end open

Idle

Når du lagrer som applikasjon, kan du velge alternativet La være åpen . Dette betyr at hvert 30. sekund, som standard, sendes ordren for å utføre funksjonen til applikasjonen idle. Tiden som går mellom anrop til funksjonen kan endres med verdien som funksjonen returnerer: den må være et heltall og representerer tiden i sekunder mellom anrop, for standardverdien 0 returneres.

on indle --kommandoer for å kjøre return numberOfSeconds slutt inaktiv

Quit

Funksjonen quitkalles opp når applikasjonen mottar ordren om å lukke. Hvis kommandoen vises under kjøring continue quit, avsluttes applikasjonen, men hvis en blir funnet returneller funksjonen avsluttes før den finner den, lukkes ikke applikasjonen.

quit --kommandoer for å kjøre hvis betingelse , fortsett deretter quit else return end if end quit

I dette tilfellet vil søknaden bare bli avsluttet hvis den condicioner sann.

Strukturer

Betingelser

Som i andre programmeringsspråk, er det to typer betingede utsagn:

--Enkel betinget: if condition then --Setninger som skal utføres slutter if --Sammensatte betingelser: hvis betingelse1 --Bruk av den første betingelsen annet hvis betingelse2 deretter --Brødteksten i den andre betingelsen annet --Bruk som utføres hvis de tidligere betingelsene ikke er oppfylt slutt hvis Loops

Det finnes flere typer løkker:

  • Sløyfer som ikke evaluerer en tilstand:
--Uendelig sløyfe: gjenta --Uttalelser for å utføre sluttrepetisjon --Sløyfe som gjentas n ganger: gjenta n ganger --Setninger for å utføre sluttrepetisjon
  • Sløyfer som evaluerer en tilstand:
--Sløyfe som gjentas mens betingelsen er sann, gjenta mens ( betingelse ) --Uttalelser for å utføre sluttrepetisjon --Sløyfe som gjentas til betingelsen blir sann gjenta til ( betingelse ) --Uttalelser for å utføre end repeat
  • Sløyfer som itererer med en variabel
--Variabelen tar heltallsverdier fra en start til slutten repetisjon med i fra firstValor til finalValue --Setninger for å utføre sluttrepetisjon --Variabelen tar verdiene til hvert av elementene i listerepetisjonen med i i listen --Setninger for å utføre end repeat fortell blokk

Tell -blokken har to varianter:

--Enkel form fortell destinasjon til action_to_do --Sammensatt form fortell destinasjon --Setninger for å utføre sluttfortell

Tell -sløyfen utfører setningene i henhold til funksjonene og egenskapene som er definert på målobjektet . Sistnevnte kan være av typen applikasjon , dokument eller av typen script , normalt definert av brukeren, blant andre.

Den kan for eksempel brukes til å åpne et nytt Finder-vindu:

fortell applikasjonen "Finder" lag nytt Finder- vindu slutt fortell

Feilhåndtering

Når det oppstår en feil under kjøringen av et skript, stoppes prosessen. For å unngå det og for å kunne fortsette med utførelsen, brukes følgende kode:

--Enkel metode: prøv --Uttalelser som kan forårsake feil slutt prøv --Sammensatt metode: prøv --Uttalelser som kan forårsake feil feilbeskrivelse nummer n --Uttalelser som skal utføres hvis det oppstår en feil slutt prøv

Når en feil vises, sendes en tekst som beskriver feilen, beskrivelsen og et nummer som identifiserer feiltypen, n, til feil . For eksempel når du kjører koden:

prøv " test " som boolsk feilbeskrivelse nummer n visningsdialogbeskrivelse visningsdialog n avslutt prøv

Feilbeskrivelsen er "Kan ikke konvertere "test" til boolsk type." og feilnummeret er -1700

Utsagn kan også brukes til å markere en feil, som stopper kjøring av kode med mindre den er inne i en prøveblokk . Syntaksen er som følger:

feilbeskrivelseOfError number numberOfError _

Programvare

AppleScript-redigeringsprogramvare

  • Xcode : Lar deg redigere skript som tekstfiler og har en definert mal for å lage programmer skrevet i AppleScript. [ 1 ]
  • AppleScript Editor : Den er inkludert i Mac OS X og lar deg redigere skript og lagre dem som uavhengige applikasjoner, kompilerte skript eller tekstfiler. Den lar deg også se funksjoner og egenskaper definert i applikasjoner som kan kontrolleres med AppleScript.
  • Det er flere kommandoer for Mac OS X Terminal som lar deg kjøre skript:
    • osascript kjører et skript: [ 2 ]
      osascript pathToScript
      Eller en uttalelse:
      osascript -e uttalelse
    • osacompile kompilerer et skript og lager en fil med filtypen ".scpt": [ 3 ]
      osacompile pathToScript

Programvare kontrollerbar via AppleScript

De fleste applikasjoner utviklet av Apple kan håndteres med AppleScript, for eksempel:

  • Finner
  • iTunes
  • xcode
  • Safari

Referanser

  1. "AppleScript i Xcode " . Hentet 8. juli 2012 . 
  2. Apple Inc. "osascript(1) Mac OS X Manual Side " . Hentet 8. juli 2012 . 
  3. Apple Inc. "osacompile(1) Mac OS X Manual Side " . Hentet 8. juli 2012 . 

Bibliografi

Manzana. Språkveiledning for AppleScript . Hentet 6. juli 2012 .