Dateinamenvergabe

Jetzt hat er das gemacht

:slight_smile: so langsam wird´s was

Das bedeutet das Dokument hat keine Tags. Rechtsklick oben in die Spalten, dann “Tags” auswählen.

Nachdem die Smart Rule gelaufen ist sollten die Tags z.B. so aussehen

Ok, ich werd ne schlaflose Nacht haben, ich sag dir morgen Bescheid :slight_smile:
Vielen lieben dank dafür, ich versuch mir jetzt den Workflow zu Ende zu basteln über Nacht, sieht sehr Erfolgsversprechend aus,

Damit hast du mal gerade paar Monate schlaflose Nächte erspart und meine Zukunft etwas leichter gemacht!

1 Like

Wenn wir das hier durch haben möchte ich mich gerne erkenntlich zeigen, lass uns morgen nochmal quatschen, ich wünsch dir eine Gute Nacht

Ebenso!

1 Like

Guten Morgen Pete

OK, so wie ich das jetzt sehe benennt er die Datei richtig.
Der Vorgang ist so:

  • Dokument macht ocr

  • Originaldokument verschwindet im Papierkorb

  • dann wird das Erstellungsdatum ausgelesen

  • und jetzt sollen tags zugewiesen werden aus den Kategorien die angelegt worden sind
    (Ich glaube das funktioniert nicht, die Tags sind in den Kategorien vorhanden aber es werden keine im Dokument angezeigt)
    Hier die Smart Rule Bildschirmfoto 2021-01-22 um 07.42.15 Hier siehst du sind da Tags links in den Kategorien und dann wurde die Smart Rule auf das ausgewählte Dokument angewendet


    weiter werden keine Tags im Dokument angezeigt

  • Dann sollte der Name benannt anhand der Tags im Dokument die deckungsgleich sind mit den Tags in den Unterkategorien der Datenbank wobei die Unterordner dem script Auskunft geben welcher Tag zu welcher vordefinierten Gruppe gehört und an welche stelle er gehört.

  • Danach soll der Überschuss an angelegten Tags wieder gelöscht werden, ich vermute mal aus dem Dokument da alle tags aus allen Unterordnern auf das Dokument übertragen wurden, Richtig?

Sofern ich die Tags manuel zufüge wird die Datei richtig benannt, also muss ich irgendwo vorher einen Fehler machen mit der smart rule, ich hab probiert die Quelle der smart Rule direkt auf die Gruppe (Betreff) zu beziehen das klappt auch nicht.
Hier schick ich dir mal das Script aus meinem Programm

– Assign Tags
– Created by Christian Grunenberg on Jun 02 2014.
– Copyright © 2014-2020. All rights reserved.

property pMaxTags : 5

on performSmartRule(theRecords)
tell application id “DNtp”
repeat with theRecord in theRecords
set theTags to extract keywords from record theRecord with existing tags
set n to count of theTags
if n > 0 then
if n > pMaxTags then set n to pMaxTags
set tags of theRecord to (parents of theRecord) & (items 1 thru n of theTags)
end if
end repeat
end tell
end performSmartRule

Bildschirmfoto 2021-01-22 um 08.05.02

Hier wenn ich die Tags manuel vergebe sieht das dann so aus, er hat zwei Namen erkannt und mit dem Semikolon getrennt. Bildschirmfoto 2021-01-22 um 08.18.34
Perfekt
(Ich hab den Flash in das Script als trennzeichen reingemacht nix mehr)
Also was ist der Fehler das der die Tags nicht automatisch macht?

Das ist z.B. über den Menüpunkt Skripte > Skript-Ordner öffnen in DEVONthink möglich.

1 Like

YOOO, jetzt wo sie es sagen sehe ich ihn jetzt auch :smile: man ist manchmal schusselig.
Ich war zu schnell und hab immer den Button in der Statusleiste benutzt den ich hinzugefügt hab und da hab ich nicht gemerkt das oben in der Menüleiste auch noch so ein Scriptezeichen ist.
Zum letzten Thema nur so nebenbei, mir ist aufgefallen das Tags hinzufügen auch mit einem Script geht und das ich keinen Shortcut für die Funktion im Kontexmenü auf die Funktion brauche.

Hi Adam, es scheint du hast den Suchbereich der Smart Rule falsch gesetzt.

Das wird klarer wenn du das hier machst:

  • Wähle die Smart Rule in der Seitenleiste aus.

  • Wenn “Suchen in:” immer noch auf “Tags” steht (wie in deinem Bild) dann ist die Liste der erfassten Dokument leer (Punkt 1), richtig?


