Script zum verschieben gesucht

Gibt es ein Applescript, welches statisch nach Aufruf eine ausgewählte Datei immer in einen fest definierten Ordner verschiebt?
Danke.

Nicht speziell, obwohl es einfach genug ist, einen zu schreiben. Außerdem können Sie sich das Skript Data > Move ansehen.

Hier ist ein einfaches Beispiel…

set destinationGroupID to "71965AF4-9792-4492-B99D-D9447A18C41D" -- Dies ist die UUID für die Zielgruppe, die in DEVONthink unter Bearbeiten > Artikelverknüpfung kopieren eingestellt ist.

tell application id "DNtp"
	set sel to (selection as list) -- Holen Sie sich die Auswahl
	if sel is not {} then -- Wenn die Auswahl nicht leer ist.
		
		set destinationGroup to get record with uuid destinationGroupID -- Verwenden Sie die am Anfang angegebene UUID, um die Gruppe zu erhalten, in die die Datei(en) gehen sollen.
		
		repeat with thisRecord in sel -- Schleife durch die Elemente in der Auswahl
			move record thisRecord to destinationGroup
		end repeat
		
	else -- Wenn die Auswahl leer ist.....
		display alert "Please select a file." -- Eine Nachricht anzeigen
	end if
end tell

(Übersetzt mit deepl.com)

Super, vielen Dank. Der Ansatz mit der destinationGroupID hatte mir gefällt. :smiley:

Und, wie kann ich am besten das Label auslesen und abhängig vom Label verschieben? z.B. das Rote Label (0) geht in eine andere Datenbank?

So etwas würden Sie in der Wiederholungsschleife verwenden.…

repeat with thisRecord in sel -- Loop through the items in the selection
	set recordLabel to label of thisRecord
		if recordLabel = 1 then — Das sind Werte, 0-7.
		-- etwas tun 
	        end if
end repeat

Ich glaube, irgendwo habe ich noch einen Hänger:



tell application id "DNtp"
	
	repeat with thisRecord in sel -- Loop through the items in the selection
		set recordLabel to label of thisRecord
		
		if recordLabel = 6 then -- Das sind Werte, 0-7.
			set destinationGroupID to "62B099A7-B6FD-4656-9935-C046C65E3BA6"
			
			set destinationGroup to get record with uuid destinationGroupID -- 
			
			repeat with thisRecord in sel -- Schleife durch die Elemente in der Auswahl
				move record thisRecord to destinationGroup
			end repeat
		end if
		
		if recordLabel = 5 then -- Das sind Werte, 0-7.
			set destinationGroupID to "B1E7100C-34BB-4A03-8E39-A607F0158C18"
			
			set destinationGroup to get record with uuid destinationGroupID -- 
			
			repeat with thisRecord in sel -- Schleife durch die Elemente in der Auswahl
				move record thisRecord to destinationGroup
			end repeat
		end if
		
		if recordLabel = 4 then -- Das sind Werte, 0-7.
			set destinationGroupID to "FC0D8FF6-15B3-4500-8509-52A174C3C2B8"
			
			set destinationGroup to get record with uuid destinationGroupID -- 
			
			repeat with thisRecord in sel -- Schleife durch die Elemente in der Auswahl
				move record thisRecord to destinationGroup
			end repeat
		end if
		
	end repeat
	
end tell




Kein schlechter Versuch! :smiley:

Sie haben ein Problem damit, dass eine Wiederholungsschleife in die Wiederholungsschleife eingefügt wird. Die Hauptwiederholungsschleife lautet: “Nehmen Sie diese Liste von Dateien und verarbeiten Sie die erste Datei. Wenn du mit dem ersten fertig bist, verarbeite den zweiten, dann den dritten, usw.”
Wenn Sie die Wiederholungsschleife in Ihre IF-Anweisung einfügen, sagen Sie dem Computer, dass er die gesamte Liste der Dateien erneut verarbeiten soll, wenn Sie wirklich nur die aktuelle Datei verarbeiten möchten. Also, das ist…

