Hallo Willem,
was willst Du denn noch mehr? Es funktioniert ja! ;-)
Okay … es könnte etwas direkter sein. Der Vorteil eines Droplets besteht darin, dass der Anwender Ordner oder Dateien darauf ziehen kann und nicht mehr mit einem Auswahl-Dialog genervt wird. Weil er durch das Ziehen des Objektes das Ziel schon bestimmt hat.
Deshalb muss man Dein Script leicht ändern:
---
on run
display dialog "Ordner auf dem Icon
dieses Droplets deponieren." buttons "OK" default button 1 with icon 0
end run
on open selectFolder
set targetFolder to item 1 of selectFolder as string
try
alias (targetFolder & "Kundendaten")
on error
try
tell application "Finder" to make new folder at folder targetFolder with properties {name:"Kundendaten"}
end try
end try
end open
---
Die Variable 'selectFolder' enthält die Liste der auf dem Droplet deponierten Objekte. Wenn der Anwender schön brav nur eines darauf fallenlässt, dann ist alles okay, Weil aber mehr als ein Objekt daraufgezogen werden kann, muss man – vorbeugend – den Inhalt von 'targetFolder' auf ein Objekt beschränken. Dies gelingt mit 'item 1 of selectFolder'. Der Nachsatz 'as string' wandelt den Alias-Pfad in eine Textkette um.
Nun muss geprüft werden, ob das erste Element der Liste ein Ordner ist. Man könnte dazu den Test 'if targetFolder ends with ":"' gebrauchen (weil der Pfad eines Ordners mit einem Doppelpunkt endet). Oben wird eine andere Möglichkeit eingesetzt: Ein doppelter 'try'-Wrapper, welcher nicht so einfach zu verstehen ist.
Die Zeile 'alias (targetFolder & "Kundendaten")' prüft, ob im Zielordner schon der Ordner "Kundendaten" existiert. Wenn ja, geschieht nichts. Wenn der Ordner noch nicht vorhanden ist, dann ergibt dies einen Fehler und der 'on error'-Teil wird aufgerufen. Darin ist nochmals eine 'try / end try'-Konstruktion, damit eine Fehlermeldung verhindert wird, wenn das Objekt kein Ordner ist. Alles klar?
Hans Haesler <hsa@ringier.ch>