Die Smart Rule soll deine Dokumente behandeln, deshalb müssen sie in der Liste auftauchen:

  • Setze “Suchen in:” auf die komplette Datenbank.

  • Die Liste müsste dir jetzt alle Dokumente dieser Datenbank anzeigen.

Hallo Pete, es klappt langsam aber sicher :slight_smile: ich muss noch etwas Praxis erarbeiten damit ich noch weiss was ich verbessern kann, aber du bist jetzt schon definitiv der Beste :slight_smile: !
Ich muss heute noch etwas damit arbeiten und meld mich dann wieder, ich muss etwas die Datenbank aufbauen und gucken wie er Verschlagwortet und benennt wie ich Shortcuts zum schnelleren bearbeiten anlege, wie ich den Verzeichnissbaum erstelle, wie ich mit Dateien widerfahre, ob Dublikate oder Aliase verwendet werden, und wie ich die Banken im Dateinamen Ausschließe die als Bankverbindungen angezeigt werden aber die Banken behalte wo meine Konten sind. Dann eine Synchronisierung mit meiner qnap einrichten, backups erstellen und verschlüsseln. Vieles davon bekomm ich von alleine hin, Das Script würde ich gerne lernen umzubauen, ich erkenne schon die Logic wie ein Script aufgebaut ist und wie das funktioniert, also Namen und Positionen würde ich bestimmt mit etwas Fingerspitzengefühl getauscht und geändert hinbekommen, nur neue Sachen da werd ich dich wahrscheinlich morgen nochmal um hilfe fragen müssen. Aber die größte Hürde hast du mit Bravur gemeistert und ich habe schnell viel gelernt von dir um mit dem Programm extrem gut durchzustarten! Kann ich dich irgendwie Privat kontaktieren? :slight_smile:

Ich werde versuchen das Forum als Seite runterzuladen und zu speichern in Devonthink mir alle bilder und Scripte angucken die es hier so gibt, wenn du noch irgendwas im patou hast wie ich die Smart Rules und Skripte besser lernen kann, ich bin ganz OHR, alles was du schreibst kommt in meinen Langzeitspeicher :slight_smile:

Hallo Pete, Kannst du mir das Skript nochmal etwas umbauen?
Das Script funktioniert Super
Und zwar haben wir jetzt 4 Ordner an Tags, Ich brauch noch drei Ordner für Tags dazu damit
Die Firmen nicht falsch mehrfach benannt werden sondern nur eine Firma immer.
Wenn kein Tag im Firmaordner gefunden wurde dann soll er im ersten neuen Ordner Namens Finanzamt suchen, wenn dann im neunen Finanzamtordner kein passender Tag gefunden wurde dann soll er weitersuchen im neuen Krankenkassenordner, wenn da wiederum kein passender Tag gefunden wurde dann Soll er den neuen Bankenordner durchsuchen, und wenn dann nix gefunden wurde dann soll er den Platzhalter rein machen.

Aktenzeichen Kundennummer
Firma
Namen
Betreff
Finanzamt
Krankenkasse
Banken

Wenn Firma false dann Finanzamt wenn Finanzamt false dann Krankenkasse wenn Krankenkasse false dann Banken wenn Banken false dann placeholder %Firma_
(sollte er in einem der Ordner true sein dann soll er nur die Inhalte des Ordners zuende absuchen und alle Tags einsetzten die er in ihm findet, alle weiteren Ordner danach nicht mehr absuchen da es sonst wieder Doppelbenennungen geben könnte was dann das spätere automatische einsortieren nach Firma verkompliziert.)

Wenn man ihm noch sagen könnte das wenn ein Begriff im ausgelesenen Dokument zu 98% einem Tag ähnelt das er den Tag dann einstzen darf, das wäre super.

Dann ist das Script perfekt, jetzt wenn das script soweit ist dachte ich an die Automation damit man es in eine Smart Rule einbinden einbetten kann oder wie auch immer.

Und wenn du noch ein tipp hättest für einen Workflow mit dem sortieren wäre ich dir ebenfalls sehr verbunden.
Gibt es eine Möglichkeit dich dafür zu entlohnen?
Ich bin sehr dankbar für diese kompetente Hilfe und möchte lieber dafür bezahlen damit du mir immer mal wieder hilfst und dich gut dabei fühlst.
Ich hab einen ich nenn´s mal einen passiven email Account eingerichtet damit hier nix öffentlich gepostet wird und damit keiner von uns beiden hier öffentlich privates preisgeben muss, und wenn du das nicht darfst dann danke ich dir hiermit vom ganzen Herzen weil ich keinen schimmer habe wer du bist und was du hier für eine Funktion hast.
michaelkunze747@gmail.com

