Start favorittapplikasjonene dine i grupper med AppleScript

Denne AppleScript-opplæringen vil vise deg hvordan du konfigurerer grupper av programmer som kan lanseres alt på en gang. Underveis lærer vi hvordan du implementerer lister, håndtere, om setninger og hvordan du arbeider med resultatene av en brukers handlinger.

Hva vi bygger

Den grunnleggende ideen her er at du sannsynligvis har forskjellige grupper av apper som du liker å ha åpne for ulike oppgaver, for eksempel for webdesign eller skriving. Ville det ikke vært fint hvis du enkelt kunne åpne alle disse appene samtidig, mens du går inn i forskjellige deler av dagen?

Vi kan oppnå dette ganske enkelt med AppleScript. Algoritmen her er bare fire trinn lang:

  1. Konfigurer ulike appgrupper
  2. Tillat brukeren å velge fra en liste over appgrupper
  3. Ta tak i resultatet av brukerens valg
  4. Bruk resultatet til å starte en gruppe apper

Start en gruppe apper med ett enkelt klikk!

Fra et brukerperspektiv ser du en liste over forskjellige applikasjonsgrupper som dukker opp på skjermen (arbeid, spill, etc.). Du velger gruppen du vil lansere, trykk "OK" og de vil alle bli lansert for deg. Ganske kult


Trinn 1. Konfigurer grupper

Det første vi må gjøre er å etablere våre ulike appgrupper. Vi bruker tre forskjellige grupper for denne opplæringen: arbeid, spill og produktivitet, som hver inneholder sin egen liste over programmer.

Lister i AppleScript

I Applescript er en liste mye som en variabel, bare den inneholder flere forskjellige elementer i stedet for bare en. En liste som inneholder vokalene i det engelske alfabetet, vil se slik ut:

[Apple]
sett vokalerListe til "a", "e", "jeg", "o", "u", "y"
[/ Apple]

Herfra kan vi ta tak i og arbeide med individuelle listeposter. For eksempel, returnerer følgende "e."

[Apple]
--Returnerer "e"
sett vokalerListe til "a", "e", "jeg", "o", "u", "y"
returnere element 2 av vokaliste
[/ Apple]

Legg merke til at mange programmeringsspråk er "null indeksert", så det første elementet i en matrise eller liste er faktisk objekt null. Dette er ikke tilfelle med AppleScript. Det første elementet i en liste er element ett.


Legg merke til hvordan de to språkene er indeksert forskjellig

Våre fire lister

For det første trinnet skal vi sette opp totalt fire forskjellige lister. De tre første vil inneholde eksakte appnavn som de vises i OS X, og den siste inneholder de tre kategoriene som vi har delt inn våre appgrupper i: Arbeid, spill og produktivitet.

[Apple]
--Angi grupper
sett arbeidsgruppen til "Mail", "Safari", "TextEdit"
sett spilleregruppe til "Safari", "App Store", "iTunes"
sett produktivitetGroup til "Notes", "Påminnelser", "Mail"
sett appGroups til "Work", "Play", "Productivity"
[/ Apple]

Her oppretter den første linjen med kode en variabel, som inneholder en liste over søknadsnavn: Mail, Safari og TextEdit. Jeg gjentar denne prosessen to ganger for de andre gruppene.

Den siste kodelinjen gjentar samme prosess, men denne gangen fylles listen med tre hovedsakelig vilkårlig gruppe navn som jeg laget: Arbeid, spill og produktivitet.

Koding handler om å ta store mengder informasjon og plassere den i lett håndterbare konstruksjoner.

Fordelen med dette trinnet er at vi har crammed a tonn av informasjon til fire lett tilbakekalte variabler. Koding handler om å ta store mengder informasjon og plassere den i lett håndterbare konstruksjoner. Vi ser dette på enda større skala i neste trinn.

Tips: Jeg brukte alle standardapps for gruppene mine, men hvis du ikke er i Mountain Lion, har du ikke Notater og påminnelser. Endre appene i listen til de som du faktisk har installert.


Trinn 2. Opprett en App Launcher Handler

Etter å ha satt opp variablene mine, liker jeg å gå videre til alle håndtere som må bygges.

I det forrige trinnet tok vi flere elementer og plasserte dem i en liste som skulle knyttes til en enkelt variabel. Med en handler gjør du noe lignende og tar en hel liste over kommandoer, handlinger, etc. og knytte dem til en variabel.

Som med Funksjoner på andre språk, kan håndterere settes opp for å akseptere et stykke informasjon når de blir kalt. Denne informasjonen vil da bli "sendt inn" og brukt i hele handleren.

Hvilke handlinger fortjener en handler?

Hvordan kan vi vite hvilke handlinger som skal deklareres av seg selv og som skal pakkes inn i en handler? Tommelfingerregelen for å leve med er at hvis du finner deg selv å gjenta en betydelig del av koden mer enn en gang, er det nok tid til å sette opp en handler.

Hvis du finner deg selv å gjenta en betydelig del av koden mer enn én gang, er det nok tid å sette opp en handler.