if recordLabel = 6 then -- Das sind Werte, 0-7.
set destinationGroupID to "62B099A7-B6FD-4656-9935-C046C65E3BA6"
set destinationGroup to get record with uuid destinationGroupID -- 
repeat with thisRecord in sel -- Schleife durch die Elemente in der Auswahl
	move record thisRecord to destinationGroup
		end repeat
end if

…sollte das sein……


if recordLabel = 6 then -- Das sind Werte, 0-7.
	set destinationGroupID to "62B099A7-B6FD-4656-9935-C046C65E3BA6”
	set destinationGroup to get record with uuid destinationGroupID -- 
     move record thisRecord to destinationGroup
end if

Wir können Ihr Skript jedoch etwas effizienter gestalten und auch Fehler beseitigen. Sie haben mehrere IF…THEN Anweisungen, eine für jedes farbige Etikett. Es ist in Ordnung, die Überprüfung jedes Etiketts zu erlauben, aber die Art und Weise, wie der Code strukturiert ist (jeweils unabhängig), wird immer alle Prüfungen durchgeführt. Wenn also Label 6 übereinstimmt und die Datei verschoben wird, wird trotzdem geprüft, ob das Label 5 und auch 4 ist.
Wir setzen diese in eine geschachtelte IF…THEN-Anweisung mit “else if” wie dieser….

tell application id "DNtp"
	
	repeat with thisRecord in sel -- Loop through the items in the selection
		set recordLabel to label of thisRecord
		
		if recordLabel = 6 then -- Ist es Etikett 6?
			set destinationGroupID to "62B099A7-B6FD-4656-9935-C046C65E3BA6"
			set destinationGroup to get record with uuid destinationGroupID -- 
			move record thisRecord to destinationGroup
			
		else if recordLabel = 5 then -- Es war nicht Label 6. Ist es Etikett 5?
			set destinationGroupID to "B1E7100C-34BB-4A03-8E39-A607F0158C18"
			set destinationGroup to get record with uuid destinationGroupID -- 
			move record thisRecord to destinationGroup
			
		else if recordLabel = 4 then -- Es ist auch nicht Label 5. Ist es 4?
			set destinationGroupID to "FC0D8FF6-15B3-4500-8509-52A174C3C2B8"
			set destinationGroup to get record with uuid destinationGroupID -- 
			move record thisRecord to destinationGroup
			
		end if
		
	end repeat
end tell
```Und ja, wir können es noch effizienter machen, wenn Sie daran interessiert sind, mehr zu erfahren.

Danke, jetzt funktioniert es schon einmal. Wenn Sie Zeit für Optimierungen haben, immer her damit 8)

Hier ist eine effizientere Version, die Kommentare im Code enthält. Prost!


tell application id "DNtp"
	
	repeat with thisRecord in sel -- Loop through the items in the selection
		set recordLabel to label of thisRecord
		
		if recordLabel = 6 then -- Ist es Etikett 6?
			set destinationGroupID to "62B099A7-B6FD-4656-9935-C046C65E3BA6"
			
		else if recordLabel = 5 then -- Es war nicht Label 6. Ist es Etikett 5?
			set destinationGroupID to "B1E7100C-34BB-4A03-8E39-A607F0158C18"
			
		else if recordLabel = 4 then -- Es ist auch nicht Label 5. Ist es 4?
			set destinationGroupID to "FC0D8FF6-15B3-4500-8509-52A174C3C2B8"
			
		else -- Der Vollständigkeit halber können wir eine Standardbedingung hinzufügen, indem wir am Ende eine "else"-Anweisung hinzufügen. (Das ist optional, aber hier lehrreich.)
			-- Dies ist auch eine Möglichkeit, Fehler zu beheben, wenn eine Datei kein Label (4,5,6) oder gar kein Label (gemeldet als 0) hat.
			display alert "Dieses Label stimmt nicht überein oder die Datei hat kein Label."
			return -- Dadurch wird das Skript nach der Warnung gestoppt, da Sie bei einem Fehler nicht weiterverarbeiten möchten, in diesem Fall, wenn kein Label abgeglichen wurde.
		end if
		
		--- 
		
		set destinationGroup to get record with uuid destinationGroupID -- 
		move record thisRecord to destinationGroup
		
	end repeat
end tell