21.10 Arbeit mit Dateien und Daten 

21.10.1 Datei automatisch öffnen 

Bisher hatten wir das zu bearbeitende Dokument immer zunächst in dem jeweiligen Programm geöffnet, bevor wir mit einem Skript darauf zugegriffen haben. Dieser Schritt ist jedoch nicht unbedingt erforderlich. Programme sind in der Lage, Dokumente auf eine Anweisung von AppleScript hin selbst zu öffnen. So etwa im folgenden Skript:
set Datei to choose file tell application "TextEdit" open Datei tell document Datei set size of paragraph 1 to 18 set font of paragraph 1 to "Times" end tell end tell
| Datei direkt ansprechen | In diesem Beispiel wird der Anwender zuerst aufgefordert, eine Datei auszuwählen. Der Applikation TextEdit wird dann mitgeteilt, dass die ausgewählte Datei in ihr geöffnet werden soll. Da der Name der Datei dem Skript bekannt ist, kann auf die Ansprache des vordersten Fensters verzichtet und das Dokument über seinen Dateinamen angesprochen werden. Die Formatierung des ersten Absatzes entspricht dem Beispiel aus dem obigen Abschnitt über Textformatierung. |
21.10.2 Datei speichern und schließen 

Um eine Datei zu schließen und sie vorher unter einem anderen Namen zu speichern, können Sie sich der Befehle close sowie choose file name in Kombination mit save bedienen. Erweitert man das Skript um diese Funktionen, so würde es folgendermaßen lauten:
set Datei to choose file tell application "TextEdit" open Datei tell document Datei set size of paragraph 1 to 18 set font of paragraph 1 to "Times" end tell set Neu to choose file name with prompt "Welcher Dateiname?" default name ".rtf" save document Datei in Neu close document Datei end tell
| Öffnen-Dialog einstellen | Es ist möglich, dem Dialog einige Vorgaben zu machen. Der zu definierende prompt erscheint in diesem Beispiel oberhalb des Auswahlfensters. Um dem Anwender eine Gedächtnisstütze zu geben, wird als Dateiname gleich die Endung .rtf vorgegeben. Zum Abschluss wird noch TextEdit mitgeteilt, dass das Objekt document Datei zuerst in der ausgewählten Datei gespeichert und dann geschlossen werden soll. |
21.10.3 Datei überschreiben 

Es wäre auch möglich, das Ergebnis in der Ursprungsdatei zu sichern. Hierzu kann man sich auf die Anweisung close beschränken.
close document Datei saving yes
speichert die Änderungen in dem Dokument. Mit saving no wird das Dokument ohne Speicherung geschlossen, eine Rückfrage für den Benutzer erfolgt mit saving ask. Sie können, um während des Ablaufs eines Skriptes die bisherigen Änderungen zu speichern, auch dem Programm die Anweisung save document Datei übergeben.
Abbildung 21.18 Mit AppleScript kann auch der Name einer zu speichernden Datei gewählt werden.
21.10.4 Skript-Protokoll erstellen 

Es ist manchmal auch sinnvoll, Text direkt mit AppleScript in einer Datei zu speichern, ohne sich einer anderen Applikation zu bedienen. Als Beispiel dafür möchten wir ein Skript erstellen, das jedes Mal, wenn es aufgerufen wird, an ein schon bestehendes Protokoll die Uhrzeit und eine Meldung anhängt. AppleScript bietet Ihnen in Kombination mit den Befehlen open, write und close eine einfache Möglichkeit dafür. Die Funktion für ein Protokoll, die im Folgenden mit Protokollieren () aufgerufen wird, könnte so lauten:
on Protokollieren () set Protokoll to (open for access file "Brain:Users:kai:Library:Logs:Script.log" with write permission) set Datum to (current date) as string set Eintrag to Datum & " – Skript ausgefuehrt" & return write Eintrag to Protokoll starting at eof close access file "Brain:Users:kai:Library:Logs:Script.log" end Protokollieren
Der erste Schritt besteht darin, ein Objekt mit einer Datei zu öffnen, die ergänzt werden soll. Wichtig ist dabei, dass Sie die Datei mit dem Zusatz with write permission aufrufen, da sie sonst nicht im Schreibmodus geöffnet wird. Damit die Datei auch über das Programm Konsole eingesehen werden kann, wird sie gleich im richtigen Verzeichnis Brain:Users:kai:Library:Logs: angelegt. Bei dem Öffnungsvorgang wird zunächst eine neue Datei erstellt, und die existierende noch nicht damit überschrieben.
| Dateien schließen | Beachten Sie unbedingt, dass geöffnete Dateien auch immer wieder geschlossen werden müssen und Sie dabei den absoluten Pfad oder die gleiche Angabe wie bei open angeben sollten. Das durch unser Skript erzeugte Protokoll können Sie bequem mit dem Programm Konsole (siehe Abbildung 21.19) einsehen. |
Im zweiten Schritt gilt es, das aktuelle Datum in einer Variablen zu speichern und ferner die Zeile, die dem Protokoll hinzugefügt werden soll, aus dem Datum und der Meldung »Skript ausgeführt« zusammenzufügen. Der Zusatz & return veranlasst hier nicht, dass die Funktion verlassen werden soll. Er steht vielmehr für einen Zeilenumbruch, der gemeinhin in einer Textverarbeitung mit
erzeugt wird, und sorgt dafür, dass jeder Eintrag in einer eigenen Zeile steht. Die Anweisung write schreibt die so definierte Zeile in die Datei. Mit dem Zusatz starting at eof stellen Sie sicher, dass die Zeile an das Ende der Datei angehängt wird. eof ist eine Abkürzung für »End of File«.
Abbildung 21.19 Mit dem Befehl write kann leicht ein Protokoll mit automatisch generierten Einträgen erstellt werden.
21.10.5 Datei-Informationen auslesen 

Die Endung einer Datei gibt in der Regel Aufschluss über ihren Typ. Diese und weitere Informationen, die Sie sich zu einer Datei auch im Fenster des Finders anzeigen lassen können, können auch für ein Skript sehr nützlich sein. Der Befehl info for ermöglicht es zum Beispiel, Informationen wie Erstellungs- und Änderungsdatum auszulesen. Um auf eine solche gespeicherte Datei-Information gezielt zuzugreifen, bedienen Sie sich einer Anweisung wie
set Aenderung to modification date of Informationen
Welche Informationen Ihnen prinzipiell zur Verfügung stehen, können Sie im Skripteditor mit einem Skript wie in Abbildung 21.20 in Erfahrung bringen.
Abbildung 21.20 AppleScript bietet Ihnen auch Zugriff auf die Informationen einer Datei.







Jetzt bestellen