Senere i skriptet vårt, har vi et gjentatt behov for å starte alle appene i en gitt liste. Dette er det perfekte stedet å implementere en handler. Syntaxen for å sette opp dette ser slik ut:

[Apple]
på appLauncher (valgtGruppe)
avslutte appLauncher
[/ Apple]

Som du kan se, er det litt som en fortell blokk, bare det begynner med ordet "på" for å indikere at det er en handler. Her er "appLauncher" bare det navnet jeg har valgt for håndtereren min. Som med variabler, hold alltid disse enkle og beskrivende.

Neste del av denne linjen vises i parentes: (valgtGruppe). Dette er hvor vi passerer i en variabel som deretter kan nås og behandles gjennom hele handleren. I vårt tilfelle, når vi bruker denne handleren senere, vil vi passere i en av våre tre appgruppelister.


Anatomien til en håndterer

The Full Handler

Nå som vi har et skall som definerer handlerens grenser, kan vi fylle det med kommandoer.

[Apple]
--App Launcher Handler
på appLauncher (valgtGruppe)
gjenta med jeg fra 1 til (antall elementer i valgtGruppe)
Fortell søknad (element I av valgtGruppe)
aktivere
slutt tell
slutt gjenta
avslutte appLauncher
[/ Apple]

Først oppretter jeg en gjentakelse som går gjennom hvert element i hvilken liste vi passerer inn, så bruker jeg hvert av disse elementene som en variabel for å tjene som appnavn i en fortellingsblokk. Endelig lanserer en enkel "aktiver" kommando appene i listen.


Trinn 3. Presentér listen til brukeren

Nå som vi har oppgitt våre variabler og vår forhandler satt opp, er det på tide å begynne å samhandle med brukeren. Det vi ønsker å gjøre er å opprette et dialogvindu som inneholder en liste over alternativer.

Dette høres ut som om det vil være mye arbeid, men i virkeligheten er det super enkelt. Vi har allerede opprettet vår appGroups liste, nå trenger vi bare en kort linje med kode for å fortelle AppleScript å presentere listen.

[Apple]
--La brukeren velge en gruppe
sett seleksjonen for å velge fra listen appGrupper med tittelen "Hvilken appgruppe?"
[/ Apple]

Her brukte jeg kommandoen "velge fra liste" for å få fram en standard innebygd dialog og brukt "tittel" for å tilordne litt tekst øverst i dialogboksen.


Dialogen Velg fra liste

Å få resultatet

Legg merke til at vi ikke bare fortalte AppleScript å gi brukeren en liste. Vi satt faktisk hele prosessen opp som en variabel med "sett" -kommandoen.

Dette er en kort og fin måte å skape en dialog på og få resultatet alt i ett enkelt trinn. Dialogen vil dukke opp, brukeren velger en appgruppe, og resultatet blir tilordnet "theSelection" som en variabel.


Trinn 4. Konto for kanselleringer

Nå kommer den vanskelige delen. Brukeren har sett og interagert med dialogboksen, og vi må behandle resultatet. For å gjøre dette må vi bokstavelig talt vurdere hvert mulig scenario og ta hensyn til det. Anta aldri at brukerne vil være logiske eller kompetente. I stedet anta at de vil ta alle mulige ruter, spesielt de som sannsynligvis vil forårsake en feil.

Anta aldri at brukerne vil være logiske eller kompetente.

Hva ser en avbryt ut som?

Det første scenariet jeg vil gjerne forklare er en kansellering. Vinduet dukker opp, brukeren endrer sitt sinn, og pressene avbryter ... nå hva?

I et tidligere trinn kastet vi resultatet av vinduet inn i Seleksjonen. Hvis brukeren kansellerer, blir verdien av denne variabelen satt til "false". Denne kunnskapen gjør situasjonen enkel å håndtere med en if-setning:

[Apple]
--Hvis brukeren kansellerer
hvis theSelection er feil da
feilnummer -128
slutt om
[/ Apple]

Så hva er dette feilnummer -128 virksomhet? AppleScript har en hel liste over mulige feil, som hver er tildelt et unikt nummer. Det skjer bare slik at "bruker avbrutt" er -128.

Alt vi gjør her, rapporterer hva som skjedde slik at hvis du så på resultatene av skriptet i Script Editor, ville du se at brukeren avbrutt operasjonen. Da denne handlingen skjer, avslutter skriptet og forsvinner fra brukerens syn, noe som er akkurat det vi ønsker i dette tilfellet, så dette er så langt vi kommer til å gå her.


Trinn 5. Bestem hvilken gruppe som ble valgt

Nå kommer den store finishen. Hvis brukeren ikke avbryter operasjonen, må han / hun ha valgt en av våre tre grupper. Vår jobb er å finne ut hvilke og handle tilsvarende.

Å fikse vår variabel

Før vi starter i disse tre scenariene, må vi behandle vår variabel litt. Når brukeren velger et element og treffer "ok", tilordner vi faktisk en liste til seleksjonen (den har bare ett element, men det er en liste likevel).

