En innføring i Applescript

Dette er en innføring for deg som ikke kan så mye om Applescripting fra før. Guiden tar for seg grunnleggende temaer i Applescript, som f.eks. ScriptEditor, variabler, dialoger, handlere etc. Er du er fersk Applescripter kan dette være en god start for deg!

Hva er AppleScript?
Kort fortalt er AppleScript en samling av kommandoer og data som snakker til Mac'en din. Du snakker til datamaskinen din som om den har 0 i IQ. I scriptet styrer du hva som skal skje og hvordan data skal håndteres. Script-språket er enkelt satt opp, og ligner på engelsk ("English-like"). Med litt starthjelp, er det enkelt å komme i gang med dette script-språket.

Hvor skal du begynne?
ScriptEditor er programmet du bør starte med for å lage AppleScripts. Du finner programmet i /Applications/AppleScript/.

ScriptEditor er enkelt å bruke. De viktigste hurtigtastene du bør lære deg er "Eple+K" (Kompiler) og "Eple+R" ("Run"). Når du kompilerer scriptet, sjekker ScriptEditor om alt er sammen riktig før det evt. kan kjøres. Script som ikke er kompilert vises med lilla skrift. Om alt er i orden med scriptet ditt, vises teksten i forskjellige farger. Variabler f.eks. vises alltid i grønt.

Biblioteket er også kjekt å sjekke ut. Det finner du i vindu menyen, eller ved å trykke "Shift+Eple+L". Her kan du søke etter tilgjengelige kommandoer i forskjellige programmer. Den beste delen å starte med er "StandardAdditions". Ved å se på kommandoene i dette biblioteket vil du få et greit innblikk i hvordan kommandoene du kan bruke, ser ut. Test gjerne ut de forskjellige kommandoene for å se hva som skjer når du kjører scriptet.

En annen ting som er veldig kjekk å bruke, er og aktivere applescript menyen. Det gjør du ved å åpne AppleScript-verktøy, som ligger i samme mappe som ScriptEditor. Velg "Vis prosedyremenyen i menylinjen".

Nå vises et lite script-ikon oppe i menylinja. her ligger det en del ferdige script fra Apple som kan være nyttige å se på, og ta lærdom fra. Jeg anbefaler ikke å starte med scriptene som ser veldig avanserte ut. Det skaper ofte forvirring. Det beste er å finne et script som er enkelt i begynnelsen, for så å gå videre til de som er mer avanserte etterhvert.

Å kommentere underveis i scriptet er viktig for å huske hva de forskjellige kommandoene er til og for. Kommentarer i ScriptEditor blir markert med grå skrift etter kompilering. For å kommentere, bruker du to bindetreker ("- -") foran setningen du skal skrive.

Eksempel

--dette er en kommentar

Denne kommentaren gjelder kun for en linje. Om du ønsker å kommentere mer tekst, kan du skrive kommentaren slik

Eksempel

(*
Dette er også en kommentar.
Den kan gå over flere linjer om du ønsker det.
Denne kommentar-metoden er ofte brukt i begynnelsen av et script for å
skrive navnet på utvikler osv.
*)

Viktige operatorer
Som i mange andre scriptspråk, har også applescript ulike operatorer. Med disse kan man summere, multiplisere, dividere osv. Man kan også sette sammen en setning av ord skrevet direkte og tekst som er satt inn i variabler.

Operatorer
+ brukes til å summere (pluss)
- brukes til å substrahere (minus)
* brukes til å multiplisere (gange)
/ brukes til å dividere (dele)

& brukes til å sette sammen stringer etc. (betyr AND)
return blir linjeskift. (enter)
space blir mellomrom

Vise dialoger, integrere brukeren
Begynn med å lage et nytt dokument i ScriptEditor.

Skriv inn koden som er vist nedenfor.

Steg 1

-- Viser dialog som spør etter navnet på brukeren
display dialog "Hva er navnet ditt?" default answer "Skriv navnet ditt her"

Nå vil scriptet vise en dialog som spør etter navnet på brukeren. For å få opp et tekst felt der bruker selv kan skrive inn data, bruker du "default answer" i dialog-stringen. Om du ikke ønsker tekst inni tekstfeltet skriver du bare "" etter display dialog.

Neste steg i dette scriptet blir og sette teksten brukeren returnerer inn i en variabel og bruke det i scriptet.

Steg 2

-- Viser dialog som spør etter navnet på brukeren
display dialog "Hva er navnet ditt?" default answer "Skriv navnet ditt her"
-- setter teksten som brukeren returnerer inn i en variabel
set user_text to the text returned of the result

I steg 2 blir variabelen user_text satt. Som nevnt tidligere i denne guiden, blir variabler markert med grønt i ScriptEditor. Variabler kan du kalle hva du vil, men du kan ikke bruke mellomrom. Jeg pleier som regel å sette "My" sammen med variabel navnet. Det er selvfølgelig bare å bruke det du selv syns er best. Understrek "_" og bindestrek "-" kan brukes når du setter variabler.

Steg 3

-- Viser dialog som spør etter navnet på brukeren
display dialog "Hva er navnet ditt?" default answer "Skriv navnet ditt her"
-- setter teksten som brukeren returnerer inn i en variabel
set user_text to the text returned of the result
--Dialog som bruker variabelen fra steg 2
display dialog "Hei, " & user_text & return & "Har du det bra?"

