AppleScript - Οδηγός για αρχάριους
up_icon
How-To

AppleScript – Οδηγός για αρχάριους

23 Δεκεμβρίου 2010 Elpidis Christos

AppleScript – Οδηγός για αρχάριους

Η AppleScript είναι μια πολύ ισχυρή γλώσσα προγραμματισμού, ενσωματωμένη στο OS X, βασική αρχή της οποίας είναι η αυτοματοποίηση διαδικασιών που κανονικά είναι επαναλαμβανόμενες και χρονοβόρες, όπως π.χ. η εβδομαδιαία αποστολή καταλόγου στους πελάτες ενός καταστήματος, και το καλύτερο από όλα είναι ότι δεν χρειάζεται να έχετε γνώσεις προγραμματιστή για να το χρησιμοποιήσετε!

Main Window

Ξεκίνημα: Tell Block

Για να δημιουργήσετε ένα AppleScript, ανοίξτε την εφαρμογή ”AppleScript Editor” από το φάκελο Applications ή μπορείτε να το βρείτε από την μπάρα αναζήτησης. Θα δείτε το παραπάνω παράθυρο και στον μεγάλο κενό χώρο γράψτε τον παρακάτω κωδικό:

Starting Code

Η γλώσσα AppleScript χρησιμοποιεί απλά Αγγλικά οπουδήποτε είναι δυνατό, για να κάνει τον προγραμματισμό όσο γίνεται πιο απλό. Οι περισσότερες εντολές δίνονται μέσα στο “tell block”, το οποίο ονομάζεται έτσι επειδή ουσιαστικά “λέτε” σε μια εφαρμογή το τί θέλετε να κάνει. Για παράδειγμα, προηγουμένως είπαμε στην εφαρμογή Finder να εμφανίσει ένα dialog window το οποίο θα περιλαμβάνει τη φράση “Hello MacUser!”. Όταν ολοκληρώσετε με την ενέργεια/ες  που θέλετε να εκτελέσει κάποια εφαρμογή, κλείνετε το “tell block” με τη φράση “end tell”, διαφορετικά δεν θα μπορεί να εκτελεστεί.

Correct Code

Αφού έχετε γράψει τον παραπάνω κώδικα, πατήστε την επιλογή “Compile”. Εάν η σύνταξη του είναι σωστή, ο κώδικας σας θα χρωματιστεί αυτόματα, διαφορετικά θα σας υποδείξει σε πιο μέρος έχετε κάνει λάθος και θα σας εμφανίσει μήνυμα με το τι μπορεί να είναι λάθος. Παρακάτω μπορείτε να δείτε τα διάφορα χρώματα που μπορεί να εμφανιστούν στον compiled κωδικό σας (AppleScript Editor –>Preferences).

Code Colors

Αφού ο κωδικός σας έχει γίνεi compile, πατήστε την επιλογή “Run”. Θα πρέπει να σας εμφανιστεί το παρακάτω παράθυρο:

Result Window

Στη συνέχεια πατήστε “OK” και θα δείτε στο κάτω παράθυρο του AppleScript Editor το αποτέλεσμα της ενέργειας σας.

Button Return

Δήλωση Μεταβλητών

Οι μεταβλητές έχουν ουσιαστικά την ίδια σημασία σε κάθε γλώσσα προγραμματισμού, καθώς παρέχουν έναν εύκολο τρόπο πρόσβασης και διαχείρισης αρκετών πληροφοριών σε ένα μικρό μέρος του κώδικα. Όμως, η δήλωση των μεταβλητών διαφέρει ανάλογα με την γλώσσα που χρησιμοποιούμε. Στην AppleScript γίνεται ως εξής:

Set Variable

