Den ultimata nybörjarens guide till AppleScript

Det här är det första inlägget i en ny serie som återspeglar några av våra läsares favoritinlägg från det förflutna som fortfarande innehåller fantastisk och relevant information som du kanske tycker är användbar. Det här inlägget publicerades ursprungligen den 7 juli 2009.

Det bästa med AppleScript är att du inte behöver vara en genieprogrammerare för att kunna använda den. Faktum är att du inte behöver någon programmeringserfarenhet alls. Den här artikeln visar hur du skriver en AppleScript för nästan vilken applikation som helst med hjälp av de enkla instruktionerna som kommer gömda i varje apps ramar. Fascinerad? Läs vidare!


Vad är AppleScript?

AppleScript är ett kraftfullt skriptspråk som kommer inbyggt i OS X. Den huvudsakliga användningen för AppleScript är automatisering av uppgifter som normalt är repetitiva och tidskrävande. Till exempel, som frilansare, hatar jag att skapa fakturor varje vecka för mina olika kunder. För att lösa detta problem skrev jag en AppleScript som läser de timmar som jag loggar in i iCal, skapar en faktura i Microsoft Excel baserat på de timmarna och skickar fakturor till mina kunder. Allt med ett knapptryck!


Huvudfönstret

Komma igång: Tell Block

För att skapa en AppleScript, öppna programmet "Script Editor" som finns i AppleScript-mappen i mappen Program. Du borde se ett enkelt fönster som innehåller ett stort textfält med en remsa av knappar längst upp. Inne i textfältet skriver du följande kod:

[Apple]
berätta ansökan "Finder"

display dialog "Hello World"

slutet berätta
[/ Apple]

AppleScript försöker använda vanlig engelsk när det är möjligt för att göra kodningen extremt enkel. De flesta kommandon i AppleScript finns i ett "tell block". Det kallas ett "tell block" eftersom du "berättar" en viss applikation vad du vill att den ska göra. Koden ovan beskriver exempelvis Finder för att visa ett dialogfönster som innehåller orden "Hello World". När du är klar med ett kommando eller en sträng av kommandon för en given applikation, avslutar du blocket med "slutmeddelande".

Kom alltid ihåg att avsluta dina berättarblock korrekt eller koden kommer inte att kompileras!

När du är klar med att ange koden ovan, klicka på "Kompilera" hammarmikonen. Om din syntax är korrekt kommer din kod automatiskt att formateras och färgas. Om du har gjort ett fel kommer Script Editor att markera det problematiska området och ge dig ett meddelande om vad det tycker kan ha gått fel. Här är en snabb hänvisning till de olika färgerna du ser i din sammanställda kod (finns i Skriptredigerare> Inställningar).


Färgguide

När din kod har sammanställts, klicka på "Kör" -knappen. Du bör se följande dialog:


Hej världen

Klicka nu på "OK" och titta längst ner i ditt Script Editor-fönster. När du kör ett skript berättar Script Editor dig vad resultatet var eller vad som var "returnerat". I det här fallet säger det att "OK" -knappen var klickad.


OK Retur

Deklarera variabler

Variabler är i stort sett desamma i varje programmeringsspråk. De ger ett enkelt sätt att komma åt och manipulera mycket information i ett kompakt kodstycke. Att skapa eller "deklarera" variabler är olika för alla språk. I AppleScript förklarar du variabler enligt följande:

[Apple]
sätt theString till "Hello World"

berätta ansökan "Finder"

visa dialogrutan theString

slutet berätta
[/ Apple]

Det finns flera saker att notera om föregående exempel. Först märker du att variablerna deklareras med kommandona "set" och "to". Genom att göra detta ställer du in ditt variabelnamn, i detta fall "theString", för att motsvara något, i det här fallet texten "Hello World". Många programmeringsspråk kräver att du anger vilken typ av variabel du vill ha i deklarationen (heltal, flytpunkt, text etc.). AppleScript är dock intelligent nog att arbeta med dina variabler utan instruktioner om formatet.