For å fikse dette, overstyr du bare variabelen som følger.

[Apple]
--Hvis brukeren kansellerer
hvis theSelection er feil da
feilnummer -128
ellers
sett seleksjonen til element 1 i seleksjonen
slutt om
[/ Apple]

Dette virker litt rart, men hvis du ikke gjør det, vil skriptet kaste en feil, så vær sikker på at du ikke hopper over dette trinnet!

Hvis brukeren velger arbeidsgruppen

Nå som vi har gjort det litt husarbeid, kan vi fortsette å sammenligne brukerresultatet med de ulike mulighetene. Det første alternativet er at brukeren valgte appgruppen "Arbeid".

I dette tilfellet bør variabelen "theSelection" være lik den første artikkelen i vår "appGroups" -liste (de vil begge ha en verdi på "Work"). La oss sette opp en annen hvis setning for å teste sannheten om likestilling.

[Apple]
--Hvis brukeren kansellerer
hvis theSelection er feil da
feilnummer -128
ellers
sett seleksjonen til element 1 i seleksjonen

--Hvis valg er arbeidsgruppe
hvis theSelection = (element 1 av appGroups) da
appLauncher (arbeidsgruppe)
slutt om
slutt om
[/ Apple]

Som du kan se, hvis utsagnet viser seg sant, skal vi løpe vår handler fra før med "workgroup" sendt inn som listen vi vil jobbe med.

På dette tidspunktet vil vår håndterer telle antall elementer i arbeidsgruppen, deretter gjenta en fortellingsblokk med en "aktiver" -kommando for hver av disse elementene. Dette vil føre til at Mail, Safari og TextEdit startes vellykket, og skriptet avsluttes.


Hvordan vår om setning er strukturert for å jobbe med handleren.

Etterbehandling

Ved å bruke disse samme trinnene, kan vi avslutte vårt skript ved å legge i to "annet hvis" setninger som sammenligner Seleksjonen med de to andre elementene i appGroups og lanserer vår handler med den aktuelle listen som en inngang.

I hvert tilfelle vil håndtereren gå gjennom og starte appene fra den valgte gruppen.

[Apple]
--Hvis brukeren kansellerer
hvis theSelection er feil da
feilnummer -128
ellers
sett seleksjonen til element 1 i seleksjonen

--Hvis valg er arbeidsgruppe
hvis theSelection = (element 1 av appGroups) da
appLauncher (arbeidsgruppe)

--Hvis valg er playGroup
ellers hvis theSelection = (element 2 av appGroups) da
appLauncher (leke)

--Hvis valg er produktivitetGroup
ellers hvis theSelection = (element 3 av appGroups) da
appLauncher (productivityGroup)
ellers
komme tilbake
slutt om
slutt om
[/ Apple]

Avansert bruker tips: Dette er mye hvis uttalelser til å hoppe sammen. Kan du omskrive denne koden ved hjelp av en gjentatt setning som ligner på det vi brukte i begynnelsen?


Sette alt sammen

Forhåpentligvis gikk vi gjennom det sakte nok til at du fullt ut forstår hvert stykke skript. Her er en titt på hele skriptet i ett skudd:

[Apple]
--Angi grupper
sett arbeidsgruppen til "Mail", "Safari", "TextEdit"
sett spilleregruppe til "Safari", "App Store", "iTunes"
sett produktivitetGroup til "Notes", "Påminnelser", "Mail"
sett appGroups til "Work", "Play", "Productivity"

--App Launcher Handler
på appLauncher (valgtGruppe)
gjenta med jeg fra 1 til (antall elementer i valgtGruppe)
Fortell søknad (element I av valgtGruppe)
aktivere
slutt tell
slutt gjenta
avslutte appLauncher

--La brukeren velge en gruppe
sett seleksjonen for å velge fra listen appGrupper med tittelen "Hvilken appgruppe?"

--Hvis brukeren kansellerer
hvis theSelection er feil da
feilnummer -128
ellers
sett seleksjonen til element 1 i seleksjonen

--Hvis valg er arbeidsgruppe
hvis theSelection = (element 1 av appGroups) da
appLauncher (arbeidsgruppe)

--Hvis valg er playGroup
ellers hvis theSelection = (element 2 av appGroups) da
appLauncher (leke)

--Hvis valg er produktivitetGroup
ellers hvis theSelection = (element 3 av appGroups) da
appLauncher (productivityGroup)
ellers
komme tilbake
slutt om
slutt om
[/ Apple]

Nå som du har fullt skript, lagre det som et program, gi det et fancy ikon og kaste det i docken din.


Skriv din egen!

Hvis du har fulgt gjennom denne opplæringen og forstår alle trinnene, gratulerer! Du er definitivt en mer enn kompetent AppleScripter, og det er på tide å forgrene deg selv og lage noen flotte skript.

Legg igjen en kommentar nedenfor og fortell meg om de skriptene du har bygget for Macen din. Også, hvis du har noen andre ideer til skript som jeg skal dekke, gi meg beskjed.