Starta dina favoritprogram i grupper med AppleScript

Denna AppleScript-handledning visar dig hur du konfigurerar grupper av appar som kan startas på en gång. Längs vägen lär vi oss att implementera listor, hanterare, om uttalanden och hur man arbetar med resultaten av en användares åtgärder.

Vad vi bygger

Grundidén här är att du förmodligen har olika grupper av appar som du gillar att ha öppna för olika uppgifter, säg för webbdesign eller skrivning. Skulle det inte vara trevligt om du enkelt kan öppna alla dessa appar på en gång när du går in i olika delar av din dag?

Vi kan göra det ganska enkelt med AppleScript. Algoritmen här är bara fyra steg lång:

  1. Ställ in olika appgrupper
  2. Låt användaren välja mellan en lista med appgrupper
  3. Ta tag i resultatet av användarens val
  4. Använd resultatet för att starta en grupp av appar

Starta en grupp av appar med ett enda klick!

Från användarens perspektiv ser du en lista med olika applikationsgrupper som dyker upp på skärmen (arbete, spel, etc.). Du väljer den grupp som du vill starta, slå "OK" och de kommer alla att lanseras för dig. Ganska cool


Steg 1. Konfigurera grupper

Det första vi behöver göra är att etablera våra olika appgrupper. Vi använder tre olika grupper för denna handledning: arbete, spel och produktivitet, som alla innehåller sin egen lista med appar.

Listor i AppleScript

I Applescript är en lista mycket som en variabel, bara den innehåller flera olika objekt istället för bara en. En lista som innehåller vokalerna i det engelska alfabetet ser ut så här:

[Apple]
Ange vokalerLista till "a", "e", "i", "o", "u", "y"
[/ Apple]

Härifrån kan vi ta tag i och arbeta med enskilda listobjekt. Till exempel, följande returnerar "e."

[Apple]
--Returnerar "e"
Ange vokalerLista till "a", "e", "i", "o", "u", "y"
returnera punkt 2 av vokalista
[/ Apple]

Observera att många programmeringsspråk är "noll indexerade" så det första objektet i en array eller lista är faktiskt objekt noll. Det här är inte fallet med AppleScript. Det första objektet i en lista är första posten.


Lägg märke till hur de två språken är indexerade på olika sätt

Våra fyra listor

För det första steget kommer vi att skapa totalt fyra olika listor. De tre första kommer att innehålla exakta appnamn som de visas i OS X och den sista kommer att innehålla de tre kategorier som vi har delat våra appgrupper i: Arbeta, spela och produktivitet.

[Apple]
--Ange grupper
ställa in arbetsgrupp till "Mail", "Safari", "TextEdit"
set playGroup till "Safari", "App Store", "iTunes"
sätt produktivitetsgrupp till "Notes", "Påminnelser", "Mail"
sätt appGroups till "Work", "Play", "Productivity"
[/ Apple]

Här skapar den första raden av kod en variabel, som innehåller en lista över programnamn: Mail, Safari och TextEdit. Jag upprepar denna process två gånger för de andra grupperna.

Den sista raden av kod upprepar samma process, men den här gången fyller listan med tre väsentligen godtyckliga gruppnamn som jag gjorde upp: Arbeta, spela och produktivitet.

Kodning handlar om att ta stora mängder information och placera den i lätt hanterbara konstruktioner.

Fördelen med detta steg är att vi har proppat a ton av information till fyra lätt återkallade variabler. Kodning handlar om att ta stora mängder information och placera den i lätt hanterbara konstruktioner. Vi ser detta på en ännu större skala i nästa steg.

Tips: Jag använde alla standardprogram för mina grupper, men om du inte är på Mountain Lion har du inte noteringar och påminnelser. Ändra programmen i listan till de som du faktiskt har installerat.


Steg 2. Skapa en App Launcher Handler

Efter att ha ställt in mina variabler, gillar jag att gå vidare till alla hanterare som behöver byggas.

I det föregående steget tog vi flera objekt och lade dem in i en lista för att vara bunden till en enda variabel. Med en hanterare gör du något liknande och tar en hel lista med kommandon, handlingar etc. och knyter dem till en variabel.

Som med funktioner på andra språk kan hanterare ställas in för att acceptera en bit av information när de kallas. Denna del av informationen kommer då att skickas in och användas i hela hanteraren.

Vilka åtgärder förtjänar en hanterare?

Hur kan vi veta vilka åtgärder som ska förklaras av sig själva och vilka ska vara inslagna i en hanterare? Tumregeln att leva med är att om du befinner dig att upprepa en stor bit av kod mer än en gång, är det nog dags att ställa in en handlare.

Om du befinner dig att upprepa en stor bit av kod mer än en gång, är det förmodligen dags att ställa in en hanterare.