Observera också hur jag skrev mitt variabla namn. Du kan inte ha mellanslag i ett variabelt namn så det är bra att använda kamelfall (theString) eller understrykningsmetoden (the_string). Det spelar ingen roll vilken metod du väljer, bara se till att du är konsekvent i hela din kod. Det är också en bra idé att ge alla dina variabler meningsfulla namn. När du tittar på en annan programmerares kod kan det vara irriterande att se variabla namn som "myVariable" som inte ger någon indikation på vad de är eller vad de ska användas för.

Slutligen märker att nu när jag har lagt texten "Hello World" inuti en variabel kan jag ringa den variabeln igen och igen under hela koden. Om jag senare väljer att ändra texten "Hello World" till "Good Morning Dave", behöver jag bara ändra texten på raden där jag deklarerade variabeln.


Arbeta med variabler

Du kan göra alla typer av galna saker med variabler, men eftersom det här endast är meningen att vara en kort introduktion till AppleScript, visar jag bara några. Skriv in följande kod:

[Apple]
--Integervariabler
ställa in initialt nummer till 3
ställa in sekundärnumret till 2

--Variabel verksamhet
ställa in svaret på (theFirstNumber + theSecondNumber)
ställ in svaret på (theAnswer + 1)

--Strängvariabler
sätt theString till "3 + 2 + 1 ="

--Display Dialog
berätta ansökan "Finder"

visa dialogrutan theString & theAnswer

slutet berätta
[/ Apple]

Du kan snabbt kompilera din kod genom att trycka på "enter" -knappen (inte returknappen). Detta är placerat på tio tangentnumret på stationära datorer och bredvid kommandotasten till höger om mellanslagstangenten på bärbara datorer.

Eftersom ditt skript blir mer komplext, är en del av organisationen i ordning. Genom att skriva två streck "-" före en textrad, kan du lägga in en kommentar. Använd kommentarer för att skilja och beskriv dina delar av koden för enkel navigering. I det här exemplet har jag skapat en strängvariabel (endast text) och några heltal variabler. Observera att du kan utföra matematiska operationer på variabler. Här har jag satt "theFirstNumber" för att vara lika med tre och "TheSecondNumber" för att vara lika två och sedan lägga till dem i "theAnswer".

Observera också att du kan ändra en variabel efter det deklarerats. Omedelbart efter att ha satt "theAnswer" till summan av "theFirstNumber" och "theSecondNumber" (resulterande i 5), ändrade jag värdet av "theAnswer" genom att lägga till ett till det (resulterande i 6). Om du kör det här skriptet bör du se följande resultat:


Några grundläggande matematik

Återigen klarar detta bara ytan på de typer av operationer du kan utföra på variabler. För nu borde du bara förstå att en variabel inte är statisk. Mycket av kraften bakom något programmeringsspråk är förmågan att manipulera variabler för att utföra en mängd olika uppgifter.


Nyckeln till allt: AppleScript-ordböcker

Även om AppleScript själv har ett brett utbud av kommandon som kan tillämpas på något program eller objekt i OS X, är utvecklarna av varje applikation uppgift att lägga till fullständigt AppleScript-stöd till sina appar. Vad det innebär är att utvecklare måste skriva enkla manualer för hur man kommunicerar med sina applikationer via AppleScript. Dessa manualer kallas "Ordböcker". För att visa en ordlista, gå till Arkiv> Öppna ordbok i Skriptredigerare. Bläddra ner listan över program, klicka på Mail och klicka "OK". Du borde se följande fönster:


Postordboken

Kolumnen till vänster innehåller de tillgängliga "sviterna" av kommandon och objekt. När du klickar på en svit ser du allt som finns i den svit som visas nedan. Du kan begränsa denna förhandsgranskning genom att klicka i den andra kolumnen och sedan igen i den tredje. Sviterna innehåller kommandon (C med en cirkel) och klasser (C med en kvadrat), klasserna innehåller egenskaper (P) och element (E). För att förstå hur allt detta fungerar, låt oss använda den här ordlistan för att skapa ett skript.


