Detlef Schulz
AppleScript -
Der automatische Mac
AppleScript – Der automatische Mac Bibliografische Information der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar. Copyright © 2009 Smart Books Publishing AG ISBN: 978-3-908497-78-3 1. Auflage 2009 Lektorat:
Jeremias Radke
Korrektorat:
Dr. Anja Stiller-Reimpell
Layout und Satz:
Peter Murr
Covergestaltung:
Johanna Voss
Coverfoto:
iStockphoto
Illustrationen:
fotolia, iStockphoto
Druck und Bindung:
Stürtz GmbH, Würzburg
Team Elem ents2
Digital unterschrieben von Team Elements2 DN: cn=Team Elements2, c=DE, ou=Girls Club Datum: 2009.03.04 13:38:50 +01'00'
Umwelthinweis: Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt. Die Einschrumpffolie – zum Schutz vor Verschmutzung – ist aus umweltverträglichem und recyclingfähigem PE-Material. Trotz sorgfältigem Lektorat schleichen sich manchmal Fehler ein. Autoren und Verlag sind Ihnen dankbar für Anregungen und Hinweise! Smart Books Publishing AG http://www.smartbooks.ch Aus der Schweiz: Aus Deutschland und Österreich:
Sonnenhof 3, CH-8808 Pfäffikon SZ E-Mail:
[email protected] Tel. 055 420 11 29, Fax 055 420 11 31 Tel. 0041 55 420 11 29, Fax 0041 55 420 11 31
Alle Rechte vorbehalten. Die Verwendung der Texte und Bilder, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und strafbar. Das gilt insbesondere für die Vervielfältigung, Übersetzung, die Verwendung in Kursunterlagen oder elektronischen Systemen. Der Verlag übernimmt keine Haftung für Folgen, die auf unvollständige oder fehlerhafte Angaben in diesem Buch oder auf die Verwendung der mitgelieferten Software zurückzuführen sind. Nahezu alle in diesem Buch behandelten Hard- und Software-Bezeichnungen sind zugleich eingetragene Warenzeichen oder sollten als solche behandelt werden.
Besuchen Sie uns im Internet!
www.smartbooks.ch www.smartbooks.de
Übersicht Vorwort
23
Kapitel 1
27
Einführung
Kapitel 2 Die Architektur
37
Kapitel 3 Das Handwerkszeug
51
Kapitel 4 Die Sprache
97
Kapitel 5 Die Standarderweiterungen
527
Kapitel 6 Von der Kunst, ein AppleScript zu starten
627
Kapitel 7
699
GUI-Scripting
Kapitel 8 Unix
749
Anhänge
767
Index
817
Inhaltsverzeichnis Vorwort
23
Kapitel 1 Einführung
27
Was ist AppleScript?........................................................................................................ 28 Woher kommt AppleScript?............................................................................................. 29 Wofür AppleScript geeignet ist......................................................................................... 33 Wofür AppleScript weniger geeignet ist............................................................................ 34 Was Sie zum Erlernen von AppleScript brauchen........................................................... 35
Kapitel 2 Die Architektur
37
OSA................................................................................................................................. 38 Sprachkomponenten........................................................................................................40 Skripterweiterungen........................................................................................................42 Funktionsverzeichnisse.................................................................................................... 44 Anwendungen.................................................................................................................. 47 Nicht-skriptbare Anwendungen.......................................................................... 48 Skriptbare Anwendungen................................................................................... 48 Aufzeichnungsfähige Anwendungen................................................................... 48 Anwendungen, die Skripts ausführen können..................................................... 49 Anwendungen, die Skripts erstellen können........................................................ 49 Anwendungen, die es erlauben, Skripts an Programmobjekte anzuhängen........50 Anwendungen, die es erlauben, das Programm selber umzubauen....................50
Kapitel 3 Das Handwerkszeug
51
AppleScript-Editoren....................................................................................................... 52 Der Skripteditor........................................................................................................ 52 Der Editorbereich............................................................................................... 53 Schreiben...................................................................................................... 53 Übersetzen.................................................................................................... 54 Ausführen..................................................................................................... 54 Debugging.................................................................................................... 55 Unterschiedliche Schreibweisen.................................................................... 55 Groß- und Kleinschreibung.......................................................................... 56 Der Skriptassistent........................................................................................ 56 Skriptbausteine im Kontextmenü................................................................. 57 Die Steuerungsleiste...................................................................................... 58
Skripts aufzeichnen...................................................................................... 59 Der Protokollbereich des Skripteditors................................................................ 61 Beschreibung................................................................................................ 61 Ergebnis........................................................................................................ 63 Event-Protokoll............................................................................................ 64 Die Verlaufsfenster.............................................................................................. 65 Die Bibliothek..................................................................................................... 66 Das Funktionsverzeichnis................................................................................... 67 Skripteditor-Einstellungen.................................................................................. 68 Tafel Allgemein............................................................................................. 68 Tafel Bearbeitung.......................................................................................... 68 Tafel Formatierung....................................................................................... 69 Tafel Verlauf.................................................................................................70 Tafel Plugins.................................................................................................70 Sichern und Dateiformate..................................................................................70 Kompilieren und Dekompilieren beim Sichern und Öffnen......................... 71 Ein Wort zu Type- und Creator-Codes und Resource-Forks........................ 72 Dateiformat »Skript«.................................................................................... 74 Dateiformat »Programm«............................................................................ 75 Dateiformat »Skript-Bundle«....................................................................... 76 Dateiformat »Programm-Bundle«............................................................... 78 Dateiformat »Text«......................................................................................80 Bundle-Inhalt.....................................................................................................80 Alternative AppleScript-Editoren.............................................................................. 81 Script Debugger.................................................................................................. 82 SmileLab und Smile............................................................................................ 83 Werkzeuge zur Erstellung grafischer Benutzerschnittstellen...................................... 85 AppleScript Studio.............................................................................................. 85 FaceSpan............................................................................................................. 87 Das AppleScript-Dienstprogramm.................................................................................. 89 Das Skriptmenü............................................................................................................... 92 Computerskripts........................................................................................................ 92 Benutzerskripts......................................................................................................... 93 Programmskripts....................................................................................................... 94 Programmspezifische AppleScript-Integration................................................................ 95
Kapitel 4 Die Sprache
97
Einstieg............................................................................................................................ 98 Zahlen............................................................................................................................. 99 Arithmetische Operatoren......................................................................................... 99 Die Klassen integer und real.................................................................................... 101
Umwandlung von Zahlen.......................................................................................102 Klammern und Berechnungsreihenfolge.................................................................102 Der Befehl round.....................................................................................................104 Der Befehl random number.................................................................................... 106 Kommentare..................................................................................................................108 Kommentare über das Kontextmenü des Skripteditors...........................................110 Das Fortführungszeichen............................................................................................... 111 Variablen.......................................................................................................................112 Bezeichner...............................................................................................................114 Reservierte Wörter.................................................................................................. 115 Zuweisungsoperationen mit dem Befehl set............................................................ 116 Der Befehl get..........................................................................................................120 Die Variable result................................................................................................... 121 Der Befehl log..........................................................................................................122 Textgrundlagen..............................................................................................................124 Der Verknüpfungsoperator &.................................................................................124 Steuerzeichenkonstanten......................................................................................... 125 Escape-Sequenzen................................................................................................... 127 Listengrundlagen...........................................................................................................130 Eine Liste aus Variablen zusammenbauen............................................................. 131 Referenzformen am Beispiel von Listen.........................................................................132 Auswahl eines einzelnen Elements..........................................................................132 first, second, third item…..................................................................................132 item n............................................................................................................... 133 item n of item n.................................................................................................134 Auswahl eines Bereiches.......................................................................................... 135 through............................................................................................................. 135 from … to.........................................................................................................136 some, middle und every...........................................................................................136 Zuweisungsoperationen mit Referenzformen.......................................................... 137 Referenzformen mit Angabe der Klasse.................................................................. 137 Referenzformen mit Klasse und every, some und middle........................................138 Relative Referenzformen mit before und after.........................................................139 Arbeiten in der Liste.......................................................................................................140 Ändern von Werten.................................................................................................140 Hinzufügen von Werten.......................................................................................... 141 Entfernen von Werten............................................................................................. 143 Eigenschaften einer Liste......................................................................................... 143 Massenzuweisungen über Listen............................................................................. 145 Der Befehl count in Listen....................................................................................... 146 Der Unterschied zwischen set und copy................................................................... 147 Umwandlung von Listen.........................................................................................150
Arbeiten mit Text........................................................................................................... 151 Unicode................................................................................................................... 151 id und character id...........................................................................................152 Kombinierte Unicode-Zeichen..........................................................................154 Eigenschaften eines Textes....................................................................................... 155 Elemente eines Textes.............................................................................................. 157 character........................................................................................................... 157 word.................................................................................................................. 157 paragraph.........................................................................................................158 text....................................................................................................................158 text item............................................................................................................159 Referenzformen auf Textelemente..................................................................................159 Auswahl eines Textbereichs......................................................................................160 some, middle und every im Text..............................................................................162 text items und text item delimiters...........................................................................162 Schnelles Suchen und Ersetzen mit text item delimiters.................................... 166 AppleScript's text item delimiters...................................................................... 167 Der Befehl count im Text.........................................................................................168 Umwandlung einer Liste in Text..............................................................................169 Umwandlung von Text in eine Liste........................................................................169 Implizite Umwandlung von Text in Zahlen.............................................................170 Explizite Umwandlung von Text in Zahlen............................................................. 171 Records..........................................................................................................................172 Record-Literale........................................................................................................172 Einen Record zusammenbauen...............................................................................174 Hinzufügen und Entfernen von Werten..................................................................174 Zusammenbau über Massenzuweisung........................................................... 175 Referenzformen in einem Record............................................................................ 176 Auswahl mit some und every............................................................................ 176 Auswahl über die Klasse................................................................................... 177 Umwandlung eines Records.................................................................................... 177 Eigenschaften eines Records....................................................................................178 Missing value...........................................................................................................179 Der Befehl count in Records....................................................................................180 Eigenschaften von Objekten...........................................................................................180 Ändern einer Eigenschaft eines Objekts...................................................................184 Die Datumsklasse..........................................................................................................188 Der Befehl current date...........................................................................................188 Datumsliterale.........................................................................................................189 Rechnen mit date.....................................................................................................190 Eigenschaften von date............................................................................................192 class...................................................................................................................192
day ...................................................................................................................192 weekday............................................................................................................ 193 month............................................................................................................... 195 year................................................................................................................... 197 date string und short date string.......................................................................198 time...................................................................................................................199 hours.................................................................................................................200 minutes.............................................................................................................200 seconds.............................................................................................................. 201 time string......................................................................................................... 201 Datum oder Zeit in vorhandenes Datum einsetzen................................................ 201 Der Befehl time to GMT.........................................................................................202 Der Befehl delay...................................................................................................... 203 Umwandlungen von date........................................................................................204 Vergleichsoperatoren...................................................................................................... 206 Die Klasse boolean.................................................................................................. 207 is equal to................................................................................................................ 207 Verneinungsformen...........................................................................................209 Implizite Typumwandlungen............................................................................209 Zahlen..............................................................................................................210 Listen................................................................................................................ 211 Records.............................................................................................................212 Text................................................................................................................... 213 Datum.............................................................................................................. 215 greater than, less than.............................................................................................. 215 Verneinungsformen........................................................................................... 217 Implizite Typumwandlungen............................................................................218 Zahlen..............................................................................................................219 Listen................................................................................................................220 Records.............................................................................................................220 Text................................................................................................................... 221 Datum.............................................................................................................. 223 contains...................................................................................................................223 Verneinungsformen...........................................................................................224 Implizite Typumwandlungen............................................................................224 Zahlen.............................................................................................................. 225 Listen................................................................................................................ 225 Records............................................................................................................. 226 Text................................................................................................................... 227 Datum..............................................................................................................228 starts with, ends with..............................................................................................229 Verneinungsformen...........................................................................................230
Implizite Typumwandlungen............................................................................230 Zahlen.............................................................................................................. 231 Listen................................................................................................................ 231 Records.............................................................................................................232 Text...................................................................................................................232 Datum.............................................................................................................. 233 and, or.....................................................................................................................234 and....................................................................................................................234 or...................................................................................................................... 235 Klammern........................................................................................................ 236 not........................................................................................................................... 237 Umwandlung von booleschen Werten.....................................................................239 Umwandlung in boolesche Werte............................................................................239 Kontrollstrukturen......................................................................................................... 241 Anreden mit tell....................................................................................................... 241 tell auf einer einzelnen Zeile..............................................................................242 tell als Blockanweisung.....................................................................................242 Das implizite tell und die Schlüsselwörter AppleScript, me und my..................242 Explizite Zielbestimmung mit dem Schlüsselwort it..........................................244 Objekthierarchien............................................................................................. 246 Lesen eines Funktionsverzeichnisses.................................................................. 251 Symbolik der Übersicht.............................................................................. 251 Darstellungsarten der Übersicht.................................................................252 Die Beschreibung........................................................................................252 Hierarchische tell-Beispiele...............................................................................254 tell auf Objekte........................................................................................................ 257 tell auf den index............................................................................................... 257 tell auf den Namen........................................................................................... 257 tell auf eine id....................................................................................................258 tell auf eine Objektreferenz...............................................................................259 tell every............................................................................................................264 tell some, tell middle..........................................................................................264 tell mit relativem Bezug.................................................................................... 265 tell auf einen Bereich......................................................................................... 265 Der Filter whose................................................................................................ 266 Eigenschaften, mit denen whose nicht funktioniert...........................................270 Besonderheiten bei einem tell auf ein Programm.............................................. 271 Vor- und Nachteile bei Verwendung der application id.....................................274 Verzweigungen mit if...............................................................................................274 if auf einer Zeile................................................................................................274 if als Blockanweisung........................................................................................276 if mit else...........................................................................................................276
if mit else if ....................................................................................................... 277 if mit else if und else.......................................................................................... 277 exists.................................................................................................................278 running.............................................................................................................279 Schachtelung von if...........................................................................................280 Schleifen mit repeat................................................................................................. 281 repeat (endlos).................................................................................................. 281 exit repeat.........................................................................................................282 Optimierung durch Referenzen........................................................................ 283 Referenzen und der Operator »a reference to«..................................................284 Rückverweis einer Referenz mit »contents of«................................................... 286 Optimierung durch Reduzierung gesendeter Apple-Events..............................288 return oder try als Abbruchbedingung.............................................................. 291 repeat n times.................................................................................................... 291 repeat until........................................................................................................292 repeat while.......................................................................................................294 repeat with........................................................................................................294 repeat with (in Liste)......................................................................................... 297 Optimierung durch System-Events statt Finder................................................302 Geschachtelte repeat..........................................................................................304 considering/ignoring...............................................................................................306 case...................................................................................................................306 diacriticals........................................................................................................308 expansion..........................................................................................................309 hyphens.............................................................................................................309 punctuation......................................................................................................310 white space........................................................................................................ 311 numeric strings.................................................................................................312 Kombinierte Anweisungen und Schachtelungen............................................... 313 considering/ignoring application responses.............................................................314 using terms from.....................................................................................................316 with timeout............................................................................................................ 317 with transaction......................................................................................................319 error........................................................................................................................320 try............................................................................................................................324 Fehler durchreichen.................................................................................... 327 Fehler filtern...............................................................................................330 Eigene Fehlerdialoge................................................................................... 331 Handler......................................................................................................................... 333 Definition................................................................................................................ 333 Aufrufen..................................................................................................................334 Positionsparameter.................................................................................................. 335
Handlerparameter dokumentieren.........................................................................338 Prüfung und Fehlerbehandlung..............................................................................338 Variablen im Handler sind lokal.............................................................................340 Die Parameterübergabe geschieht per Referenz....................................................... 341 Parametervariablen mit Programmobjekten..........................................................344 Rückgabewerte........................................................................................................ 345 Implizite Rückgabe............................................................................................ 345 Explizite Rückgabe mit return.......................................................................... 347 Rückgabe mehrerer Variablen durch Pattern....................................................349 Aufruf von Handlern mit Parameter-Pattern.........................................................352 Aufruf in Ausdrücken.............................................................................................. 353 Aufruf mit my..........................................................................................................354 Ausdrücke als Parameter beim Aufruf.................................................................... 355 Rekursive Handler................................................................................................... 356 Speicherung von Ergebnissen bei rekursiven Aufrufen...................................... 357 Rekursion über Programmobjekte....................................................................359 Handler sind Objekte.............................................................................................. 361 Benannte Parameter............................................................................................... 363 Benutzer-Parameter.........................................................................................364 Der direkte Parameter....................................................................................... 366 Eigene Benutzer-Parameter mit given.............................................................. 367 with oder without beim Aufruf.........................................................................368 Laden von Bibliotheken mit load script...................................................................370 Laden von Bibliotheken aus dem Bundle des Skripts.............................................. 371 Die Standard-Handler einer Skriptanwendung...................................................... 373 Der run-Handler.............................................................................................. 373 Der quit-Handler.............................................................................................. 376 Der idle-Handler.............................................................................................. 377 Der open-Handler und Droplets.......................................................................379 Vorlage für ein Droplet............................................................................... 381 Der reopen-Handler......................................................................................... 383 Applets sind skriptbar..............................................................................................384 Ordneraktionen...................................................................................................... 387 opening folder...................................................................................................389 closing folder window for..................................................................................394 moving folder window for.................................................................................396 adding folder items to........................................................................................ 397 removing folder items from............................................................................... 401 Skriptobjekte..................................................................................................................403 Bestandteile eines Skriptobjekts............................................................................... 403 Die Eigenschaften eines Skriptobjekts...............................................................404 Variablen und Handler als Elemente eines Skriptobjekts.................................. 406
Selbst definierte Eigenschaften – Propertys....................................................... 407 Definition von Propertys............................................................................ 407 Der richtige Platz für Propertys..................................................................408 Wertezuweisung in properties.....................................................................410 Eine Property-Definition verhält sich wie set............................................. 411 Abfrage der Propertys ................................................................................412 Sichtbarkeit von Propertys.........................................................................413 Persistenz von Propertys.............................................................................414 Skriptobjekte als Element eines Skripts............................................................. 415 Skriptobjekte definieren.............................................................................. 415 Mit Skriptobjekten arbeiten.....................................................................................418 Aufruf von Handlern in Skriptobjekten............................................................418 Zugriff auf Propertys eines Skriptobjekts.......................................................... 421 Skriptobjekte als Werte.....................................................................................424 Die Property name...........................................................................................429 Vergleichen von Skriptobjekten.........................................................................429 Zugriff auf Elemente im übergeordneten Skript................................................ 431 Zugriff auf Elemente im übergeordneten Skriptobjekt......................................432 Zugriff auf Elemente in untergeordneten Skriptobjekten.................................. 433 Initialisierung von Skriptobjekten in Handlern.................................................434 Konstruktoren und Instanzen........................................................................... 436 Konstruktor mit copy.................................................................................. 436 Konstruktor mit dediziertem Handler........................................................439 Vererbung und Delegation....................................................................................... 443 Die Property parent.......................................................................................... 443 Implizite Eltern........................................................................................... 443 Explizite Eltern........................................................................................... 446 Eine Property für alle Kinder............................................................................448 Ein Handler für alle Kinder und implizite Delegation......................................449 Rückgabewerte der Eltern..........................................................................450 Me und my in Skriptobjekten mit explizitem parent.................................. 453 Überschreiben oder »Eigensinnige Kinder«....................................................... 455 Überschreiben von Handlern.....................................................................459 Polymorphismus.........................................................................................460 Delegation an die Eltern und der Befehl continue...................................... 463 Befehle von Skripterweiterungen oder Anwendungen überschreiben......... 466 Ein Programm als parent..................................................................................468 Beliebige Objekte als parent..............................................................................470 Skriptobjekte speichern und laden........................................................................... 471 store script......................................................................................................... 471 Skriptobjekte im Bundle speichern....................................................................474 load script......................................................................................................... 475
run script..........................................................................................................476 run script und der Aufruf des run Handlers mit Parametern....................479 run script mit anderen OSA-Sprachen.......................................................479 Der Gültigkeitsbereich von Variablen und Propertys.................................................... 483 Lokale Variablen..................................................................................................... 485 Einfache Variablen..................................................................................................488 Überschreiben von einfachen Variablen.....................................................490 Propertys................................................................................................................. 491 Überschreiben durch properties..................................................................492 Überschreiben durch globals....................................................................... 493 Überschreiben durch einfache und lokale Variablen.................................. 493 Globale Variablen................................................................................................... 495 Globale Variablen sind persistent............................................................... 496 Ort der Deklaration................................................................................... 496 Reichweite in die Tiefe................................................................................498 Reichweite nach oben und in Laufrichtung des Skripts..............................499 Überschreiben von globalen Variablen.......................................................502 Weitere Klassen..............................................................................................................504 Die Klasse alias.......................................................................................................504 Eigenschaften eines alias............................................................................. 506 Umwandlungsmöglichkeiten...................................................................... 506 Die Klassen file und POSIX file..............................................................................508 Eigenschaften von file und POSIX file........................................................509 Umwandlungsmöglichkeiten......................................................................509 Relative Pfade.............................................................................................510 Steuerung von Anwendungen auf entfernten Rechnern.......................................... 511 Die eppc-URL............................................................................................512 Anwendungen und Benutzer......................................................................514 Keine Dialoge............................................................................................. 517 Die Klasse RGB color.............................................................................................. 517 Die unit types..........................................................................................................519 Umwandlungsmöglichkeiten...................................................................... 521 Rechnen mit unit types............................................................................... 521 XML-RPC und SOAP...................................................................................................522 XML-RPC............................................................................................................... 523 SOAP......................................................................................................................524
Kapitel 5 Die Standarderweiterungen
527
Die Standarderweiterungen..........................................................................................528 User Interaction.............................................................................................................529 beep.........................................................................................................................529
choose application...................................................................................................530 Parameter................................................................................................... 531 Rückgabewert............................................................................................. 531 Beispiel.......................................................................................................532 choose color.............................................................................................................532 Parameter...................................................................................................532 Rückgabewert............................................................................................. 533 Beispiel....................................................................................................... 533 choose file................................................................................................................533 Parameter...................................................................................................534 Rückgabewert............................................................................................. 536 Beispiel....................................................................................................... 536 choose file name...................................................................................................... 537 Parameter................................................................................................... 537 Rückgabewert.............................................................................................538 Beispiel.......................................................................................................538 choose folder............................................................................................................538 Parameter...................................................................................................538 Rückgabewert.............................................................................................540 Beispiel.......................................................................................................540 choose from list........................................................................................................540 Parameter................................................................................................... 541 Rückgabewert............................................................................................. 543 Beispiel....................................................................................................... 543 choose remote application.......................................................................................544 Parameter...................................................................................................544 Rückgabewert............................................................................................. 545 Beispiel....................................................................................................... 545 choose URL.............................................................................................................545 Parameter................................................................................................... 546 Rückgabewert.............................................................................................548 Beispiel.......................................................................................................548 delay........................................................................................................................548 display alert.............................................................................................................549 Parameter...................................................................................................549 Rückgabewert.............................................................................................552 Beispiel....................................................................................................... 553 display dialog...........................................................................................................553 Parameter...................................................................................................554 Rückgabewert.............................................................................................558 Beispiel.......................................................................................................559 say...........................................................................................................................559
Parameter...................................................................................................559 Rückgabewert.............................................................................................562 Beispiel.......................................................................................................562 File Commands.............................................................................................................562 info for.....................................................................................................................563 list disks...................................................................................................................564 list folder..................................................................................................................565 mount volume......................................................................................................... 566 Parameter................................................................................................... 566 path to.....................................................................................................................568 Parameter...................................................................................................568 Rückgabewert............................................................................................. 571 path to resource.......................................................................................................572 Parameter...................................................................................................572 Rückgabewert............................................................................................. 573 Beispiel.......................................................................................................574 String Commands..........................................................................................................574 ASCII character.......................................................................................................574 ASCII number......................................................................................................... 575 localized string.........................................................................................................576 Parameter................................................................................................... 576 Rückgabewert............................................................................................. 577 Beispiel....................................................................................................... 577 offset........................................................................................................................ 581 summarize.............................................................................................................. 581 Parameter................................................................................................... 581 Clipboard Commands...................................................................................................582 set the clipboard to...................................................................................................583 the clipboard...........................................................................................................584 clipboard info..........................................................................................................585 File Read/Write............................................................................................................. 586 open for access.........................................................................................................586 Parameter................................................................................................... 587 Rückgabewert.............................................................................................588 close access...............................................................................................................588 read.........................................................................................................................588 Parameter...................................................................................................589 Rückgabewert.............................................................................................600 write........................................................................................................................600 Parameter................................................................................................... 601 Rückgabewert.............................................................................................604 get eof......................................................................................................................604
set eof.......................................................................................................................605 Scripting Commands..................................................................................................... 606 load script............................................................................................................... 607 store script............................................................................................................... 607 run script.................................................................................................................608 scripting components...............................................................................................609 Miscellaneous Commands.............................................................................................610 current date.............................................................................................................610 do shell script...........................................................................................................610 Parameter................................................................................................... 611 Rückgabewert.............................................................................................614 get volume settings...................................................................................................614 random number......................................................................................................615 round......................................................................................................................616 set volume............................................................................................................... 617 system attribute.......................................................................................................619 system info............................................................................................................... 621 time to GMT........................................................................................................... 621 Folder Actions................................................................................................................622 Internet Suite...........................................................................................................622 open location...........................................................................................................622 handle CGI request.................................................................................................623
Kapitel 6 Von der Kunst, ein AppleScript zu starten
627
Von der Kunst, ein AppleScript zu starten.....................................................................628 AppleScript im Finder....................................................................................................628 Die Symbolleiste......................................................................................................628 Die Seitenleiste........................................................................................................630 Orte..................................................................................................................630 Intelligente Ordner............................................................................................630 Das Dock.................................................................................................................632 Das Dienste-Menü.................................................................................................. 633 AppleScript-Dienste.......................................................................................... 633 Dienst »Als AppleScript ausführen«........................................................... 633 Dienst »Ergebnis aus AppleScript«.............................................................634 Dienst »Neues AppleScript erstellen«......................................................... 635 Eigene Dienste mit AppleScript erstellen........................................................... 635 ThisService.................................................................................................. 636 Das Kontextmenü...................................................................................................638 Kontextmenübefehl für den Finder mit Automator erstellen............................638 OnMyCommand..............................................................................................642
Big Cat.............................................................................................................. 646 OpenMenu X.................................................................................................... 647 Skripts über Tastaturkürzel starten...............................................................................649 Programmeigene Skriptmenüs..........................................................................650 ThisService und OpenMenu X..........................................................................650 Shortcuts...........................................................................................................650 FastScripts......................................................................................................... 653 Weitere Programme..........................................................................................654 Skripts automatisch starten........................................................................................... 655 Zu einer bestimmten Zeit........................................................................................ 655 iCal................................................................................................................... 655 cron................................................................................................................... 657 CronniX............................................................................................................ 657 launchd Einführung..........................................................................................659 launchctl.....................................................................................................664 Weitere Beispiele......................................................................................... 666 SystemStarter....................................................................................................668 Weitere Programme mit Timerfunktion...........................................................668 Einen eigenen Skript-Timer in AppleScript erstellen.........................................669 Skriptwächter als Hintergrundprozess........................................................670 Bei einem Ereignis................................................................................................... 671 Start und Anmeldung....................................................................................... 671 Startobjekte................................................................................................672 launchd beim Start.....................................................................................674 loginwindow und LoginHook....................................................................674 Ausschalten und Abmelden............................................................................... 676 loginwindow und LogoutHook.................................................................. 676 Eigenen Skriptwächter erstellen.................................................................. 676 Ruhezustand..................................................................................................... 677 SnoozeRun................................................................................................. 677 SleepWatcher..............................................................................................678 Bildschirmschoner............................................................................................682 ScriptSaver.................................................................................................682 Mailregeln.........................................................................................................684 Ordneraktionen................................................................................................ 685 launchd und WatchPaths........................................................................... 686 launchd und QueueDirectories.................................................................. 687 Einlegen einer CD oder DVD und das Digital Hub Scripting...........................689 Einbinden eines Laufwerks und launchd..........................................................690 Eigenen Skriptwächter Ereignisse beobachten lassen........................................692 Aktionen im Benutzerinterface.........................................................................694 AppleScript URLs.............................................................................................694
Kapitel 7 GUI-Scripting
699
Grundlagen...................................................................................................................700 Zugriff für Hilfsgeräte.................................................................................700 Tastatur & Maus........................................................................................ 701 Grenzen...................................................................................................... 703 Hilfreiche Software........................................................................................................704 Der UI Element Inspector....................................................................................... 705 Das Fenster »Accessibility Inspector«.......................................................... 706 Das Fenster »Locked on«............................................................................708 Der UI Browser von Prefab.....................................................................................709 Das Fenster »UI Browser Screen Reader«..................................................709 Das Fenster »UI Browser«..........................................................................710 Die Processes Suite der System Events............................................................................712 Prozesse................................................................................................................... 715 Die UI elements....................................................................................................... 717 Die Propertys eines UI elements.......................................................................722 Abfragen mit whose.................................................................................... 726 Abfragen mit entire contents....................................................................... 727 Tricks zum manuellen Ermitteln der Objekthierarchie...............................728 Die AXAttribute..................................................................................................... 731 Die Befehle.............................................................................................................. 733 click................................................................................................................... 733 click an ein UI element...............................................................................733 click an Bildschirmkoordinate.................................................................... 736 select.................................................................................................................738 perform.............................................................................................................739 Die Klasse action........................................................................................739 Beispiele...................................................................................................... 741 keystroke...........................................................................................................742 keystroke und tab.......................................................................................744 key code............................................................................................................ 745
Kapitel 8 Unix
749
Das AppleScript-Shebang..............................................................................................750 Die vier osa-Befehle.......................................................................................................752 Escape- und Anführungszeichen.............................................................................752 osalang....................................................................................................................753 osacompile...............................................................................................................754 osadecompile...........................................................................................................758 osascript..................................................................................................................759
Tipps zu do shell script................................................................................................... 763 Skripts in anderen Sprachen.......................................................................763 Standardeingabe........................................................................................ 765 Werte über mehrere Aufrufe erhalten......................................................... 765 Interaktive und dynamische Befehle........................................................... 765 Nicht auf Antwort warten.......................................................................... 766
Anhänge
767
A - AppleScript Kurzübersicht.......................................................................768 Reservierte Wörter..................................................................................................768 Flusskontrolle..........................................................................................................769 Operatoren..............................................................................................................773 Operatorreihenfolge................................................................................................778 Globale Eigenschaften (Konstanten) von AppleScript und current application......779 Bezugsformen..........................................................................................................780 Befehle.....................................................................................................................784 Basisklassen.............................................................................................................790 Umwandlungen......................................................................................................794 Reichweite von Variablen........................................................................................ 796 Mac OS Roman Kodierung.....................................................................................800 Key Codes................................................................................................................802 AppleScript Fehlermeldungen.................................................................................. 803 Fehlermeldungen des Betriebssystems..................................................................... 805 B - Quellen.................................................................................................... 807 AppleScript bei Apple.............................................................................................. 807 Links auf den Entwicklerseiten von Apple.................................................. 807 Links zu Automator...................................................................................809 Links zu AppleScript Studio.......................................................................809 Links für Entwickler, die ihr Programm skriptbar machen wollen.............809 AppleScript im Internet...........................................................................................810 Deutschsprachige Webseiten.............................................................................810 Internationale Links.......................................................................................... 811 Software von Drittherstellern...........................................................................812 AppleScript-Editoren..................................................................................812 Entwicklungsumgebungen auf der Basis von AppleScript..........................812 GUI............................................................................................................812 Letzte Links zu HyperCard........................................................................812
Entwicklungsumgebungen, die auf HyperCard basieren oder davon inspiriert wurden:.......................................................................................812 OSA-Sprachen...........................................................................................812 AppleScript als CGI.................................................................................... 813 Resource-Editoren...................................................................................... 813 Skriptmenüs, Kontextmenüs, Tastaturkürzel, Skriptstarter und Sonstiges..... 813 Wegen guter AppleScript-Anbindung gelobte Programme:........................ 815
Index
817
Vorwort
SmartBooks
AppleScript
Vorwort Mit diesem Buch habe ich mir einen eigenen Traum verwirklicht. Dies ist das Buch zum Thema AppleScript, welches ich immer besitzen wollte, welches aber nie existierte. Ich habe das Buch nun selbst geschrieben. Seit Mitte der 90er Jahre haben sich bei mir ein gutes halbes Dutzend deutscher AppleScript-Bücher angesammelt und noch einmal so viele in englischer Sprache. Wenn mir bei einem Problem ein Buch nicht weiterhelfen konnte, griff ich halt zum anderen und später, mit zunehmender Informationsdichte im Internet, auch auf selbiges. Jedes dieser Bücher, ebenso wie das Internet, hat seine Stärken und seine Schwächen, und ich habe aus allen viel gelernt. Für mich war aber immer auffällig, dass kein deutschsprachiges Buch dem Thema in dem Umfang gerecht wurde, wie ich es mir gewünscht hätte. Mit zunehmender Kenntnis der Sprache wurden für mich die Lücken in der Literatur zudem immer größer. In das vorliegende Buch habe ich nun alles gepackt, was ich bisher in gedruckter Form vermisst habe und dabei auch intensive Tests und Recherchen nicht gescheut. Dazu wurde jede einzelne Codezeile ausführlich durchgetestet und nicht nur einfach aus der Theorie heraus beschrieben, was dazu führte, dass auch einige Fehler und Mankos der Sprache zu Tage treten, auf die in anderen Quellen nicht immer hingewiesen wird. Herausgekommen ist das umfangreichste Buch über AppleScript, welches es bisher in deutscher Sprache gegeben hat. Durch den ausführlichen tabellarischen Anhang und den Index eignet es sich dabei auch als schnelles Nachschlagewerk. Das Buch behandelt den Sprachumfang mit den Standarderweiterungen vollständig und widmet sich auch ausführlich dem GUI-Scripting und der Integration von AppleScript im Betriebssystem Mac OS X. In dieser Beziehung ist dieses Buch sogar den aktuellen Werken geschätzter englischsprachiger Autoren voraus. Hinzu kommt, dass im Bereich GUI-Scripting nicht einmal das Internet eine große Hilfe darstellt. Apple vernachlässigt hier, wie leider so oft, die Dokumentation sträflich. Dieses Kapitel alleine hat mich daher viele Tests gekostet und viel Zeit verschlungen, um gangbare Wege zu erkunden und Fehler auszumerzen, die Sie damit nicht mehr machen müssen. Gerne hätte ich mich auch noch eingehend den Themen »Automator« und »AppleScript Studio« gewidmet, aber das hätte den Umfang des Buches dann endgültig gesprengt. Die längeren Codebeispiele können Sie übrigens von der Buchwebseite www.skripteditor.de herunterladen, so dass Ihnen langes Abtippen erspart bleibt.
24
Vorwort
Ich hoffe, dass es mir gelingt, Ihnen auch etwas von der Faszination, die mich beim Schreiben geleitet hat, weiterzugeben und wünsche Ihnen, dass Sie viel Nutzen aus diesem Buch ziehen.
Detlef Schulz Apple Certified System Administrator
25
Einführung
1
Was ist AppleScript? Wie ist AppleScript entstanden? Wofür wird AppleScript verwendet und wofür ist es nicht geeignet? Was braucht man, um AppleScript zu erlernen?
SmartBooks
AppleScript
Was ist AppleScript? AppleScript ist eine objektorientierte, schwach typisierte Skriptsprache zur Steuerung von Anwendungen auf dem Mac OS-Betriebssystem. Bei allen Substantiven in der AppleScript-Sprache handelt es sich um Objekte in Form von Klassen. Eigene Objekte können erzeugt werden und von anderen Klassen erben. Eine Mehrfachvererbung ist nicht möglich. An Klassen (Objekten) und Befehlen (Verben) bringt AppleScript nur die grundlegenden mit. Erst durch die Funktionsverzeichnisse (Dictionaries) anderer Programme werden der Sprache anwendungsspezifische Befehle und Elemente hinzugefügt, beziehungsweise die Befehle aus dem Kern der AppleScript-Sprache erhalten weitere, zusätzliche Bedeutungen im Kontext des verwendeten Programms. Daneben kann die Sprache aber auch auf dem klassischen Weg über die Einbindung von zusätzlichen Bibliotheken, den sogenannten Skripterweiterungen (Scripting Additions), unabhängig von den zu steuernden Programmen, erweitert werden. AppleScript ist schwach typisiert, das heißt, Sie können in eine Variable hineinpacken, was Sie wollen und den Inhaltstyp automatisch oder explizit umwandeln lassen. Das macht es auf der einen Seite besonders einfach, mit Variablen zu hantieren, auf der anderen Seite müssen Sie dann aber gut Acht geben, ob der Inhalt der Variablen wirklich noch im erwarteten Typ vorliegt. Ansonsten bringen darauf angewendete Befehle unerwartete Ergebnisse. Obwohl die Stärke von AppleScript in erster Linie darin liegt, andere Programme zu steuern, kann es mit Hilfe von AppleScript Studio oder FaceSpan auch zur Programmierung von Anwendungen mit grafischer Benutzerschnittstelle verwendet werden. Im Programm »Automator«, welches zur vereinfachten Erstellung von Arbeitsabläufen (Workflows) mit verschiedenen Programmen dient, wird AppleScript verwendet, um eigene Aktionen zu schreiben und damit den Funktionsumfang von Automator nach Belieben zu erweitern. Die Stärke von AppleScript liegt darin, dass es gar nicht viel können muss, denn wo immer es eine spezielle Fähigkeit benötigt, kann es ein Programm mit genau dieser Fähigkeit fernsteuern und sich das Ergebnis von diesem Programm zurückgeben lassen. AppleScript wird fast wie normales Englisch geschrieben und ist damit leicht zu schreiben und auch nach Jahren wieder leicht zu lesen und zu verstehen, leichter als in jeder anderen Sprache. Andererseits ist die Sprache dadurch aber auch oft ambivalent und missverständlich.
28
Einführung
Kapitel 1
Aufgrund seines geringen Sprachumfangs und seiner Anlehnung an die natürliche englische Sprache ist AppleScript sicher die am schnellsten erlernbare Skriptsprache. Dafür müssen Sie dann aber auch für jede Anwendung, die gesteuert werden soll, wieder einiges an Zeit aufwenden, um die Objekthierarchie und Befehle dieser Anwendung zu verstehen und anzuwenden. AppleScript selbst ist also nur die Basis, danach müssen Sie noch lernen, wie die zu steuernde Anwendung angesprochen werden muss. Da Objekthierarchien und Befehle aber nicht in jeder Anwendung erneut erfunden werden, gleichen sich die Funktionsverzeichnisse vieler Anwendungen zumindest in den Grundlagen. Wenn man einmal eine beliebige Textverarbeitung mit AppleScript gesteuert hat, so wird man in der Regel auch andere Textverarbeitungen schnell automatisieren können.
Woher kommt AppleScript? AppleScript ist aus HyperTalk hervorgegangen, einer von Dan Winkler bei Apple entwickelten Skriptsprache. An die Öffentlichkeit trat HyperTalk 1987 mit dem von Bill Atkinson entwickelten Programm »HyperCard«, in welchem es die Sprache zur Steuerung des Programms darstellte.
Abb. 1-1 HyperCard bewies erstmals, dass Softwareerstellung für jeden möglich ist und kein jahrelanges Studium erfordert. Auch die einfache, der englischen Sprache nachempfundene Skriptsprache HyperTalk setzte Maßstäbe. HyperCard war eine Multimedia-Entwicklungsumgebung und verwendete den Begriff eines »Kartenstapels« als Metapher für ein damit erstelltes Programm und seine Daten. Mit HyperCard konnten eigene Anwendungen mit grafischer Benutzerschnittstelle erzeugt werden, und zwar auf die typische Macintosh-Art: Man platzierte Knöpfe, Textfelder und andere grafische Elemente mit der Maus auf einer zunächst leeren Karte und verknüpfte die Aktionen dieser Elemente wiederum über Skripts miteinander. Jede Karte stellte dabei üblicherweise einen Datensatz in der Anwendung dar. Alle Karten zusammen bildeten den Stapel (Stack). Dieser grafische Weg zur Erstellung eines Benutzerinterfaces ist heute noch im Interface Builder von Apple oder den RAD-Werkzeugen anderer Entwicklungsumgebungen üblich. HyperCard war damit seiner Zeit weit voraus – einer Zeit, in der man noch mit Texteditor und Kommandozeile programmiert hat – und wurde gerne zur Erstellung von interaktiven Lern- und Multimediaprogrammen, aber auch zur Programmierung von Spielen wie zum Beispiel Myst (1993) verwendet.
29
SmartBooks
AppleScript
Abb. 1.2 HyperCard 1.2 in der Klassikumgebung von Mac OS X 10.4 (Montage verschie dener Fensterelemente). Links der sogenannte »Home«-Stack, Start und Endpunkt von HyperCard. Rechts oben die Eigenschaften eines Knopfes mit dem Namen »Return«. Rechts unten das HyperTalk-Skript eines Knopfes zum Wählen einer Telefonnummer. Jedem sichtbaren oder unsichtbaren Element auf einer Karte konnte dabei ein Skript in der Sprache HyperTalk hinzugefügt werden. Dieses Skript bestimmte, was passierte, wenn dieses Element angeklickt, betreten oder verlassen oder wenn auf andere Art damit interagiert wurde. Besaß das Objekt keine entsprechende Methode im Skript, wurde die Nachricht über die Interaktion an das übergeordnete Objekt, also zum Beispiel das Kartenskript oder das Skript des Kartenhintergrunds, zur Ausführung weitergereicht, ganz so wie in den Klassen einer objektorientierten Programmiersprache üblich. HyperTalk war der englischen Sprache zudem so ähnlich, dass selbst Anfänger ohne Programmierkenntnisse damit schnell eigene kleine Scripte erstellen konnten. HyperCard setzte Maßstäbe und beeinflusste auch die Entwicklung des Betriebssystems Nummer 7. Nach mehreren Jahren Grundlagenarbeit erblickte 1993 mit System 7 Pro (System 7.1.1) AppleScript als Skriptsprache des Macintosh Betriebssystems das Licht der Welt. Die Syntax von AppleScript war dabei fast eins zu eins von HyperTalk übernommen worden.
30
Einführung
Kapitel 1
Abb. 1.3 Die sogenannte xTalk-Sprachfamilie mit einer einfachen, dem Englischen ähnlichen Syntax und ihrem »Urvater« HyperTalk (die Anordnung der Nachkommen ist willkürlich und stellt keine zeitliche Folge dar.) (Quelle u.a.: Wikipedia) Im Gegensatz zu HyperTalk war AppleScript dafür gedacht, nicht nur einem Programm zu sagen, was es tun soll, sondern allen Programmen inklusive dem Finder selber. Voraussetzung dafür war allerdings, dass die Entwickler ihre Programme entsprechend anpassten, damit diese auf die mit AppleScript ausgesandten Befehle, die sogenannten Apple Events, auch reagierten. Zu Beginn waren daher nur der Finder und einige Programme von Apple selber skriptfähig. Das änderte sich erst nach und nach, wurde dann aber schnell zu einem unverzichtbaren Standard auf dem Mac. Die Skriptfähigkeit von Grafik- und Layoutanwendungen war neben der Druckerbeschreibungssprache »Postscript« eine der Hauptgründe, warum Desktop-Publishing so lange ganz auf den Mac als Betriebssystem festgelegt war und warum Windows hier lange Jahre keine ernsthafte Konkurrenz darstellte. Das einzige, was viele Anwender in AppleScript schon immer vermisst haben, war die Möglichkeit, einem Skript eine grafische Benutzerschnittstelle wie in HyperCard zu geben. AppleScript selbst bot nur einige grundlegende Dialoge zur Interaktion mit dem Benutzer. Aus dieser Lücke heraus entwickelten Drittanbieter natürlich sofort Entwicklungsumgebungen mit grafischem Benutzerinterface. Als das prominenteste und langlebigste ist hier FaceSpan (www.latenightsw.com) zu nennen, welches bis auf den heutigen Tag immer noch weiterentwickelt wird und eine professionelle Alternative zu AppleScript Studio darstellt. Aber auch HyperCard selbst inspirierte viele Entwickler und fand direkte Nachfolger und -ahmer in Programmen wie »SuperCard« (www.supercard.us), »MetaCard« (www. metacard.com), »ToolBook« (www.toolbook.com), »Revolution« (www.runrev.com) oder dem kostenlosen »HyperNext« (www.tigabyte.com), von denen jeder wiederum seine eigene, von HyperTalk inspirierte Skriptsprache erfand, wie aus obiger Abbildung ersichtlich wird. Nach Erschaffung von AppleScript wurde selbiges im klassischen Mac OS (bis einschließlich System 9.2) jeweils nur im Rahmen der stetig wachsenden Funktionen des
31
SmartBooks
AppleScript
Betriebssystems erweitert. Ansonsten blieb es von Apple-Seite her sehr ruhig. Die Zeit schien in diesem Bereich stehen geblieben. Mit dem Erscheinen der ersten Version von Mac OS X im Jahre 2001 änderte sich an AppleScript auch erstmal wenig. Man hatte es unter Mac OS X zum Laufen gebracht. Und das war die wesentliche, erleichternde Erkenntnis. Es gab schon Befürchtungen, dass man AppleScript sterben lassen würde. Doch wie sich bald herausstellen sollte, wurde es sogar weiterentwickelt. Dann folgte die Entwicklung Schlag auf Schlag. Mit jeder neuen Version von Mac OS X, also fast jedes Jahr, wird AppleScript verbessert, erweitert und mehr und mehr ins Unix-Betriebssystem integriert und damit mehr und mehr zur »Lingua Franca« von Mac OS X – vieles davon meist unsichtbar unter der »Motorhaube« und oft leider schlecht oder überhaupt nicht dokumentiert. 2002 erscheint mit Mac OS X 10.2 AppleScript Studio. Damit wird es zum ersten Mal möglich, mit Bordmitteln Appleskripts mit Benutzer-Interface zu schreiben. Aus dem Skript heraus wird dabei über das AppleScriptKit Framework direkt auf die Cocoa-Bibliotheken zugegriffen, auf dieselben Programmierbibliotheken also, die auch professionelle Programme verwenden. Dadurch lassen sich mit AppleScript Studio entwickelte Programme auf den ersten Blick nicht mehr von normalen Cocoa-Programmen unterscheiden. Der Nachteil von AppleScript Studio liegt nur in seiner Integration in der Entwicklungsumgebung Project Builder (später Xcode), die vor allem Anfänger mit ihren vielen für Skripter unnötigen Optionen abschreckt und einschüchtert. 2004 wird mit Erscheinen von Mac OS X 10.4 »Tiger« das Programm »Automator« eingeführt. Damit lassen sich Arbeitsabläufe und der Austausch von Informationen zwischen verschiedenen Programmen über eine grafische Schnittstelle automatisieren. Man muss also keine einzige Zeile Code mehr schreiben und kann trotzdem andere Anwendungen steuern, zum Beispiel alle Bilder in einem Ordner automatisch skalieren, umbenennen und auf einen FTP-Server ablegen. Solch ein Ablauf lässt sich mit wenigen Mausklicks in Automator erzeugen und dann immer wieder verwenden. Die Programmhersteller müssen nur sogenannte Aktionen erstellen, die sich dann von jedem Anwender in Automator nutzen lassen. Apple selbst ging mit gutem Beispiel voran und stattete viele seiner Programme mit solchen Aktionen aus. Auf den ersten Blick scheint Automator nichts mit AppleScript zu tun zu haben, unter der Haube beruht Automator aber auf Apple-Events, welche die Basis von AppleScript darstellen. So ist es nicht verwunderlich, dass in Automator auch Appleskripts verwendet werden können. Für den Fall, dass eine Anwendung nicht die passende Aktion bereitstellt, kann man sich so mit einem Appleskript selber helfen. Und in AppleScript Studio kann
32
Einführung
Kapitel 1
sich der kundige Anwender auch eigene Automator-Aktionen erstellen und diese anderen Anwendern zur Verfügung stellen. 2004 war dann aber auch das Jahr des Abschiednehmens. Nach langem Siechtum, das heißt nach lange stagnierender Weiterentwicklung, verschwand HyperCard aus den Verkaufsregalen bei Apple und ward nie mehr gesehen. Zum Leidwesen vieler Fans. Die Idee, dass jeder sein eigener Softwarehersteller sein kann und soll, war wohl zu revolutionär für den Markt oder seiner Zeit einfach zu weit voraus. 2007 erschien Mac OS X 10.5 »Leopard« und brachte auch für AppleScript wieder einige Neuerungen mit. Auf den ersten Blick nichts Spektakuläres, tatsächlich wird jedoch zum ersten Mal Unicode vollständig unterstützt. Dazu kommen, unter anderem, informativere Fehlermeldungen, zusätzliche Programmeigenschaften, Unterstützung für das Lesen und Schreiben von Property Lists und die übliche verbesserte AppleScript-Unterstützung von vielen Anwendungen und den Systemeinstellungen. Ordneraktionen werden unter Leopard jetzt vom Dateisystem ausgelöst und funktionieren damit endlich zuverlässiger. Automator entwickelt sich in Leopard immer mehr zu einer Workflow-Programmierumgebung – in Leopard sind nämlich eine AufnahmeFunktion sowie Workflow-Variablen und Schleifen hinzugekommen. Durch eine neue Scripting Bridge wird es in Leopard für andere Sprachen wie Ruby, Python oder Objective-C leichter, das Betriebssystem und Anwendungen über dieselbe Schnittstelle wie AppleScript zu steuern. Und: AppleScript bekommt seine eigene Shebang-Zeile und kann damit genauso wie Shell-, Perl-, Ruby- oder Pythonskripte als Textdatei vom Terminal automatisch kompiliert und ausgeführt werden. Diese Entwicklungen zeigen, dass AppleScript und die zugrundeliegende OSA-Architektur den Stellenwert einer Schlüsseltechnologie bei Apple einnehmen. Für die Zukunft von AppleScript stehen alle Tore offen.
Wofür AppleScript geeignet ist AppleScript ist zur Steuerung von Programmen gedacht – und darin brilliert es. Immer, wenn Sie sich über stetig wiederholende, wenig erquickende Fließbandarbeit am Macintosh ärgern, gibt es unter Garantie eine Lösung, diese Arbeit von einem Appleskript ausführen zu lassen, während Sie sich einen Kaffee holen. Spätestens wenn diese Arbeit öfters vorkommt, macht sich die Erstellung eines Skripts wirklich bezahlt. Die einfachste Art und Weise ist die, mit Automator einen Workflow zu erstellen. Diese Workflows sind
33
SmartBooks
AppleScript
nichts anderes als eine grafische Benutzeroberfläche zur Erstellung von automatisierten Abläufen. Man könnte so einen Workflow also auch von Hand mit AppleScript erstellen. Für den Nicht-Programmierer ist es aber natürlich einfacher, sich einen AutomatorWorkflow zusammenzuklicken. Trotz des Schwerpunkts auf der Steuerung von Programmen wird AppleScript auf Grund seiner schnell erlernbaren Sprache auch gerne zur Erstellung einfacher Programme verwendet, ob seit Urzeiten mit FaceSpan, oder seit Mac OS X 10.2 mit AppleScript Studio. Nicht für jede Aufgabe ist wirklich eine aufwendig programmierte Lösung in der Programmiersprache Objective-C mit den Cocoa-Bibliotheken nötig. Auch ein Appleskript kann auf Cocoa-Bibliotheken zugreifen, wodurch es von einem normalen Programm kaum noch zu unterscheiden ist. Viele Sharewareprogramme entpuppen sich so, bei näherer Untersuchung, als mit AppleScript Studio erstellte Programme. Vor allem aber ist man bei einfachen Aufgaben mit einem Appleskript viel schneller fertig. AppleScript Studio eignet sich damit auch zum schnellen »Prototyping«, also dem Erstellen eines ersten Entwurfs einer später in Objective-C zu programmierenden Anwendung.
Wofür AppleScript weniger geeignet ist AppleScript ist eine Skriptsprache, und Skriptsprachen zeichnen sich dadurch aus, dass sie interpretiert werden müssen, bevor die Befehle vom Computer ausgeführt werden. Naturgemäß sind sie daher langsamer als ein in Maschinencode übersetztes Programm. Erschwerend kommt hinzu, dass die aufwendige Benachrichtigungstechnik mit AppleEvents, die zwischen den Anwendungen und Objekten hin und her gesendet werden, zusätzliche Zeit benötigt. AppleScript ist damit also langsamer als Perl oder Python. Daraus ergibt sich, dass AppleScript nicht so gut geeignet ist für Anwendungen, die mit großen Datenmengen arbeiten. Möchten Sie zum Beispiel hunderte von Megabyte an Daten bearbeiten, ohne eine dafür spezialisierte Anwendung fernzusteuern, so müssen Sie sich damit abfinden, dass die Geschwindigkeit nicht berauschend ist. Auch das häufige Wechseln zwischen verschiedenen Anwendungen kostet Zeit. So ist es daher besser, nicht für jeden Datensatz von einer Anwendung zur anderen zu wechseln, sondern immer alles in einem Rutsch zu holen und abzuliefern. In der Praxis fällt dieser Nachteil aber erstaunlich selten ins Gewicht. Mit zunehmender Geschwindigkeit der Rechner werden inzwischen ja selbst die ursprünglich als langsam verschrienen Skriptsprachen wie Python zur Erstellung von ganzen Anwendungen verwendet.
34
Einführung
Kapitel 1
Und sollte es doch einmal nötig sein, die Schnelligkeit eines Skripts zu steigern, so lassen sich die zeitkritischen Teile eines Appleskripts auch jederzeit in eine andere Skriptsprache oder in ein C-Programm auslagern. Trotzdem ist AppleScript natürlich keine Programmiersprache zum Erstellen eines 3-D-Grafikspiels oder anderer Anwendungen, bei denen es auf Schnelligkeit ankommt. AppleScript ist eine Sprache, die nur auf dem Macintosh zu Hause ist. Es gibt kein AppleScript unter Windows oder Linux. Programmieren Sie dann besser in Sprachen wie Java oder Python.
Was Sie zum Erlernen von AppleScript brauchen Hier gibt es eine gute Nachricht: Die Software, die Sie für den Start brauchen, ist kostenlos. Sie brauchen sich für dieses Buch keine Software zu kaufen. Im Text wird zwar immer wieder auf kommerzielle Alternativen und deren Möglichkeiten und Vorzüge hingewiesen, deren Besitz ist aber in keinem Fall Vorraussetzung für das Verständnis für den Inhalt dieses Buches. Die Vorraussetzungen für die Arbeit mit diesem Buch lassen sich folgendermaßen zusammenfassen: ≥ = ≠ not and
12
or
3 4
5
9
778
rechts nach links binär links nach rechts
binär links nach rechts binär links nach rechts binär links nach rechts binär keine Reihenfolge
Addition und Subtraktion
binär keine Reihenfolge unär binär links nach rechts binär links nach rechts
Gleichheit, Ungleichheit
Verknüpfungsoperator Umwandlungsoperator Vergleichsoperatoren
logisches Nicht logisches Und logisches Oder
Anhänge
Globale Eigenschaften (Konstanten) von AppleScript und current application Konstante
Beschreibung
AppleScript
Bezug auf das Skriptobjekt «script AppleScript», welches parent eines im Skripteditor geöffneten Skripts ist. Ermöglicht den Zugriff auf globale Propertys von AppleScript, selbst wenn der entsprechende Bezeichner im aktuellen Kontext bereits verwendet wird. Beispiel: text item delimiters of AppleScript AppleScript's version Die Klasse des Objekts, zum Beispiel: «script» Die Zwischenablage des aktuellen Programms Die erste Instanz in der Vererbungshierarchie eines Skripts. Das erste Objekt/Klasse, von dem alle anderen abstammen. Wird das Skript aus einem Editor oder Programm heraus gestartet, ist current application der Editor oder das Programm, zum Beispiel der Skripteditor oder iTunes. Ist das Skript als Programm abgespeichert worden, ist das Skriptprogramm seine eigene current application. Die Anzahl Sekunden eines Tages: 86400 Der boolesche Wert Unwahr
class clipboard current application
days false hours it linefeed
me minutes missing value parent
Die Anzahl Sekunden einer Stunde: 3600 Zielbezug. Steht für das aktuelle Ziel, zum Beispiel: application "Finder" Das Unix-Zeilenende ASCII 10 Als Escape-Zeichen: "\n" Selbstbezug. Steht für das aktuelle Skript, zum Beispiel: «script joe» Die Anzahl Sekunden einer Minute: 60 Platzhalter für fehlende Werte, zum Beispiel in einem record Die Eltern eines Skriptobjekts. Ein Skriptobjekt in einem Skript hat «script» (das im Editor geöffnete Skript) als parent, das Skript selber hat das «script AppleScript» als parent, welches wiederum current application als parent hat.
779
SmartBooks
AppleScript
Konstante
Beschreibung
pi quote
Die Zahl Pi: 3.14159265359 Das Zeichen " ASCII 34 Als Escape-Zeichen: "\"" Enthält immer das Ergebnis der letzten Anweisung Das Absatzende ASCII 13 Als Escape-Zeichen: "\r" Die aktuell im Programm sichtbare Auswahl Das Leerzeichen ASCII 32 Als Zeichen: " " Der Tabulator ASCII 9 Als Escape-Zeichen: "\t" Trennzeichen für Text Standardwert: {""} Der boolesche Wert Wahr
result return
selection space
tab
text item delimiters true version weeks
Die Version von AppleScript, zum Beispiel "2.0.1" Die Anzahl Sekunden in einer Woche: 604800
Bezugsformen Name
Beschreibung
Name
class [named] NamensText Wählt ein Objekt anhand seines Namens aus. Beispiel: window "Macintosh HD" mailbox named "Privat" application "Mail" tell app "Finder" to activate Finder window named "Macintosh HD" tell application "Mail" to get messages of mailbox "Privat"
780
Anhänge
Name
Beschreibung
ID
class id Ausdruck Wählt ein Objekt anhand seiner Property id aus. Funktioniert nur mit Programmobjekten, die über eine ID-Property verfügen. Beispiel:
Index
tell app "Finder" to activate Finder window id 33 tell application id "com.apple.finder" to activate class [index] integer integer(st|nd|rd|th) class (first|second|third|fourth|fifth|sixth|seventh|eighth|¬ ninth|tenth) class (last|front|back) class Wählt ein Objekt anhand seiner Position in einem Container aus. Ein negativer Index zählt vom Ende, statt vom Anfang. Beispiel:
Zufällig
item 2 of {1, 2.5, 3, 4.5} item index 3 of {1, 2.5, 3, 4.5} real -2 of {1, 2.5, 3, 4.5} 2nd word of "Klarheit, Kürze, Klang" third character of "ABC" front character of "ABC" some class Wählt ein zufälliges Objekt der angegebenen Klasse aus. Beispiel:
Mitte
some integer of {1, 2.5, 3, 4.5, 5} tell application "Mail" to get some message of inbox middle class Wählt das mittlere Objekt in einem Container aus. Die Mitte wird berechnet, indem die Hälfte der Anzahl der Objekte aufgerundet wird. Bei einer geraden Anzahl an Elementen wird daher das Element vor der Mitte ausgewählt. Diese Form findet nur sehr selten Verwendung. Beispiel: middle integer of {1, 2, 3, 4.5} tell application "Mail" to get middle message of inbox
781
SmartBooks
AppleScript
Name
Beschreibung
Property
propertyName Wählt eine Eigenschaft eines Objektes aus. Wenn implementiert, können alle Eigenschaften eines Objekts mit Abfrage der Eigenschaft properties ermittelt werden. Beispiel:
Relativ
tell application "Finder" Finder window "Macintosh HD"'s position end tell tell application "Mail" properties of message 1 of inbox end tell [class](before|[in] front of) Bezugsobjekt [class](after|[in] back of|behind) Bezugsobjekt Wählt ein Objekt oder eine Einfügeposition in einem Container anhand der Position eines anderen Objekts in diesem Container aus. Wenn [class] weggelassen wird, wird damit nur die Position (insertion point) bestimmt und kein Element im Container ausgewählt. Die Wörter before und in front of beziehen sich auf das Element vor dem Bezugsobjekt. Die Wörter after, in back of und behind beziehen sich auf das Element hinter dem Bezugsobjekt. Es können auch die Wörter beginning und front verwendet werden, um sich auf die erste Einfügeposition am Anfang eines Containers zu beziehen, sowie die Wörter end und back für die letzte Einfügeposition des Containers. Funktioniert nur dort, wo auch die Index-Referenzform funktioniert. Funktioniert nicht mit den grundlegenden AppleScript-Klassen wie list oder text. Beispiel: tell document 1 of application "TextEdit" word before word 2 character after character 2 copy word 5 to in front of word 1 copy word 1 of paragraph 1 to after word 3 of paragraph 2 copy word 5 to beginning copy word 5 to end end tell
782
Anhänge
Name
Beschreibung
Alle
every class classes Wählt alle Objekte der angegebenen Klasse aus. Beispiel:
Bereich
every integer of {1, 2.5, 3, 4.5} integers of {1, 2.5, 3, 4.5} tell application "Mail" to get every message of inbox tell application "Mail" to get messages of inbox every class from Anfangspunkt to Endpunkt classes from Anfangspunkt to Endpunkt class StartIndex (thru|through) StopIndex classes StartIndex (thru|through) StopIndex Wählt Objekte einer Klasse aus einem Bereich eines Containers aus. Für das erste Element kann auch beginning oder front verwendet werden und für das letzte end oder back. Ein negativer Index zählt von hinten. Beispiel:
Filter
every integer from 1 to 2 of {1, 2.5, 3, 4} integers from beginning to 2 of {1, 2.5, 3, 4} text -2 thru -4 of "Hallo" tell application "Finder" document files 1 through 3 of desktop end tell Objektreferenz whose|where BoolescherAusdruck Wählt alle Objekte oder Eigenschaften dieser Objekte aus, welche den Testkriterien im Booleschen Ausdruck entsprechen. Funktioniert nur bei Programmobjekten und dann auch nur, wenn dies von der Anwendung unterstützt wird. Funktioniert nicht mit den grundlegenden AppleScript-Typen wie list oder record. Beispiel: tell application "Mail" tell inbox every message whose sender contains "Admin" subject of first message where sender contains "Admin" end tell end tell
783
SmartBooks
AppleScript
Befehle Übersicht über alle Befehle aus dem Kern der AppleScript-Sprache und den Standarderweiterungen. Hat ein Befehl mehrere Parameter, so wird jeder auf einer neuen Zeile eingerückt dargestellt. Im Code wird natürlich alles auf einer Zeile geschrieben. Befehle activate application ASCII character integerVon0-255 ASCII number Text_NurEinZeichen beep [integer] choose application [with title text] [with prompt text] [multiple selections allowed boolean] [as application|alias] choose color [default color RGBcolor] choose file [with prompt text] [of type list_UniformTypeIdentifiersOderFileTypes] [default location alias] [invisibles boolean] [multiple selections allowed boolean] [showing package contents boolean] choose file name [with prompt text] [default name text] [default location alias]
784
Anhänge
Befehle choose folder [with prompt text] [default location alias] [invisibles boolean] [multiple selections allowed boolean] [showing package contents boolean] choose from list list [with title text] [with prompt text] [default items list] [OK button name text] [cancel button name text] [multiple selections allowed boolean] [empty selection allowed boolean] choose remote application [with title text] [with prompt text] choose URL [showing list_ServiceTypeConstantsOderBonjourServiceTypes] [editable URL boolean] clipboard info [for class] close access (alias|file|file descriptor) copy WertOderAusdruck to VariableOderVariablenmuster (count|number of) Ausdruck current date delay [number_Sekunden]
785
SmartBooks
AppleScript
Befehle display alert text [message text] [as informational|warning|critical] [buttons list_Knopfnamen] [default button text_Knopfname|integer_Knopfindex] [cancel button text_Knopfname|integer_Knopfindex] [giving up after integer_Sekunden] display dialog text [default answer text] [hidden answer boolean] [buttons list_Knopfnamen] [default button text_Knopfname|integer_Knopfindex] [cancel button text_Knopfname|integer_Knopfindex] [with title text] [with icon [stop|note|caution]|[text_ResName|integer_ResID]|[alias|file]] [giving up after integer_Sekunden] do shell script text [as class_desErgebnisses] [administrator privileges boolean] [user name text] [password text] [altering line endings boolean] get Ausdruck [as class_desErgebnisses] get eof (alias|file|file descriptor) get volume settings info for alias|file [size boolean] launch application list disks
786
Anhänge
Befehle list folder alias|file [invisibles boolean] load script alias|file localized string text [from table text_NameDerTextatei] [in bundle alias|file] log [WertOderAusdruck] mount volume text_NameOderURL [on server text] [in AppleTalk zone text] [as user name text] [with password text] offset of text in text open for access alias|file [write permission boolean] open location text_URL [error reporting boolean] path to [application|current application|frontmost application|it|me] [as alias|text]
787
SmartBooks
AppleScript
Befehle path to (apple menu|application suppor t|applications folder|control panels|control strip modules|desktop|desktop pictures folder|documents folder|downloads folder|extensions|favorites folder|Folder Action scripts|fonts|help|home folder|internet plugins|keychain folder|launcher items folder|library folder|modem scripts|movies folder|music folder|pictures folder|preferences|printer descriptions|printer drivers|printmonitor|public folder|scripting additions|scripts folder|shared documents|shared libraries|shutdown folder|sites folder|speakable items|startup disk|startup items|stationery|system folder|system preferences|temporary items|trash|users folder|utilities folder|voices|workflows folder) [from (system domain|local domain|network domain|user domain|Classic domain)] [as alias|text] [folder creation boolean] path to resource text [in bundle alias|file] [in directory text_NameDesOrdners] random number [from number] [to number] [with seed number] read (alias|file|file descriptor) [from integer_Byte] [for integer_Bytes] [to integer_Byte|eof] [before text_EinzelnesZeichen] [until text_EinzelnesZeichen] [using delimiter text_EinzelnesZeichen] [using delimiters list_MitEinzelnenZeichen] [as class] round real [rounding (up|down|toward zero|to nearest|as taught in school)] run [script|application]
788
Anhänge
Befehle run script text|alias|file [with parameters list] [in text_NameDerSkriptkomponente] say text [displaying text] [using text_NameDerSystemstimme] [waiting until completion boolean] [saving to alias|file] scripting components set VariableOderVariablenmuster to WertOderAusdruck set eof (alias|file|file descriptor) to integer_Bytes set the clipboard to anything set volume [number_Von0-7] [output volume integer_Von0-100] [input volume integer_Von0-100] [alert volume integer_Von0-100] [output muted boolean] store script script [in alias|file] [replacing yes|no|ask] summarize text|alias [in integer_AnzahlSätze] system attribute [text_Gestaltwert|text_Umgebungsvariable] [has integer_Bitmaske] system info
789
SmartBooks
AppleScript
Befehle the clipboard [as class] time to GMT write irgendetwas [to (alias|file|file descriptor)] [starting at integer_Byte] [for integer_Byte] [as class]
Basisklassen Klasse
Eigenschaften PropName (PropKlasse, Lese-/Schreibrechte) – Kurzbeschreibung der Property get = Leseberechtigung; set = Schreibberechtigung
alias
Referenz auf eine Datei, Ordner oder Dateisystem. Muss bereits existieren. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse alias. POSIX path (text, get) - Der POSIX-Pfad der Datei Eine Anwendung auf einem lokalen Rechner oder einem Server Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse application frontmost (boolean, get) – Ist die Anwendung vorne? id (text, get) – Der Bundle-Identifier der Anwendung name (text, get) – Der Name der Anwendung running (boolean, get) – Läuft das Programm? version (text, get) - Die Programmversion Ein Wahrheitswert. Es gibt nur zwei Werte, die ohne Umwandlung als boolean erkannt werden: die globalen Konstanten true und false. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse boolean. Die Klasse eines Wertes. Alle Objekte haben diese Klasse auch als Eigenschaft. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse class.
application
boolean
class
790
Anhänge
Klasse
Eigenschaften PropName (PropKlasse, Lese-/Schreibrechte) – Kurzbeschreibung der Property get = Leseberechtigung; set = Schreibberechtigung
constant
Ein Schlüsselwort mit einem festen Wert. Kann nicht selbst definiert werden, sondern nur von AppleScript, Skripterweiterungen und Programmen. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse constant. Ein Zeitpunkt. Besteht aus Wochentag, Datum und Uhrzeit Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse date. year (integer, get/set) – Vierstellige Jahreszahl month (constant, get/set) – Monat als Konstante. Mögliche Werte: January|February|March|April|May|June|July|August| September|October|November|December day (integer, get/set) – Tag des Monats weekday (constant, get) – Wochentag als Konstante. Mögliche Werte: Monday|Tuesday|Wednesday|Thursday|Friday|Saturday| Sunday hours (integer, get/set) – Der Stundenanteil der Uhrzeit minutes (integer, get/set) – Der Minutenanteil der Uhrzeit seconds (integer, get/set) – Der Sekundenanteil der Uhrzeit time (integer, get/set) – Die Anzahl Sekunden seit Mitternacht date string (text, get) – Der Datumsteil als langer Text short date string (text, get) – Der Datumsteil als kurzer Text time string (text, get) – Die Uhrzeit als Text Referenz auf eine Datei, einen Ordner oder ein Dateisystem. Muss noch nicht existieren. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse file. POSIX path (text, get) - Der POSIX-Pfad der Datei Eine Ganzzahl aus dem Bereich ±536870911 Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse integer.
date
file
integer
791
SmartBooks
AppleScript
Klasse
Eigenschaften PropName (PropKlasse, Lese-/Schreibrechte) – Kurzbeschreibung der Property get = Leseberechtigung; set = Schreibberechtigung
list
Eine geordnete Menge von Werten. Die Werte werden als item bezeichnet. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse list. length (integer, get) – Die Anzahl der Elemente in der Liste rest (list, get) – Alle Elemente der Liste außer dem ersten reverse (list, get) – Alle Elemente der Liste in umgekehrter Reihenfolge Abstrakte Klasse, welche für integer oder real stehen kann. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse integer oder real. Pseudo-Klasse, siehe file! Eine Dezimalzahl aus dem Bereich ±1.797693e+308 Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse real. Eine ungeordnete Menge von benannten Werten. Die einzelnen Namen/Werte-Paare werden als property bezeichnet. Der Zugriff auf die Werte erfolgt über den Namen. Neben der Klasse script die einzige Möglichkeit, eigene Propertys anzulegen. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse record. length (integer, get) – Die Anzahl der Elemente im record. Enthält die Adresse zu einem Objekt. Resultat des a reference to-Operators Propertys: Die Property class lässt sich bei einem reference-Objekt nicht abfragen, da jede Abfrage bei einer reference immer an das Zielobjekt weitergeleitet wird mit Ausnahme der Property contents. Sie wird verwendet, um eine reference wieder aufzulösen und wieder auf das Objekt selbst Bezug zu nehmen. Eine Liste mit drei Integerwerten im Bereich von 0 bis 65535. Die drei Werte stehen für die Farben Rot, Grün und Blau. Propertys: siehe list!
number
POSIX file real
record
reference
RGB color
792
Anhänge
Klasse
Eigenschaften PropName (PropKlasse, Lese-/Schreibrechte) – Kurzbeschreibung der Property get = Leseberechtigung; set = Schreibberechtigung
script
Eine Menge von Anweisungen, die als Gruppe ausgeführt werden kann. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse script. Eine geordnete Menge von Unicode-Zeichen. Die Klassen string und Unicode text sind Synonyme für text. Ein Text kann die Elemente character, word, paragraph, text item und text enthalten. Propertys: class (class, get) – Der Wert selbst ist immer von der Klasse text. id (integer|list (of integers), get) – Der dezimale Unicode-Wert der Zeichen length (integer, get) – Die Anzahl Zeichen im Text quoted form (text, get) – Der Text in einfachen Anführungszeichen für die nicht interpretierte Verwendung in einer Unix Shell Unit types ist keine Klasse an sich, sondern eine Gruppe von Maßeinheiten-Klassen, die alle nur die class-Property besitzen. Propertys: class (class, get) – Der Wert selbst ist immer von einer der folgenden Klassen: Längenmaße: centimetres, centimeters, feet, inches, kilometres, kilometers, metres, meters, miles, yards Flächenmaße: square feet, square kilometres, square kilometers, square metres, square meters, square miles, square yards Volumenmaße: cubic centimetres, cubic centimeters, cubic feet, cubic inches, cubic metres, cubic meters, cubic yards Flüssigkeitenmaße: gallons, litres, liters, quarts Gewichtsmaße: grams, kilograms, ounces, pounds Temperaturmaße: degrees Celsius, degrees Fahrenheit, degrees Kelvin
text
unit types
793
SmartBooks
AppleScript
Umwandlungen Von Klasse
In Klasse
alias
list (mit einem Element) text list (mit einem Element) integer list (mit einem Element) text list (mit einem Element) text list (mit einem Element) text list (mit einem Element) text list (mit einem Element) text list (mit einem Element) real text Abhängig von der Klasse des Elements in der Liste
application boolean
class constant date file integer
list (ein Element) list (mehrere Elemente) number POSIX file real record reference RGB color script text
794
text (nur wenn jedes Element der Liste in text umgewandelt werden kann!) (Es gibt keinen Wert mit dieser Klasse, sondern nur Werte der Klassen integer oder real.) (POSIX file ist eine Pseudo-Klasse von file, daher wie file.) integer (wird gerundet) list (mit einem Element) list (die Bezeichner aus dem record gehen verloren) (Abhängig von der Art des Objekts auf welches die Adresse zeigt) (RGB color ist eine Pseudo-Klasse von list, daher wie list.) list (mit einem Element) integer list (mit einem Element) real
Anhänge
Von Klasse
In Klasse
unit types
integer list (mit einem Element) real text (Unit types können innerhalb einer Kategorie – Längenmaße, Gewichtsmaße, etc. – ineinander umgewandelt werden.)
795
796
Reichweite lokaler Variablen
In den folgenden Diagrammen stehen die hellen Flächen für die Bereiche im Code, in denen die an dem Pfeil deklarierte Variable erreichbar ist.
Reichweite von Variablen
SmartBooks AppleScript
797
Reichweite einfacher Variablen
Anhänge
798
Reichweite globaler Variablen
SmartBooks AppleScript
799
1) Positionsabhängig! Funktioniert nur, wenn der Handler nach dem Skriptobjekt steht.
Reichweite von Propertys
Anhänge
SmartBooks
AppleScript
Mac OS Roman Kodierung ASCII Zeichen ASCII Zeichen ASCII Zeichen ASCII Zeichen ASCII Zeichen
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
(NUL) (SOH) (STX) (ETX) (EOT) (ENQ) (ACK) (BEL) (BS) (HT) (LF) (VT) (FF) (CR) (SO) (SI) (DLE) (DC1) (DC2) (DC3) (DC4) (NAK) (SYN) (ETB) (CAN) (EM) (SUB) (ESC)
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
800
(FS) (GS) (RS) (US) (SP) ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
p q r s t u v w x y z { | } ~ (DEL) Ä Å Ç É Ñ Ö Ü á à â ä ã
Anhänge
ASCII Zeichen ASCII Zeichen ASCII Zeichen ASCII Zeichen ASCII Zeichen
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
å ç é è ê ë í ì î ï ñ ó ò ô ö õ ú ù û ü † ° ¢ £
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
§ • ¶ ß
® © ™ ´ ¨ ≠ Æ Ø ∞ ± ≤ ≥ ¥ µ ∂ ∑ ∏ π ∫ ª
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
º Ω æ ø ¿ ¡ ¬ √ ƒ ≈ ∆ « » … À Ã Õ Œ œ – — “ ”
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235
‘ ’ ÷ ◊ ÿ Ÿ ⁄ € ‹ › fi fl ‡ · ‚ „ ‰ Â Ê Á Ë È Í Î
801
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
Ï Ì Ó Ô
Ò Ú Û Ù ı ˆ ˜ ¯ ˘ ˙ ˚ ¸ ˝ ˛ ˇ
SmartBooks
AppleScript
Key Codes Die Werte der folgenden Tabelle stammen aus der Header-Datei Events.h der Xcode-Entwicklungsumgebung. Die Werte in dieser Datei sind jedoch in hexadezimaler Schreibweise dargestellt und gelten für die amerikanische Tastatur. Hier daher eine dezimale Darstellungsweise für deutsche Tastaturen. Nicht alle Tastencodes lassen sich auch mit dem Befehl key code verwenden. Taste
Code Taste
Code Taste
Code Taste
Code
A B C D E F G H I J K L M N O P Q R S T U V W X Y (US: Z ) Z (US: Y ) Ä (US: ' ) Ö (US: ; ) Ü (US: [ )
0 11 8 2 14 3 5 4 34 38 40 37 46 45 31 35 12 15 1 17 32 9 13 7 6 16 39 41 33
30 42 43 47 44 50 10 18 19 20 21 23 22 26 28 25 29 27 24 53 122 120 99 118 96 97 98 100 101
109 103 111 105 107 113 106 64 79 80 90 48 57 56 59 58 55 49 51 36 60 61 62 63 74 72 73 82 83
84 85 86 87 88 89 91 92 65 71 81 75 67 78 69 76 114 115 116 117 119 121 123 124 125 126
+ (US: ] ) # (US: \ ) , . - (US: / ) < (US: `) ^ 1 2 3 4 5 6 7 8 9 0 ß (US: - ) ´ (US: = ) Escape F1 F2 F3 F4 F5 F6 F7 F8 F9
802
F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 Tab Caps Lock Shift Control Option Command Space Delete Return Right Shift Right Option Right Control Function Mute Volume up Volume down Keypad 0 Keypad 1
Keypad 2 Keypad 3 Keypad 4 Keypad 5 Keypad 6 Keypad 7 Keypad 8 Keypad 9 Keypad . Keypad Clear Keypad = Keypad / Keypad * Keypad Keypad + Keypad Enter Help Home Page Up Forward Delete End Page Down Left Arrow Right Arrow Down Arrow Up Arrow
Anhänge
AppleScript Fehlermeldungen error #
Fehlertext englisch
Fehlertext deutsch
-2700 -2701
Unknown error. Can’t divide by zero.
-2702
The result of a numeric operation was too large. can't be launched because it is not an application. isn't scriptable.
Unbekannter Fehler kann nicht durch Null geteilt werden. Das Ergebnis der Berechnung ist zu groß. kann nicht gestartet werden, da es kein Programm ist. unterstützt AppleScript nicht. Das Funktionsverzeichnis des Programms ist beschädigt. Der Stack ist übergelaufen. Die interne Tabelle ist übergelaufen. Es wurde versucht, einen Wert größer als erlaubt zu erstellen. Das Event-Verzeichnis des Programms konnte nicht gelesen werden. kann nicht gleichzeitig beachtet und ignoriert werden. Es können keine Operationen auf Texten mit mehr als 32 kB durchgeführt werden. Die Nachricht ist für den 7.0 Finder zu groß. <Sprachelement> kann nicht diesem <Sprachelement> folgen. Es wurde <Sprachelement> erwartet, aber ein <Sprachelement> wurde gefunden. Der -Parameter wurde mehr als ein Mal angegeben. Die -Eigenschaft wurde mehr als ein Mal angegeben.
-2703 -2704 -2705 -2706 -2707 -2708 -2709
-2720 -2721
-2729 -2740 -2741
-2750 -2751
The application has a corrupted dictionary. Stack overflow. Internal table overflow. Attempt to create a value larger than the allowable size. Can't get the event dictionary.
Can't both consider and ignore . Can't perform operation on text longer than 32K bytes. Message size too large for the 7.0 Finder. A can't go after this . Expected but found . The parameter is specified more than once. The property is specified more than once.
803
SmartBooks
AppleScript
error #
Fehlertext englisch
Fehlertext deutsch
-2752
The handler is specified more than once. The variable is not defined.
Die -Routine wurde mehr als ein Mal angegeben. Die Variable ist nicht definiert. kann nicht deklariert werden, da es sowohl eine lokale als auch eine globale Variable ist. Der „Exit“-Befehl befindet sich nicht in einer „repeat“-Schleife. Die „Tell“-Befehle sind zu tief verschachtelt. ist als formaler Parameter nicht zulässig. ist kein Parameter-Name für den Event <Event>. Ein Teil dieses Ausdrucks lieferte kein Ergebnis.
-2753 -2754
Can't declare as both a local and global variable.
-2755
Exit statement was not in a repeat loop. Tell statements are nested too deeply. is illegal as a formal parameter. is not a parameter name for the event <event>. No result was returned for some argument of this expression.
-2760 -2761 -2762 -2763
804
Anhänge
Fehlermeldungen des Betriebssystems error #
Fehlertext englisch
0 -34 -35
No error. Disk full. Disk wasn’t found.
-37 -38 -39 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -61 -108 -120 -124 -128 -192
Fehlertext deutsch
Kein Fehler Das Volume ist voll. Das Volume wurde nicht gefunden. Bad name for file. Ungültiger Dateiname für File wasn’t open. Die Datei ist nicht geöffnet. End of file error. Ende der Datei erreicht. Too many files open. Zu viele Dateien geöffnet. File wasn’t found. Die Datei wurde nicht gefunden. Disk is write protected. Das Volume ist schreibgeschützt. File is locked. Die Datei ist geschützt. Disk is locked. Das Volume ist geschützt. File is busy. Die Datei ist in Verwendung. Duplicate file name. Doppelter Dateiname für File is already open. Die Datei ist bereits geöffnet. Parameter error. Parameterfehler File reference number error. Fehler in der Dateinummer (File reference number) File not open with write permission. Die Datei ist nicht mit Schreibberechtigung geöffnet. Out of memory. Kein Speicher mehr verfügbar. Folder wasn’t found. Der Ordner wurde nicht gefunden. Disk is disconnected. Das Volume wurde deaktiviert. User cancelled. Vom Benutzer abgebrochen. A resource wasn’t found. Eine Ressource wurde nicht gefunden. 805
SmartBooks
AppleScript
error #
Fehlertext englisch
-600 -601
Application isn’t running Das Programm läuft nicht. Not enough room to launch applica- Es ist nicht genügend Speicher vertion with special requirements. fügbar, um das Programm mit besonderen Anforderungen zu öffnen. Application is not 32-bit clean. Das Programm ist nicht 32-Bit-fähig. More memory needed than is speci- Es wird mehr Speicher benötigt, als fied in the size resource. in der „size“-Ressource angegeben wurde. Application is background-only. Das Programm ist ein Hintergrundprozess. Buffer is too small. Der Puffer ist zu klein. No outstanding high-level event. Es wird kein High-Level-Event mehr erwartet. Connection is invalid. Die Verbindung ist ungültig. Not enough system memory to con- Es ist nicht genügend Systemspeinect to remote application. cher verfügbar, um eine Verbindung zum entfernten Programm aufzubauen. Remote access is not allowed. Zugriff von außen ist nicht zugelassen. isn’t running or program läuft nicht oder die Prolinking isn’t enabled. grammverbindungen sind deaktiviert. Can’t find remote machine. Der entfernte Computer wurde nicht gefunden. Invalid date and time . Datum und Uhrzeit sind ungültig: .
-602 -605
-606 -607 -608 -609 -904
-905 -906
-915 -30720
806
Fehlertext deutsch
Anhänge
B - Quellen Die Links auf den folgenden Seiten finden Sie auch direkt zum Anklicken auf der Webseite http://www.skripteditor.de.
AppleScript bei Apple Die AppleScript-Quellen bei Apple liegen fast ausnahmslos nur in englischer Sprache vor.