Senare i vårt skript har vi ett upprepat behov av att starta alla appar inom en angiven lista. Det här är den perfekta platsen för att genomföra en hanterare. Syntaxen för att ställa upp detta ser ut så här:

[Apple]
på appLauncher (selectedGroup)
avsluta appLauncher
[/ Apple]

Som du kan se är det lite som ett berättningsblock, bara det börjar med ordet "on" för att indikera att det är en hanterare. Här är "appLauncher" helt enkelt det namn som jag har valt för min handlare. Som med variabler, behåll alltid dessa enkla och beskrivande.

Nästa del av denna rad visas i parentes: (selectedGroup). Här passerar vi i en variabel som sedan kan nås och bearbetas i hela hanteraren. I vårt fall, när vi använder den här hanteraren senare, kommer vi att passera i en av våra tre appgruppslistor.


En handlers anatomi

The Full Handler

Nu när vi har ett skal som definierar handlarens gränser, kan vi fylla det med kommandon.

[Apple]
--App Launcher Handler
på appLauncher (selectedGroup)
upprepa med i från 1 till (antal objekt i vald grupp)
berätta ansökan (punkt i av vald grupp)
Aktivera
slutet berätta
slutet upprepa
avsluta appLauncher
[/ Apple]

Först ställer jag upp en upprepning som går igenom varje objekt i vilken lista vi passerar in, då använder jag var och en av dessa objekt som en variabel för att fungera som appnamnet i ett tell block. Slutligen lanseras ett enkelt "aktivera" -kommando appsna i listan.


Steg 3. Presentera listan till användaren

Nu när vi har deklarerade våra variabler och vår hanterare har börjat, är det dags att börja interagera med användaren. Vad vi vill göra är att skapa ett dialogfönster som innehåller en lista med alternativ.

Det låter som att det kommer att bli mycket arbete, men i verkligheten är det super enkelt. Vi har redan skapat vår lista över appgrupper, nu behöver vi bara en kort rad kod för att berätta för AppleScript att presentera listan.

[Apple]
--Låt användaren välja en grupp
ställa in theSelection för att välja mellan listappGrupper med titeln "Vilken appgrupp?"
[/ Apple]

Här använde jag kommandot "välja från lista" för att få fram en standard inbyggd dialog och använde "titel" för att tilldela viss text högst upp i dialogrutan.


Dialogrutan Välj från listan

Få resultatet

Observera att vi inte bara berätta för AppleScript att ge användaren en lista. Vi ställer faktiskt hela processen upp som en variabel med "set" -kommandot.

Detta är ett kort och sött sätt att skapa en dialogruta och få resultatet i ett enda steg. Dialogrutan kommer att dyka upp, användaren väljer en appgrupp och resultatet kommer att tilldelas "theSelection" som en variabel.


Steg 4. Konto för annulleringar

Nu kommer den knepiga delen. Användaren har sett och interagerat med dialogrutan och vi måste bearbeta resultatet. För att göra detta måste vi bokstavligen överväga alla möjliga scenarier och redogöra för det. Antag aldrig att användarna kommer att vara logiska eller kompetenta. Anta istället att de tar alla möjliga vägar, speciellt de som sannolikt kommer att orsaka ett fel.

Antag aldrig att användarna kommer att vara logiska eller kompetenta.

Vad ser ut som en avbrytning?

Det första scenariot som jag skulle vilja redovisa är en inställning. Fönstret dyker upp, användaren ändrar sitt sinne och trycker avbryter ... nu vad?

I ett tidigare steg kastade vi resultatet av fönstret in i valet. Om användaren avbryter värdet för denna variabel kommer att ställas in på "false". Denna kunskap gör scenariot lätt att hantera med ett if-uttalande:

[Apple]
--Om användaren avbryter
om theSelection är falskt då
fel nummer -128
avsluta om
[/ Apple]

Så vad är det här fel nummer -128 företag? AppleScript har en hel lista över möjliga fel, som alla har tilldelats ett unikt nummer. Det händer bara att "användaren avbröts" är -128.

Allt vi gör här rapporterar vad som hände så att om du tittat på resultaten av vårt manus i Script Editor, så skulle du se att användaren avbröt operationen. Eftersom den här åtgärden händer, upphör scriptet och försvinner från användarens synvinkel, vilket är exakt vad vi vill ha i detta fall, så det här är så långt vi ska gå hit.


Steg 5. Bestäm vilken grupp som valdes

Nu kommer den stora finishen. Om användaren inte avbryter operationen måste han / hon ha valt en av våra tre grupper. Vårt jobb är att ta reda på vilka och agera i enlighet därmed.

Fixing Our Variable

Innan vi startar i de tre scenarierna, måste vi bearbeta vår variabel lite. När användaren väljer ett objekt och träffar "ok", tilldelar vi faktiskt en lista till theSelection (den har bara ett objekt, men det är ändå en lista).