Danke für den Tipp mit den Platzhaltern, Ich hab eine Smart Rule erstellt die nach Umbenennung alles mit einem % Zeichen im Namen anzeigt und ich dann schneller alles sehe dadurch was nicht benannt ist. TOP

Ne ganz wichtige Frage noch, kann man Smart Rules unten links in Gruppen einordnen damit nicht so eine total überlange liste entsteht?

VG Adam

Du bist echt der verdammte Terminator der Daten man :slight_smile:
Ja der Apple, noch hab ich so viel Patte nicht über um so Großzügig zu sein, ich arbeite aber drauf hin, ich denke wenn wir uns in 3 Jahren könnte sowas bei mir anders aussehen :slight_smile: ich will hoffen. Ich mein doch etwas Geld mit Paypal, so das ich mir das auch noch leisten kann :slight_smile:
Das script ist super, aber es fängt an das es jetzt mehrere Kundennummern reinhaut die aber Quittungsnummern sind, und bei firmen haut er plötzlich noch EWE rein das ist so ein Stromanbieter der auch in meiner Liste steht aber der garnichts mit Firma ReWo Elektrotechnik zu tun hat.

Ich kann in dem script nicht erkennen was für das ungefähre erkennen verantwortlich ist um das anzupassen, als ich versucht habe den Rest zu löschen unten zwischen den 2 Absätzen bis zu dem approximate, dann wollte das script nicht mehr. Eine Prozentualangabe hätte ich anpassen können, aber dazu fehlt mir definitiv die Erfahrung. Ich hab gedacht wenn mal ein Buchstabe schlecht erkannt wird das er dann trotzdem den tag erkennt, es scheint so als wenn er jetzt viel mehr als nur einen Buchstaben nicht erkennt und deswegen Tags mit großen Veränderungen rein macht.

Ich glaube es ist besser die 98% rauszunehmen, sorry mein Fehler, ich hab nur einseitig gedacht.
Dann besser garnichts eintragen und den falschen wert sehen können anhand des Platzhalters wenn kein 100% match da ist als das Fehler in der Dattenbank auftauchen.

Der rest ist Hammer mit den neuen Ordnern!

Scheinbar arbeitest du für DEVONtechnologies sonst hättest du keine informationen über folgendes, kannst du mir sagen wann ungefähr das update mit den Gruppen für die Regeln kommt?

Und hast du einen Tip für mich womit ich anfangen soll apple Script zu lernen? Ich bin heiß darauf, da muss man jetzt anknüpfen solang es juckt :slight_smile:

Wie genau definierst du “ähneln”, und wie 98%? Wenn Du diese Liste hast
“Muße”,. “Buße”, “Muss”, “Mus”, “Bus”, “Busse”
welche Begriffe sind dann “ähnlich” zu welchen anderen und zu welchem Prozentsatz?

Anders gesagt: Dein Wunsch ergibt keinen Sinn, wenn man nicht einen hinreichend großen Korpus von Begriffen hat, der manuell entsprechend markiert ist. Hübsches Beispiel: Wenn ich bei Rewe online nach “Dinkelmehl” suche, ist einer der ersten Treffer “Buchweizenmehl”. Vor “Weizenmehl”. Für mich ist die Ähnlichkeit zwischen Such- und Trefferbegriff eher negativ. Offenbar sehen das andere anders.

Ich hab einen Fehler gemacht, ich hab nicht dran gedacht das er bereits richtige Begriffe dann auch als mögliche unvollständige Begriffe ansieht obwohl sie vollständig sind. Ich hab an die Buchstaben eines Wortes gedacht das eventuell durch einen knick im Blatt schlecht erkannt worden ist oder durch eine leichte unschärfe in der Datei die z.B. drei fehlenden pixel zum vollständigen Buchstaben es schafft zu überbrücken.
Ich dachte an Prozent da ein ganzer Buchstabe bei einem Wort mit 4 Buchstaben 25% je Buchstabe bedeutet und die Toleranz für ähnliche Begriffe größer ist als bei einem Wort mit 20 Buchstaben wo ein Buchstabe dann 5% bedeutet, soviel Spielraum für ähnliche Begriffe führt unweigerlich zu vielen Fehlern so der Grundgedanke, wenn ich jetzt also 98% Ähnlichkeit zum vorhandenen Tag angebe würde ich einem Wort mit 4 Buchstaben eine Fehlertoleranz von 2% einräumen die sich ich sag mal Beispielsweise auf 8 Pixeln oder so auswirkt wenn das ganze Wort aus aus 400 Pixeln besteht.
(Ich weiß jetzt nicht aus wieviel Pixel ein Buchstabe besteht, Ich versuche nur das Verhältnis der Fehlertoleranz zu verdeutlichen.)
Sollten dann noch zu viele Fehler sein in der Dateibenennung könnte man die Tagähnlichkeit von 98% auf 99% oder sogar 99,6% korrigieren um die Fehlertoleranz von 2% auf 0,4% zu verringern oder sogar auf 100% um Keine Fehlertoleranz zu erlauben, und das ganze wäre dann natürlich auch machbar in die andere Richtung sollte er zu wenig erkennen könnte man wieder mehr Toleranz versuchen einzuräumen um das man die goldene Mitte das letzte Mü findet für den letzten Feinschliff sozusagen.