Όπως βλέπετε, η μεταβλητή δηλώνεται με τις εντολές “set” και “to”. Με αυτό τον τρόπο δηλώνετε ότι το όνομα της μεταβλητής, στην προκειμένη περίπτωση “macforce”, ισούται με κάτι, εδώ “Hello MacUser!”. Στις περισσότερες γλώσσες προγραμματισμού χρειάζεται να δηλώσετε εξ’ αρχής τον τύπο της μεταβλητής (π.χ. ακέραιος αριθμός, κείμενο κλπ.), αλλά η AppleScript αναγνωρίζει αυτόματα τον τύπο!

Ακόμη, δεν μπορείτε να έχετε κενό στον τίτλο της μεταβλητής και εάν είναι παραπάνω από μία λέξη τη δηλώνετε με κάποιον από τους γνωστούς τρόπους γραφής (π.χ. theVariable ή the_variable). Καλό είναι να ονομάζεται τις μεταβλητές σας με σαφή ονόματα για να ξέρετε εύκολα ποιος είναι ο λόγος της ύπαρξης τους.

Στο παράδειμα μας, μπορούμε να καλούμε τη μεταβλητή “macforce” στην οποία περιέχεται η φράση “Hello MacUser!” όσες φορές θέλουμε, ενώ εάν αλλάξουμε τη φράση στην αρχική δήλωση της μεταβλητής, θα αλλάξει αυτόματα σε όλο τον κώδικα χωρίς να απαιτείται χρονοβόρα διαδικασία.

Εργασία Με Μεταβλητές

Παρακάτω μπορείτε να δείτε ένα πολύ απλό παράδειγμα με χρήση των μεταβλητών, ουσιαστικά μια μαθηματική πράξη. Γενικότερα, υπάρχει πληθώρα λειτουργιών που μπορείτε να εκτελέσετε με τη χρήση των μεταβλητών.

Mathematical Example

Όταν αυξάνεται το μέγεθος του κώδικα που γράφετε καλό είναι να κρατάτε σημειώσεις σε μορφή σχολίου πριν από κάθε τμήμα του, για να μπορείτε να αναγνωρίσετε εύκολα τα κομμάτια που σας ενδιαφέρουν ή που μπορεί να έχουν κάποιο λάθος. Για να εισάγετε σχόλιο πληκτρολογείτε δύο παύλες στην αρχή της σειράς “–“. Ας επιστρέψουμε στο παράδειγμα μας:

Δημιουργήσαμε δύο μεταβλητές “First_number” και “Second_number”, τις οποίες δηλώσαμε ότι είναι ίσες με “4” και “2” αντίστοιχα, και στη συνέχεια δημιουργήσαμε τη μεταβλητή “Answer”, την οποία δηλώσαμε ότι είναι ίση με το άθροισμα των “First_number” και “Second_number”.

Ακόμη, μπορείτε να παρατηρήσετε ότι είναι δυνατή η αλλαγή της μεταβλητής μετά τη δήλωση της, αφού αμέσως μετά αφαιρούμε μία μονάδα από το σύνολο της “Answer”. Εάν τρέξετε τον κώδικα θα πρέπει να πάρετε το ακόλουθο αποτέλεσμα:

Mathematical Equation Result

Επαναλαμβάνουμε, ότι το παραπάνω παράδειγμα είναι μηδαμινό μπροστά στις δυνατότητες του AppleScript, αλλά είναι καλό για να καταλάβετε ότι οι μεταβλητές δεν είναι κάτι στατικό. Η αλήθεια είναι ότι πίσω από τη δύναμη κάθε γλώσσας προγραμματισμού κρύβεται η δυνατότητα διαχείρισης των μεταβλητών για την εκτέλεση διάφορων εργασιών.

AppleScript Dictionaries


Αν και η AppleScript διαθέτει ένα μεγάλο εύρος εντολών που μπορεί να εφαρμοστεί σε οποιοδήποτε πρόγραμμα του OS X, οι δημιουργοί των προγραμμάτων αυτών επιφορτίζονται με την προσθήκη πλήρης υποστήριξης της AppleScript από τις εφαρμογές τους. Αυτό σημαίνει ότι πρέπει να γράψουν μικρά εγχειρίδια που δείχνουν τον τρόπο επικοινωνίας της AppleScript με την εφαρμογή τους, τα οποία ονομάζονται ”Dictionaries”. Για να δείτε ένα dictionary, πηγαίνετε στο AppleScript Editor–>File–>Open Dictionary και θα δείτε μία λίστα από τις εφαρμογές του Mac σας.

