Nein, es ist gar nicht so kompliziert. Für Kenner von Apple Script ist es sogar ein Witz.
Ich, wie gesagt: kein Kenner, musste eine ganze Weile herumprobieren und bin am längsten daran hängengeblieben, wie man Text in Zahlen umwandelt, damit ich von dem Monatstext und dem Jahrestext im Namen der Datei nötigenfalls 1 abziehen kann. Aus anderen Programmiersprachen kenne ich Umwandlungsfunktionen, Apple Script sieht das ein bisschen anders: Wenn man hinter den Text “10” - 1 schreibt, dann wird der Text automatisch in eine Zahl verwandelt.
Aber ich kann, glaube ich, nun eine Lösung vorlegen.
Schritt 1
Sie müssen das folgende Skript im Skript-Unterordner “Smart Rules” unter einem Namen Ihrer Wahl sichern. Sie gelangen dorthin, indem Sie in DEVONthink in der Menüleiste auf das Skript-Symbol klicken und den Menüpunkt “Open Scripts Folder” bzw. dessen deutsche Übersetzung anklicken. Dort finden Sie auch den Unterordner “Smart Rules”
Erst dann wird das Skript in der Auswahlliste der Smart Rule bei “Execute Script” aufgeführt.
Und hier ist das Skript:
on performSmartRule(theRecords)
tell application id "DNtp"
repeat with theRecord in theRecords
set theName to name of theRecord
if (theName is not "0-00") then
set theYear1 to (characters 1 thru 2 of theName) as string
set theYear2 to (characters 3 thru 4 of theName) as string
set theMonth to (characters 6 thru 7 of theName) as string
set theMonth to theMonth - 1
if (theMonth = 0) then
set theMonth to 12
set theYear2 to theYear2 - 1
if (theYear2 = -1) then
set theYear2 to 99
-- set theYear1 to theYear1 - 1 does not work
set theYear1 to "19"
end if
if (theYear2 < 10) then set theYear2 to "0" & theYear2
end if
if (theMonth < 10) then set theMonth to "0" & theMonth
set theName to theYear1 & theYear2 & "-" & theMonth
else
set theName to "(ohne Datum)" -- no date in the document
end if
set the name of the theRecord to theName
end repeat
end tell
end performSmartRule
Die Codezeile set theYear to (characters 1 thru 4 of theName) as string
ist, denke ich, selbsterklärend. Wenn sich das Jahr und ebenso der Monat im Namen der Datei an anderen Stellen befinden, müssen sie diese abzählen und entsprechend im Skript angeben.
Es gibt eine “Fallback”-Abfrage if (theName is not "0-00")
für Dokumente, in denen sich gar kein Datum befindet. Wenn Sie das Datum in der Smart Rule anders aufbauen, müssen Sie die Abfrage entsprechend ändern. Den dazugehörenden Sonst-Fall else set theName to "(ohne Datum)"
können Sie natürlich ganz nach Belieben anpassen. Wenn Sie gar nichts ausgeben wollen, ändern Sie das Skript zu else set theName to ""
.
Die Zeile if (theMonth < 10) then set theMonth to "0" & theMonth
benötigen Sie nur, wenn Sie bei einstelligen Monaten eine führende Null im Namen haben wollen. Die ist nämlich bei der Umwandlung des Textes in eine Zahl zwischenzeitlich verlorengegangen.
Schritt 2 – Die Smart Rule

Die Regel benennt zuerst ein PDF-Dokument um in Jahr des neuesten Datums im Dokument[Bindestrich]Monat des neuesten Datums im Dokument
. Also zum Beispiel in 2020-5. Das Datum kann man natürlich auch anders darstellen, muss dann aber entsprechend das Skript aus Schritt 2 anpassen.
Die Regel ruft danach das Skript mit Execute Script auf.
Ebenfalls wird man vermutlich noch etwas hinzufügen wollen, sodass man zum Beispiel Rechnung Vodafone 2020-5 erhält. Eine Möglichkeit ist, diesen Zusatz als dritten Schritt der Regel einzufügen mit einer Umbenennung in Rechnung Vodafone Name
.
Anmerkung: Sollten Sie in dieser Smart Rule Elemente sehen, die Sie nicht einfügen können, so liegt das sehr wahrscheinlich nicht an Ihnen, sondern daran, dass ich mit einer Beta von DEVONthink 3.1 arbeite, die viele, viele neue Funktionen für die Smart Rules enthält!