Aber das ALLER-ALLERWICHTIGSTE IST: Ich muss gucken das das ganze Script für mich als leihen noch überschaubar bleibt solange es keine Regel dafür gibt das ich eventuell selbst noch damit arbeiten kann, (Begriffe Tauschen, Sektionen hinzufügen bzw. entfernen wenn sich meine Ordnerbedürfnisse, bzw. Dateinamenbedürfnisse ändern, ich brauche ein Blockmuster um Zusammenhänge erkennen zu können)
Ich schreibe das weil ich gerade nicht erkenne was genau ich löschen kann damit das Script ohne Fehlertolernaz läuft, es wäre schön wenn ihr mir das Grundscript mit den Ordnern
Firma
Betreff
Aktenzeichen / Kundennummer
Name
&
Finanzamt
Krankenkassen
Banken

ohne Fehlertoleranz nochmal zur Verfügung stellt denn bis dahin erkenne ich eine Blockstruktur,
alles andere verwirrt mich noch.

Ich sag mal ich bin im Augenblick auf dem Stand eines engagierten stark lernwilligen Anfängers mit guten Computerkenntnissen der alles gibt um dieses Programm so effizient wie möglich mit kürzester Einarbeitungszeit auszureizen um eine Masse an Arbeit zu bewältigen.

Wenn jetzt diese Funktion der Toleranz für mich als Anfänger kein Blockmuster ergibt das ich in der Lage bin zu erkennen und zu bearbeiten bzw. zu löschen, dann verzichte ich besser auf die Toleranz und bleibe bei der 100%igen Erkennung ohne Toleranz mit den neuen Unterordnern, denn das ist schon wirklich Gut. :smile:

Ich geb mir Mühe alles zu Ausdruck zu bringen und hoffe euch damit auch zu helfen als gutes Beispiel eines Anfängers zu dienen was dem alles so durch den Kopf geht :smile:
Ich denke das ich als Durchschnittsbürger mit hochgesteckten Zielen eine breite Masse der Bevölkerung abdecke die ihr mit dem Programm ansprechen wollt die genau das von eurem Programm erwarten was ich hier gerade mit euch erörtere die eventuell nicht die richtigen Wörter finden oder nicht schaffen die richtigen Fragen zu stellen oder sogar garnicht wissen was sie von dem Programm wollen. Ich steh von Anfang an vor einem Berg von Arbeit und hab mir erst Gedanken über meine Ziele gemacht um eure Zeit nicht sinnlos zu verschwenden, was euch bestimmt auch zu Gute kommt einen kompletten Workflow für jedermann auszuarbeiten bzw. auf diesen Thread hinzuweisen damit sich für andere viele Fragen erübrigen. Denn als Profi sich in einen Anfänger zurückzuversetzen ist bestimmt nicht immer einfach, das musste ich auch schon mehrere male feststellen in meiner Branche man denkt an viel aber eben nicht an alles :smile:

Ich finde bevor man Kritik äußert wie manche das hier tun sollte man erst gucken ob man selber die nötige Kompetenz mitbringt mit so einer Komplexität was dieses Programm bietet umgehen zu können, je mehr ich mich damit beschäftige umso besser find ich es.

Wenn ihr so weiter macht werdet ihr bestimmt noch Marktführer und zum Geheimtip in aller Munde mit eurem Programm, der Kundenservice mit dem Forum ist wirklich Spitze da bin ich fest von überzeugt und ich werd auch für dieses Programm gute Propaganda verbreiten und mich darin engagieren und natürlich versuchen anderen das ans Herz zu legen wenn sie ihr Leben mal auf die Reihe bekommen wollen dieses Programm zu kaufen sofern sie die nötige Hardware besitzen, in meinen Augen ist der Kaufpreis angemessen und weder Überteuert noch zu Billig um jedermann die Möglichkeit zu geben durch diesen mäßigen Lernaufwand die Perfektion anzustreben, sofern die innere Natur des jeweiligen die Perfektion überhaupt anstreben will!