Steg 1: Skapa en algoritm för vårt skript

Först behöver vi en algoritm, vilket är ett fint sätt att säga att vi behöver skriva ner exakt vad vårt skript kommer att göra. Vi vill skapa ett manus för att komponera och skicka ett mail. Vi vill använda variabler för att göra det enkelt att ändra meddelandet själv och vem meddelandet skickas till. När vi skriver vår algoritm måste vi komma ihåg hur AppleScript fungerar. Här är stegen jag kom fram till:

  1. Skapa variabler för mottagaren, mottagarens e-postadress, ämnet för e-postmeddelandet och texten för e-postens kropp.
  2. Skapa en variabel som rymmer vårt nya meddelande tillsammans med dess olika egenskaper
  3. Skapa det nya meddelandet
  4. Skicka det nya meddelandet

Steg 2: Skapa några variabler

Vi vet redan hur man skapar variabler som håller text så vi behöver inte ens ordlistan för steg ett. Så här ser koden ut:

[Apple]
--variabler
sätt mottagareNamn till "John Doe"
sätt mottagareAdress till "[email protected]"
ställa in ämnet till "AppleScript-automatiserad e-post"
ställ inContent till "Det här e-postmeddelandet skapades och skickades med hjälp av AppleScript!"
[/ Apple]

Som du kan se har vi bara satt platshållarteksten i variablerna för namnet och e-postadressen till mottagaren, såväl som ämnet och innehållet i vårt meddelande. Du kan ändra dessa till allt du vill. Var noga med att sätta din egen e-postadress i variabeln mottagareAddress så att du kan se till att skriptet fungerar korrekt när du mottar e-postmeddelandet.


Steg 3: Skapa meddelandevariabeln med postordboken

Eftersom vi inte har någon aning om hur vi berätta för Mail för att skapa ett nytt meddelande, så behöver vi hänvisa till AppleScript-ordlistan. Om du klickar på "Standard Suite" ser du flera vanliga kommandon som kommer som standard i AppleScript. Att veta att vi vill "skapa" ett nytt meddelande, vi bläddrar bara igenom alternativen och hittar något likvärdigt. Du kommer att se att det inte finns något "skapa" -kommando, men ungefär halvvägs där är ett "make" -kommando. Det låter perfekt, så vi vet nu att vi ska berätta för AppleScript att vi vill "göra" någonting.

Nästa klick på "Mail" -paketet. Vi har redan fått vårt kommando (make) så rulla ner för kommandona (verb) tills du ser klasserna (substantiv). Den första klassen vi stöter på är "utgående budskap", vilket är bra för det är precis vad vi vill ha! Klicka nu på klassen "Utgående meddelande" och titta på de tillgängliga egenskaperna nedanför.

Vi måste plugga in våra variabler för mottagarens namn, mottagarens e-postadress, ämnet och innehållet i meddelandet. I listan över egenskaper saknas något om mottagaren men det finns egenskaper för ämne och innehåll. Vi vet nu rätt syntax för att referera till dessa egenskaper. Observera att ordlistan ger dig formatet för att definiera egenskaperna. Till exempel för ämnet skriver vi ordet "ämne" följt av ett kolon följt av motivets text.


Ämnesinnehåll

Också i denna svit hittar du ett "send" -kommando, som vi kan använda för att skicka meddelandet genom att helt enkelt skriva "skicka". Vi behöver fortfarande veta rätt syntax för mottagarens namn och e-postadress. Eftersom det inte finns i den här sviten, klicka på "Meddelande" -paketet. Ungefär halvvägs ner i klasslistan hittar vi "mottagare". Klicka på mottagarklassen och vi ser att vi återigen kan använda vanlig engelska för att referera till mottagarens egenskaper. Vi skriver helt enkelt "namn" och "adress".

