AppleScript: alles wat je wilt weten over Apple’s scripttaal
AppleScript
AppleScript is de scripttaal van Apple. Het biedt je de mogelijkheid om allerlei taken te automatiseren in toepassingen zoals Automator. Vooral bij herhalende taken kan dat handig zijn, zeker als er meerdere apps aan te pas komen. In dit artikel vertellen we wat AppleScript is en hoe het werkt.
Wat is AppleScript?
AppleScript is een scripttaal waarmee je acties in macOS kunt automatiseren. Dit kan bijvoorbeeld gaan om het kopiëren van een bestand of een complexere taak zoals het samenstellen van een nieuwsbrief. De taak wordt uitgevoerd aan de hand van de regels en commando’s die je zelf hebt ingesteld. Maar het script kan ook zelf acties ondernemen op basis van de uitkomst.
Dit heb je nodig voor AppleScript
Om AppleScript te gebruiken heb je maar twee dingen nodig:
- Een Mac
- Scripteditor (standaard aanwezig op elke Mac)
Je schrijft de code in de Scripteditor en slaat het vervolgens op een willekeurige locatie op. Standaard kiest de app daarvoor de map Scripteditor op iCloud, maar je kunt het ook lokaal opslaan. Een script-bestand heeft de extensie .scpt.
Wil je een script uitvoeren, dan dubbelklik je op het scpt-bestand. De Scripteditor opent en je kunt op de Play-knop drukken om het script uit te voeren.
Zo werkt AppleScript
Om acties te kunnen automatiseren heeft de computer een serie instructies nodig, het zogenaamde ‘script’. Deze instructies worden doorgegeven aan de betreffende apps. De apps interpreteren de instructies en voeren de acties uit die in het script staan.
Hieronder zie je een eenvoudig script, dat we verderop zullen uitleggen. Dit script sluit alle vensters van de Finder en opent daarna een nieuw Finder-venster voor jouw ‘thuismap’:
tell application "finder"
close every window
open home
end tell
AppleScript-code bestaat dus uit eenvoudige Engelstalige instructies, waardoor het gemakkelijk te gebruiken is. Je hoeft geen programmeur te zijn om de opdrachten te begrijpen. Je schrijft de opdrachten in de Script Editor, die gratis aanwezig is in macOS.
Nadat je een script hebt gemaakt ‘run’ (of ‘draai’) je het script vanuit de Script Editor. Of je slaat het op, om later vanuit een andere app te gebruiken.
Wil je op een later moment een script gebruiken, dan start je het vanuit het menu van de Script Editor of vanuit een andere app. Een AppleScript kan ook worden getriggered door een gebeurtenis, bijvoorbeeld als je een bestand in een map zet of als er bepaalde uitvoer uit een app komt. Verder kun je AppleScripts gebruiken in de Automator, het hulpmiddel voor het maken van geautomatiseerde workflows. Je voegt aan je workflow dan een stap toe, waarin je Automator opdracht geeft om een bepaald script uit te voeren.
Wat kun je doen met AppleScript?
Je kunt AppleScript gebruiken vanuit elke app, maar het werkt het beste als de software er ondersteuning voor heeft en een reeks commando’s aanbiedt die je kunt gebruiken. Dit geldt bijvoorbeeld voor Mail, Pages en Numbers.
AppleScripts worden geschreven in de Script-editor. Je kunt op twee manieren een script maken:
- Een bestaand script in de editor plakken
- Handmatig intypen
- Acties vastleggen die je op de Mac uitvoert
De eerste optie is veruit het meest eenvoudig, maar de andere twee zijn ook wel te doen, als je weet wat je wilt.
Zelf AppleScript intikken
Aan de hand van een voorbeeld gaan we zelf een stukje AppleScript intikken:
- Open de Script Editor in de map met Hulpprogramma’s.
- Je ziet nu een venster. Tik op Nieuw document.
- Voer de volgende tekst bovenin het scherm in.
tell application "Finder"
display dialog "Hello World"
end tell
De commando’s staan in het ‘tell’-blok, waarmee je aangeeft wat er moet gebeuren. Je eindigt de commando’s met ‘end tell’. Je moet elk blok correct afsluiten, anders werkt het niet.
Ben je klaar met invoeren van de code, dan klik je op het hamer-icoon om de code te compileren. De computer controleert of de gebruikte syntax correct is en wijst op eventuele fouten. Heb je het goed gedaan, dan krijgt de code een overzichtelijke opmaak in kleur.
AppleScript runnen
Nadat je code is gecompileerd kun je het ‘runnen’ door op de afspeelknop met het pijltje te drukken. In dit voorbeeld krijg je een pop-up met de tekst ‘Hello World’ te zien.
Echt spannend is dit natuurlijk niet. Daarom hebben we hier een script dat wat nuttiger is. Met onderstaand script sluit je alle Finder-vensters en open je een nieuw venster:
tell application "finder"
close every window
open home
end tell
AppleScript maken door stappen zelf uit te voeren
Je kunt ook AppleScript maken door een aantal handelingen uit te voeren. Dit werkt bijvoorbeeld als volgt:
- Kies New Document in de Script Editor.
- Klik op de rode opnameknop bovenin het scherm.
- Klik op de desktop, druk Cmd+Shift+N om een nieuwe map te maken.
- Geef deze map de naam ‘Mijn nieuwe map’.
- Druk in de Script Editor op de stopknop om de opname te stoppen.
In het scriptvenster zie je de stappen die je hebt uitgevoerd, ook weer in begrijpelijk Engels. Voordat je er iets mee kunt doen zul je het ook nu weer eerst moeten compileren, waarbij de syntax wordt gecontroleerd en het script wordt voorbereid om te gebruiken.
Jouw script zou er als volgt uit moeten zien:
tell application "Finder"
make new folder at desktop with properties {name:"Mijn nieuwe map"}
end tell
Het vastleggen van stappen werkt helaas niet in elke app die AppleScript ondersteunt. Het is dus een kwestie van uitproberen. Eén van de apps waarmee je AppleScript goed kunt testen is de Mail-app.
Variabelen in AppleScript
Variabelen werken in AppleScript op dezelfde manier als in andere script- en programmeertalen. Je kunt hiermee bepaalde waardes opslaan, die je later kunt oproepen. Deze waarde kun je opgeven in de code zelf, of ophalen op basis van een berekening. Je kunt de gebruiker ook om invoer vragen.
Als je bepaalde data meermaals nodig hebt, is het slim om daarvoor een variabele te gebruiken, bijvoorbeeld de naam of de locatie van een Finder-map. Je hoeft dan niet steeds aan te geven om welke waarde het gaat en je kunt gemakkelijker een lang stuk code aan te passen, omdat je de waarde maar op één plek hoeft aan te passen. Hieronder zie je een paar voorbeelden:
Naam van een actieve app of een actief venster ophalen:
get the name of front window
Een variabele instellen
set variable to “dit is mijn variabele”
Een dialoogvenster tonen:
display dialog “dit is mijn tekst”
Het geluidsvolume instellen op een waarde tussen 0 (stil) en 10 (luid):
set volume 10
Je schrijft een variabele met een kleine beginletter, zonder spaties. Variabelen werken in elke programmeertaal hetzelfde, maar je moet net even weten hoe je in AppleScript een variabele declareert. Daarbij is niet altijd een ‘tell’ nodig. De opdracht ‘set’ werkt bijvoorbeeld zonder dat je eerst een ‘tell’-opdracht hoeft te geven, zoals onderstaand voorbeeld laat zien:
set ditIsMijnTekst to "Hello World"
tell application "Finder"
display dialog ditIsMijnTekst
end tell
Dit is een variant op het eerder gegeven stukje script. In dit geval kun je de tekst die moet worden afgebeeld gemakkelijk wijzigen door de waarde van ‘ditismijntekst’ aan te passen. We hebben voor het gemak even een Nederlandstalige variabele gebruikt om duidelijk te maken dat je je variabele een zelfbedachte naam kunt geven. Maar als je van plan bent je script met anderen te delen, dan is het beter om voor Engels te kiezen.
In veel programmeertalen moet je aangeven om welk type variabele het gaat (text, integer, floating point, etc) maar dat hoeft bij AppleScript niet. De scripttaal begrijpt hoe je je variabele wilt gebruiken.
Voor het schrijven van variabelen kun je twee methoden gebruiken, met liggende streepjes (dit_is_mijn_tekst) of met hoofdletters (ditIsMijnTekst), als je maar zorgt dat de eerste letter klein wordt geschreven en dat je consistent blijft. Anders ziet het er slordig uit. Het is ook slim om je variabelen een herkenbare naam te geven, dus niet myVariable.
Tip: gebruik commentaar in AppleScript
Als je veel scripts maakt is het soms lastig om te achterhalen wat een bepaald stuk code doet. Daarom is het een goede gewoonte om je script te voorzien van een beschrijving en commentaar. Dit kan op meerdere manieren, liefst in het Engels.
Je kunt voorafgaand aan een stap met twee liggende streepjes aangeven wat een bepaalde stap doet:
-- my comment
display dialog "Hello World"
Als er veel uitleg nodig is mag je meerdere regels gebruiken:
-- comment 1
-- comment 2
Je kunt het commentaar ook achter de code zetten:
display dialog "Hello World" -- my comment
Eventueel mag je de hashtag gebruiken voor commentaar:
# my comment
Programmeurs zetten hun commentaar vaak op de volgende manier boven het script:
(* Hello world,
dit is mijn eerste poging
om AppleScript te gebruiken. *)
Vaak zetten ze in het commentaar ook wie het script heeft bedacht en/of een update van het script heeft gemaakt.
Wil je dieper in AppleScript duiken, dan vind je op de Apple-website het volledige overzicht met alle commando’s die je kunt gebruiken.
Voorbeeld: Mail automatiseren met AppleScript
Nu je weet hoe AppleScript werkt, begrijp je ook hoe onderstaand script werkt. Daarmee kun je een mailtje naar John sturen om hem te herinneren aan zijn tandartsafspraak:
--Variables
set recipientName to "John Doe"
set recipientAddress to "john@doe.com"
set theSubject to "Tandartsafspraak"
set theContent to "Hallo John, het is weer tijd voor je halfjaarlijkse tandartsafspraak!"
--Mail Tell Block
tell application "Mail"
--Create the message
set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
end tell
Lees ook onze uitleg over Automator voor nog meer mogelijkheden om taken op je Mac te automatiseren.
Taalfout gezien of andere suggestie hoe we dit artikel kunnen verbeteren? Laat het ons weten!