Forenindex » Programmierung/Entwicklung » AppleScript » Per Droplet Ordner erzeugen

Per Droplet Ordner erzeugen

Anonym
Beiträge gesamt: 22827

31. Mai 2004, 18:58
Bewertung:

gelesen: 751

Beitrag als Lesezeichen
Hallo Hans,

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

Per Droplet Ordner erzeugen

Hans Haesler
  
Beiträge gesamt: 5826

31. Mai 2004, 20:41
Bewertung:

gelesen: 750

Beitrag als Lesezeichen
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>

Per Droplet Ordner erzeugen

Anonym
Beiträge gesamt: 22827

1. Jun 2004, 08:01
Bewertung:

gelesen: 750

Beitrag als Lesezeichen
Alles klar, Läuft wie gewünscht
Zum Glück gibt es Menschen wie Dich!

Gruss willem