I steg 3 henter vi tilbake informasjonen vi knyttet til variabelen user_text i steg 2. Denne variabelen kunne vi brukt til alt mulig, men for å vise det enkelt brukte jeg den sammen med annen tekst i en dialog.

Bruke variabler
Variablene er viktige og ofte nødvendige for at scriptene skal fungere. Variablene trenger ikke bare inneholde informasjon som brukeren taster inn, men du som er programmerer kan også definere variabler så mye du vil. Brukerdefinerte variabler kan brukes når man f.eks. skal regne et regnestykke.

Med det mener jeg at du f.eks. kan lage et script som regner centimeter om til tommer. Da kan man vise en dialog der brukeren har mulighet til å taste inn forskjellige tall hver gang han eller hun bruker scriptet.

Variablene kan også settes av deg som programmerer. Dette er også viktig for å kunne holde scriptene du lager ryddige og strukturerte.

Eksempel på "kalkulator" for å regne cm til tommer

--setter variabel for hva en tomme tilsvarer i cm
set myInch to 2.54
--Viser dialog til bruker
display dialog "Skriv inn antall cm du vil regne om til tommer" default answer ""
--setter variabel til svaret bruker tastet inn
set myCM to the text returned of the result as string
--regner om til tommer
set myResult to myCM / myInch as string
--viser dialog med svaret
display dialog myCM & " cm vil blir " & myResult & " tommer"

Handlere
Et script utføres linje etter linje. Altså fra topp til bunn. Dette er likt i de fleste scriptspråk. For å holde mest mulig orden, kan det være lurt å dele opp scriptet i handlere. Handlere er egendefinerte funksjoner, og kan stå i hvor som helst i scriptet.

Et script kan bygges opp i flere deler. Jeg pleier ofte å dele opp et script i en hoveddel, som er grunnlaget, og handlere som blir "underdeler". Når brukeren har gjort valgene, kaller hoveddelen på den aktuelle handleren. Ved å bruke denne metoden blir det mye enklere å teste scriptet steg for steg. En funksjon kan også lages ferdig før du setter i gang med neste funksjon.

En handler er bygd opp med et navn, eventuelle argumenter og script som skal utføres. Eks. on myHandler (argument1, argument2). Argumentene står inni parentesene, og blir brukt i scriptet handleren inneholder. Dette er litt vanskelig å forklare, men kan vises med et eksempel.

Bruk av handler

--Her er linjen som kaller opp handleren
myHandler(118, 10)

--Handleren starter her
on myHandler(argument1, argument2)
set mySum to argument1 + argument2
display dialog mySum
end myHandler

I eksempelet over er det satt inn tall som argumenter der handleren kalles opp. Når handleren kjører blir tallene som er skrevet inn satt inn i variablene argument1 og argument2. I scriptet handleren kjører, er det variablene som blir brukt. En handler kan kalles opp flere ganger i løpet av et script. Det er lurt å bruke handlere hvis det er et script som skal gjøre samme script, men med forskjellig innhold i variablene.

Prøv ut det jeg har forklart i denne guiden. I begynnelsen kan det virke litt komplisert, men med trening kommer det seg fort. Det viktigste er å ha god tålmodighet, og ikke gi opp.

Flere applescript guider kan etterhvert leses på siden min

Tags:

Fiskepudding

Fin innføring, men dette fører jo med seg et visst press om at du må skrive neste guide for de som har fullørt denne. :-)

magnus

Dette ser ut til å være gode saker, kunne selv trenge en oppfriskning i AppleScript :)

Fred ut macere!

herbal

Jeg kommer med flere guider, men målet med denne innføringen er jo at folk skal få en forståelse for Applescript, og de skal få lyst til å lage egne script.

G4

Veldig bra tema!
Har ikke fått lest igjennom enda, men dette er midt i bilnken for meg.

Takk!

Perfekt er godt nok!

r_gangstads bilde

r_gangstad

Takk for denne guiden altså, midt i blinken :D

www.mywalkabout.nu

Invisigoth

Håper det kommer mer snart, scripting var artig :)

PitBull

Noe slikt har jeg letet etter! Nå har jeg litt lesestoff for dagen!!! Tusen takk! Dette vil jeg lære mer om!

---------------------
Mordi har bart!

PitBull

Sjekk denne jeg har laget!

set MyPi to 3.141592653589
display dialog "Skriv inn diameteren på return sirkelen du ønsker å regne omkretsen av" default answer "0"
set MyDiameter to the text returned of the result as string
set myResult to MyPi * MyDiameter as string
display dialog "Omkretsen til en sirkel med diamter lik " & MyDiameter & " cm, har en omkrets på " & myResult & " cm."

Lim den inn i script editor og prøv den! (Mitt første "program") Er jo veldig likt utgangspunktet som er vist i denne guiden men... blah... MITT!!! Hehe. ;-)

Edit: Pi var litt feil. Det er rettet nå!

---------------------
Mordi har bart!

Åsmunds bilde

Åsmund

Kjempebra initiativ, dette trengte vi! Jeg har ikke lest hele guiden ennå, men den ser veldig bra ut. :-)

limbo

Nice script pitbul

  • Skriv ut artikkel
  • Abonner med RSS

Alt om iPad, iPhone og iOS

Nettradio i iTunes

Nettradio i iTunes
130 norske radiokanaler.
Få de mest populære norske, svenske og danske radiokanalene inn i en egen spilleliste i iTunes.
Oppdatert 13. mai