För att åtgärda detta, helt enkelt överväga variabeln enligt följande.

[Apple]
--Om användaren avbryter
om theSelection är falskt då
fel nummer -128
annan
ställa in avdelningen till punkt 1 i avdelningen
avsluta om
[/ Apple]

Detta verkar lite konstigt, men om du inte gör det, kommer skriptet att kasta ett fel, så var noga med att inte hoppa över det här steget!

Om användaren väljer arbetsgruppen

Nu när vi har gjort den där hushållsarbetet kan vi fortsätta att jämföra användarresultatet med de olika möjligheterna. Det första alternativet är att användaren valde appgruppen "Arbeta".

I det här fallet bör variabeln "theSelection" vara lika med det första objektet i vår "appGroups" -lista (de kommer båda att ha ett värde av "Work"). Låt oss inrätta ett annat om uttalande för att testa sanningen om jämlikheten.

[Apple]
--Om användaren avbryter
om theSelection är falskt då
fel nummer -128
annan
ställa in avdelningen till punkt 1 i avdelningen

--Om valet är arbetsgrupp
om theSelection = (föremål 1 av appGroups) då
appLauncher (ARBETSGRUPP)
avsluta om
avsluta om
[/ Apple]

Som du kan se, om uttalandet visar sig sant, kommer vi att köra vår handlare från tidigare med "workgroup" som den lista vi vill arbeta med.

Vid denna tidpunkt räknar vår hanterare antalet saker i arbetsgruppen och upprepar sedan ett tell-block med ett "aktivera" -kommando för var och en av dessa objekt. Detta kommer att orsaka att Mail, Safari och TextEdit startar framgångsrikt och manuset kommer att avslutas.


Hur vårt uttalande är strukturerat för att arbeta med handlaren.

Efterbehandling

Med hjälp av samma steg kan vi avsluta vårt skript genom att lägga till i två "annat om" -satser som jämför Selektionen med de andra två objekten i appGroups och starta vår hanterare med den aktuella listan som en ingång.

I varje fall går hanteraren igenom och startar programmen från den valda gruppen.

[Apple]
--Om användaren avbryter
om theSelection är falskt då
fel nummer -128
annan
ställa in avdelningen till punkt 1 i avdelningen

--Om valet är arbetsgrupp
om theSelection = (föremål 1 av appGroups) då
appLauncher (ARBETSGRUPP)

--Om valet är playGroup
annars om theSelection = (item 2 of appGroups) då
appLauncher (lekgruppen)

--Om valet är produktivitetGroup
annars om theSelection = (item 3 of appGroups) då
appLauncher (productivityGroup)
annan
lämna tillbaka
avsluta om
avsluta om
[/ Apple]

Avancerad användar Tips: Det här är mycket om uttalanden ska klämma ihop. Kan du skriva om den här koden med ett repetitionsutdrag som liknar det vi använde i början?


Få alltid att falla på plats

Förhoppningsvis gick vi igenom det så långsamt att du fullt ut förstår varje bit av manuset. Här är en titt på hela skriptet i ett skott:

[Apple]
--Ange grupper
ställa in arbetsgrupp till "Mail", "Safari", "TextEdit"
set playGroup till "Safari", "App Store", "iTunes"
sätt produktivitetsgrupp till "Notes", "Påminnelser", "Mail"
sätt appGroups till "Work", "Play", "Productivity"

--App Launcher Handler
på appLauncher (selectedGroup)
upprepa med i från 1 till (antal objekt i vald grupp)
berätta ansökan (punkt i av vald grupp)
Aktivera
slutet berätta
slutet upprepa
avsluta appLauncher

--Låt användaren välja en grupp
ställa in theSelection för att välja mellan listappGrupper med titeln "Vilken appgrupp?"

--Om användaren avbryter
om theSelection är falskt då
fel nummer -128
annan
ställa in avdelningen till punkt 1 i avdelningen

--Om valet är arbetsgrupp
om theSelection = (föremål 1 av appGroups) då
appLauncher (ARBETSGRUPP)

--Om valet är playGroup
annars om theSelection = (item 2 of appGroups) då
appLauncher (lekgruppen)

--Om valet är produktivitetGroup
annars om theSelection = (item 3 of appGroups) då
appLauncher (productivityGroup)
annan
lämna tillbaka
avsluta om
avsluta om
[/ Apple]

Nu när du har hela skriptet, spara det som ett program, ge det en fin ikon och kasta den i din docka.


Skriv ditt eget!

Om du framgångsrikt följt igenom denna handledning och förstår alla steg, grattis! Du är definitivt en mer än kompetent AppleScripter och det är dags att filialera på egen hand och skapa några fantastiska skript.

Lämna en kommentar nedan och berätta om de skript som du har byggt för din Mac. Om du har några andra idéer för skript som jag ska täcka, låt mig veta.