AppleScript Dictionaries

Θα δούμε ένα παράδειγμα επιλέγοντας από τη λίστα το πρόγραμμα Mail. Αφού το επιλέξετε θα δείτε την παρακάτω εικόνα:

Mail Dictionary

Η στήλη στα αριστερά δείχνει τα διαθέσιμα “Suites” με εντολές και αντικείμενα. Όταν επιλέξετε μία Suite, θα δείτε ό,τι περιέχει στο κάτω παράθυρο, ενώ γενικά περιλαμβάνουν εντολές (C σε κύκλο), κλάσεις (C σε τετράγωνο), ιδιότητες (P) και στοιχεία (E). Για να καταλάβετε πως λειτουργεί θα χρησιμοποιήσουμε ένα dictionary στη συνέχεια.

Δημιουργία Αλγόριθμου

Αρχικά χρειαζόμαστε ένα αλγόριθμο, δηλαδή να γράψουμε ακριβώς τι θέλουμε να κάνει ο κώδικας. Στην προκειμένη περίπτωση θα φτιάξουμε έναν κώδικα για τη σύνθεση και αποστολή email. Φυσικά, θα χρησιμοποιήσουμε μεταβλητές για να διευκολύνουμε την δυνατότητα αλλαγής του μηνύματος, καθώς και την αλλαγή του παραλήπτη. Θα ακολουθήσουμε λοιπόν τα παρακάτω βήματα:

  1. Δημιουργία μεταβλητών για τον παραλήπτη, τη διεύθυνση του, το θέμα και το κείμενο του email.
  2. Δημιουργία μεταβλητής που αφορά το νέο μήνυμα και τις διάφορες ιδιότητες του.
  3. Δημιουργία του νέου μηνύματος.
  4. Αποστολή του νέου μηνύματος.

Ήδη γνωρίζουμε πως να δημιουργήσουμε απλές μεταβλητές, οπότε έχουμε:

Mail Variables

Μπορείτε να χρησιμοποιήσετε οτιδήποτε θέλετε όταν ονομάζετε τις μεταβλητές σας, καθώς και το περιεχόμενο τους, αλλά καλό θα ήταν να βάλετε κάποια διεύθυνση email που ισχύει για να δείτε το τελικό αποτέλεσμα.

Δημιουργία της Μεταβλητής Mail με χρήση του AppleScript Dictionary

Από τη στιγμή που δεν έχουμε ιδέα το πως να πούμε στην εφαρμογή Mail να δημιουργήσει ένα νέο μήνυμα, τότε πρέπει να απευθυνθούμε στο AppleScript Dictionary. Επιλέγοντας το “Standard Suite” θα δούμε τις στάνταρ επιλογές, και προσέχουμε την επιλογή “make”. Τώρα ξέρουμε πως να “πούμε” στην AppleScript να δημιουργήσει νέο μήνυμα.

Standard Suite Dictionary

Στη συνέχεια επιλέγουμε την “Mail Suite” και κάνοντας scroll down θα δούμε την επιλογή “outgoing message”, η οποία είναι ότι ακριβώς χρειαζόμαστε για την εργασία μας. Επιλέγοντας την μπορούμε να δούμε τις διάφορες διαθέσιμες επιλογές στο κάτω παράθυρο.

Mail Suite Dictionary

Όπως θα καταλάβατε, έτσι μπορείτε να ανακαλύψετε τις κατάλληλες εντολές για τις εργασίες που θέλετε να εκτελέσει η AppleScript, καθώς και τον τρόπο σωστής σύνταξης τους μέσα στον κώδικα. Στο “Mail Suite” θα βρείτε και την εντολή “send”, για την αποστολή του μηνύματος.

