Wenn das newest document date vorhanden ist, stelle es in “sortierbarer” Form vor den Namen
Sonst versuche dasselbe mit dem document date
Wenn es das auch nicht gibt, mach es mit dem addition date
Das heißt, man hat am Ende immer einen Namen der Form “yyyy-mm-dd blafasel”. Das Datum ist quasi das “beste mögliche”, also in absteigender Präferenz das neueste aus der Datei, irgendeins aus der Datei und das Hinzufügedatum.
Aber vielleicht habe ich den OP auch flasch verstanden. Warum es nun zu viel sein soll, das Script zu benutzen, verstehe ich leider auch nicht.
PS
Da hast Du den OP m.E. flasch verstanden (bzw. den Zusammenhang nicht gesehen). Mit “Name” meinte er in diesem Fall den Namen des Datensatzes nach dem Umbenennen in sortable newest document date&name. D.h. Er wollte erst eine Smart Rule den neuen Namen bestimmen lassen und für den Fall dass dieser neue Name kein Datum enthält (weil es eben kein newest document date gibt), das Hinzfügedatum verwenden. Sowas wie ein if … else in einer Smart Rule.
Sorry für die Späte Rückmeldung. War ne weile off.
Genauso sollte es sein. Name erstmal egal. Datum wenn nicht aus dem Dokument dann das neuste das mir zur Verfügung steht. Also am besten das Hinzufügedatum. Hatte nicht raus gelesen ob das Script nun schon funktioniert.
Ob es ein Wiki gibt, kann ich dir nicht sagen. Aber ein Skript bettest du in eine intelligente Regel ein, indem du als Aktion Skript ausführen > Eingebettet > Skript bearbeiten wählst. Sobald du auf “Skript bearbeiten” tippst, öffnet sich ein Fenster. Das darin enthaltene Basisskript
on performSmartRule(theRecords)
tell application id "DNtp"
repeat with theRecord in theRecords
end repeat
end tell
end performSmartRule
überschreibst du einfach mit dem Skript, das Pete zur Verfügung gestellt hat. Auf welche Dokumente das Skript angewandt wird bestimmst du mit den Bedingungen der intelligenten Regel.
Wie immer gilt: erst ein paar mal ausprobieren, idealerweise mit eher engen Bedingungen; so kannst du frühzeitig feststellen, ob das Skript das macht, was du willst. Die durch das Skript vorgenommenen Änderungen lassen sich nur manuell rückgängig machen. Sei dir vor allem sicher, dass du das Skript nur auf die Inbox, und z.B. nur nach Import einer Datei anwendest; es ist keine Sicherheit in das Skript eingebaut, d.h. lässt du das Skript mehrfach laufen, so wird der Dateiname jedes mal wieder um ein Datum ergänzt (du kannst dir also vorstellen, was passiert, wenn du anstatt “Inbox” und “Datei ist PDF” “Datenbanken” und “alle Dokumentenarten” wählst, und dein Skript laufen lässt… @pete31@chrillek mit set thisCheck to texts 1 thru 10 of theName könnte man die ersten 10 Zeichen des Dateinamens erfassen - wie könnte man dann am einfachsten prüfen, ob es sich dabei um ein (vorab durch Petes Skript vorgehängtes) Datum handelt, um eine entsprechende dann lass die Datei in Ruhe-Schleife einzubauen?
Man könnte das in AppleScript mit einem regulären Ausdruck machen (man könnte es in AppleScript auch anders machen, aber darüber kann ich nicht nachdenken, ohne Kopfschmerzen und Ausschlag zu bekommen). @pete21 hat mal etwas über Reguläre Ausdrücke in ObjCAppleScript im Forum geschrieben, aber ich finde es gerade nicht wieder. Muss in einem Thread gewesen sein, den @rufus123 begonnen hatte.
Ergänzung: hier
steht was dazu (und es ist auch kopfschmerzträchtig)
und hier ist der Post von @pete31, den ich meinte. Da muss man dann nur den regulären Ausdruck ein bisschen anpassen, etwa so
"\\d{4}-\\d\\d-\\d\\d"
Aka “vier Ziffern, Bindestrich, zwei Ziffern, Bindestrich, zwei Ziffern”. Unter der Annahme, dass Bindestrich der Trenner hier ist.
Das würde aber jede 4-stellige Zahl am Anfang des Namens erfassen, oder? Will sagen, es gäbe keine Prüfung, ob es sich tatsächlich um ein Datum handelt?
try
set thisDate to my convertDate(thisCheck)
on error
--do the rest of the script
end try
on convertDate(thisCheck)
return date thisCheck
end convertDate
funktioniert; allerdings kann diese on-Schleife nicht eingebettet werden (bzw. bei DT 3,5 funktionierte das nicht)
Du hast hier 3 Ansätze erhalten, wie du in Petes Skript eine Sicherheitsschleife einbauen könntest, damit Dateinamen die bereits durch das Skript geändert worden sind keine erneute Änderung erfahren können. Wenn du Lust hast, dann ist das ein guter Ansatz um das Skript besser zu verstehen; wenn du versuchen magst, selbst eine solche Schleife einzubauen, kannst du gern das Ergebnis posten oder gezielt nach Hilfe fragen.
Nee, die züchte ich selbst.
Tatsächlich funktioniert JS nicht in smart rules. Sonst würde ich etwa
records.for each(r => {
let name = r.name();
if (!/^\d{4}-\d\d-\d\d/.test(name)) {
....
}
})
vorschlagen. Im if dann die jeweiligen Daten auf ! undefined abfragen und gut ist.
Bzw gut wäre, könnte man in smart rules JS benutzen. Schon 'n bisschen schade, Hazel und Drafts zb verarbeiten gerade zu gerne Javascript.
Damit hab ich jetzt nen Problem. Also die Umbenennung ist gelaufen aber kein Datu im Dateinamen…
Wie heißt den jetzt die Bedingung dazu? “enthält nicht Datum” gibt’s ja nicht…
Mir fehlt also der Einstieg in die Regel um das Script dann einbinden zu können.
Da taucht das Script, mit dem Du angibst ein Problem zu haben, nicht auf. Wie man ein Script in eine Intelligente Regel einbindet, steht in der Dokumentation.
Danke euch vielmals. Bisher funktioniert das Script einwandfrei, Ich werde einige Tage testen und mich sicher nach den Feiertagen wieder etwas tiefer mit der Materie befassen.