Du kan använda sökfunktionen för att snabbt, snabba egenskaper, klasser, element och kommandon.

Nu är vi redo att skapa vår meddelandevariabel med hjälp av den syntax som vi just har lärt oss. Så här ser koden ut:

[Apple]
--variabler
sätt mottagareNamn till "John Doe"
sätt mottagareAdress till "[email protected]"
ställa in ämnet till "AppleScript-automatiserad e-post"
ställ inContent till "Det här e-postmeddelandet skapades och skickades med hjälp av AppleScript!"

--Mail Berätta Blockera
berätta ansökan "Mail"

--Skapa meddelandet
ställ in theMessage för att skapa nytt utgående meddelande med egenskaper ämne: theSubject, content: theContent, visible: true

slutet berätta
[/ Apple]

Lägg märke till att jag har skapat ett tell block för att bifoga alla kommandon till Mail-programmet. Sedan ställer jag in en variabel (theMessage) för att "skapa" ett nytt "utgående meddelande" med de ovan beskrivna egenskaperna. Observera också att uppsättningar av egenskaper alltid finns i parentes .


Steg 4: Ställ in mottagaren och skicka meddelandet

Nu när vi har skapat vår meddelandevariabel måste vi ringa den variabeln och skapa ett nytt meddelande med egenskaperna för theMessage. Vi måste också ställa in mottagarna och skicka meddelandet. För att göra detta använder vi ett tell block på vår variabel. Här är vårt färdiga manus.

[Apple]
--variabler
sätt mottagareNamn till "John Doe"
sätt mottagareAdress till "[email protected]"
ställa in ämnet till "AppleScript-automatiserad e-post"
ställ inContent till "Det här e-postmeddelandet skapades och skickades med hjälp av AppleScript!"

--Mail Berätta Blockera
berätta ansökan "Mail"

--Skapa meddelandet
ställ in theMessage för att skapa nytt utgående meddelande med egenskaper ämne: theSubject, content: theContent, visible: true

--Ställ in en mottagare
berätta förMessage
gör nya till mottagare med egenskaper namn: mottagareName, adress: recipientAddress

--Skicka meddelandet
skicka

slutet berätta
slutet berätta
[/ Apple]

Först skapade vi en ny kopia av MESSAGE (som ärver alla de egenskaper vi har lagt in i det) och sätter det "till mottagare med egenskaper". Det här meddelar Mail att vi vill lägga till en mottagare med följande egenskaper. Här använde vi just den syntax som vi lärt oss tidigare och variablerna för mottagarens namn och adress.

Slutligen åberopade vi "send" -kommandot för att skicka vårt meddelande. Observera att vi har två berätta block att stänga den här tiden. När du har sammanställt din kod och fixat några fel på "Kör". Mail ska automatiskt skapa och skicka meddelandet. Tadaah! Kontrollera din skickade mapp för att se till att allt fungerade.


E-postmeddelande

Grattis, du har skapat din första AppleScript! Du kan spara det som ett enkelt skript som du kan komma tillbaka och redigera eller som ett program som körs automatiskt när du öppnar det.


Slutsats: Fortsätt lära

Jag hoppas att den här nybörjarguiden tänker på alla typer av processer och uppgifter som du vill automatisera. Syntaxen jag har visat dig tillsammans med AppleScript-ordböckerna kommer att ta dig en lång väg. Men om du verkligen är intresserad av att implementera AppleScript på ett antal användbara sätt, har du mer läsning att göra. Apple ger mycket information om AppleScript på deras hemsida. Här är ett bra ställe att börja.

En annan hemsida jag har hämtat mycket av är T & B. Det ger några riktigt fördjupade förklaringar och handledning för att du ska följa (lite daterad, men noggrann och fri). Var godkommen att lämna en kommentar och meddela om du hittade den här handledningen till hjälp! Vilka andra AppleScript-tips skulle du vilja se omfattas i framtiden?