Ich seh das als Kompliment an, Danke dir

Bin kein Programmierer, sorry.

Hier ist eine Smart Rule Version des Skripts. Du musst schauen, dass bereits behandelte Dokumente nicht weiter von der Smart Rule erfasst werden. Das geht z.B. indem die Smart Rule

  • Dokumente die kein Etikett haben sucht
  • zusätzlich zur Aktion Skript ausführen eine Aktion Etikett ändern ausführt.

Auf die Weise kann unterschieden werden was noch behandelt werden muss. Sinnvoller als ein Etikett könnte eine Aktion Verschieben sein. Probiers einfach.

-- Record Namen anhand Tags vergeben

property isPrivate : false -- geschäftlich / privat
property theSeparator : " " -- Trenner in Namen
property thePlaceholder_CustomerID : "%AKTENZEICHENKUNDENNUMMER_"
property thePlaceholder_Subject : "%BETREFF_"
property thePlaceholder_Company : "%FIRMA_"
property thePlaceholder_Name : "%NAME_"
property removeTags : false

-- entferne das # um das Skript mit ausgewählten Records zu testen (also nicht in einer Smart Rule)
-- denk dran wieder das wieder # hinzuzufügen bevor das Skript in einer Smart Rule genutzt wird

#tell application id "DNtp" to my performSmartRule(selection as list)  -- nur zum testen mit ausgewählten Records

on performSmartRule(theRecords)
	tell application id "DNtp"
		try
			repeat with thisRecord in theRecords
				set theTags_CustomerID to (name of parents of thisRecord whose location starts with "/Tags/Aktenzeichen \\/ Kundennummer") -- 1
				set theTags_Subject to (name of parents of thisRecord whose location starts with "/Tags/Betreff") -- 2
				set theTags_Company to (name of parents of thisRecord whose location starts with "/Tags/Firma") -- 3
				set theTags_Name to (name of parents of thisRecord whose location starts with "/Tags/Name") -- 4
				
				if theTags_CustomerID = {} then set theTags_CustomerID to {thePlaceholder_CustomerID}
				if theTags_Subject = {} then set theTags_Subject to {thePlaceholder_Subject}
				if theTags_Name = {} then set theTags_Name to {thePlaceholder_Name}
				
				if isPrivate = false then
					if theTags_Company = {} then
						set theTags_Company to (name of parents of thisRecord whose location starts with "/Tags/Finanzamt") -- Fallback 1
						if theTags_Company = {} then
							set theTags_Company to (name of parents of thisRecord whose location starts with "/Tags/Krankenkasse") -- Fallback 2
							if theTags_Company = {} then
								set theTags_Company to (name of parents of thisRecord whose location starts with "/Tags/Banken") -- Fallback 3
								if theTags_Company = {} then
									set theTags_Company to {thePlaceholder_Company}
								end if
							end if
						end if
					end if
					set newName to my tid(theTags_Company, ";") & theSeparator & my tid(theTags_Name, ";") & theSeparator & my tid(theTags_Subject, ";") & theSeparator & my tid(theTags_CustomerID, ";")
				else
					set newName to my tid(theTags_Name, ";") & theSeparator & my tid(theTags_Subject, ";") & theSeparator & my tid(theTags_CustomerID, ";")
				end if
				set name of thisRecord to newName
				
				if removeTags = true then
					set thisRecord_Tags to tags of thisRecord
					set newTags to my removeItemsFromList(thisRecord_Tags, (theTags_CustomerID & theTags_Subject & theTags_Company & theTags_Name))
					set tags of thisRecord to newTags
				end if
			end repeat
			
		on error error_message number error_number
			if the error_number is not -128 then display alert "DEVONthink" message error_message as warning
			return
		end try
	end tell
end performSmartRule

on tid(theInput, theDelimiter)
	set d to AppleScript's text item delimiters
	set AppleScript's text item delimiters to theDelimiter
	if class of theInput = text then
		set theOutput to text items of theInput
	else if class of theInput = list then
		set theOutput to theInput as text
	end if
	set AppleScript's text item delimiters to d
	return theOutput
end tid

on removeItemsFromList(theList, removeItems)
	set newList to {}
	repeat with thisItem in theList
		set thisItem to thisItem as string
		if thisItem is not in removeItems then
			set end of newList to thisItem
		end if
	end repeat
	return newList
end removeItemsFromList

1 Like