Στη συνέχεια επιλέγουμε την “Message Suite”, στην οποία θα ψάξουμε για την κλάση “recipient”, από την οποία όπως μπορείτε να δείτε θα βρούμε τις κατάλληλες εντολές και τον τρόπο σύνταξης για το όνομα και τη διεύθυνση του παραλήπτη.

Message Suite Dictionary

Να σημειωθεί ότι μπορείτε μέσω της αναζήτησης να βρείτε οποιαδήποτε εντολή σας ενδιαφέρει.

Τώρα που γνωρίζουμε τον σωστό τρόπο σύνταξης του κώδικα για την εργασία μας, ήρθε η ώρα να τον γράψουμε στην AppleScript. Παρακάτω δημιουργούμε ένα “Tell Block” στο οποίο “λέμε” στο πρόγραμμα “Mail” να εκτελέσει τις εντολές που είδαμε. Δηλώνουμε την μεταβλητή “Message” για να δημιουργήσουμε (“make”) ένα νέο εξερχόμενο μήνυμα (“outgoing message”) με τις ιδιότητες (“properties”) που θέλουμε. Να θυμάστε ότι οι “properties” περιλαμβάνονται πάντα σε αγκύλες {}.

Create Email

Δημιουργία του Παραλήπτη και Αποστολή Μηνύματος

Τώρα που δημιουργήσαμε τη μεταβλητή του μηνύματος, πρέπει να καλέσουμε αυτή τη μεταβλητή και να φτιάξουμε ένα νέο μηνυμα με τις ιδιότητες του Email. Ακόμη, πρέπει να δημιουργήσουμε τους παραλήπτες και να αποστέιλουμε το μήνυμα. Για αυτό το λόγο θα χρησιμοποιήσουμε ένα “Tell Block” στη μεταβλητή μας. Η τελική μορφή του κώδικα είναι:

Final Script

Πρώτα δημιουργήσαμε ένα νέο αντίγραφο του “Email” (το οποίο εξακολουθεί να φέρει τις ιδιότητες που του είχαμε δώσει αρχικά) και το τοποθετήσαμε μέσα στο “recipient with properties”. Αυτό σημαίνει ότι “είπαμε” στο πρόγραμμα “Mail” να προσθέσει έναν παραλήπτη με τις ακόλουθες ιδιότητες. Εδώ χρησιμοποιήσαμε τη σύνταξη που μάθαμε στην αρχή και τις μεταβλητές για το όνομα και τη διεύθυνση του παραλήπτη.

Στο τέλος προσθέσαμε και την εντολή “send” στο μήνυμα μας. Προσέξτε ότι έχουμε δύο “Tell Blocks” για να κλείσουμε αυτή τη φορά. Μόλις κάνετε compile τον κωδικό και σιγουρευτείτε ότι δεν υπάρχουν λάθη, πατήστε “Run” και δείτε στη διεύθυνση που έχετε δώσει το μήνυμα!

AutoEmail by AppleScript!

Συγχαρητήρια, μόλις φτιάξατε το πρώτο σας AppleScript!

Elpidis Christos

Το ταξίδι ξεκίνησε από έναν Atari ST 520 στα '80s για μια μακρά περίοδο καψίματος στο gaming με το Kick Off 2 (αν είχε eSports τότε θα ήμουν εκατομμυριούχος...) και τα κλασικά adventures. Μετά ήρθαν τα PCs, το Internet, τα MP3s, τα Mac, τα κινητά, τα smartphones και όλα τα μαραφέτια που ορίζουν την καθημερινότητα μας σήμερα.

Για όλα αυτά τα λέμε τα τελευταία 10 χρόνια μέσα από το Techgear.gr! Θα με βρείτε σε Twitter, Instagram και φυσικά στη Darkpony Digital!

macuser_icon