Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03151.jsonl.gz/1087

ja schon wieder eine Frage hab mich schon Stunden damit beschäftigt aus den mir bekannten Scripts ein Droplet zu erstellen, welches: In den Ordner, den ich auf das Droplet ziehe einen Unterordner mit dem Namen "Kundendaten" erstellt.
folgendes Script funktioniert zwar, aber es wird immer der Zielordner abgefragt. (Zielordner ziehe ich ja schon aufs Droplet) ------ on run display dialog "Ordner auf das Icon dieses Droplets deponieren." buttons "OK" default button 1 with icon 0 end run
on open selectFolder set targetFolder to (choose folder with prompt "Zielordner wählen") as string set folderNames to {"Kundendaten"} repeat with i from 1 to count of folderNames set folderName to item i of folderNames tell application "Finder" to make new folder at folder targetFolder with properties {name} end repeat end open ------ Gruss 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?