BEDINGTE Freigabe der macOS Version Sequoia für tomedo®
Alle Hinweise und Informationen finden Sie unter folgendem Link.

Gibt es in Tomedo ein Kommando, dass ein Datum als Zahl interpretiert? Damit könnte man über die Bedingung größer oder kleiner gleich, Aktionsketten auslösen, wenn ein bestimmter Zahlenwert unter- oder überschritten wird.

Man kann die Anzahl der Tage seit einem Referenzdatum (z. B. 01.01.1970, das sogenannte Unix-Epoch-Datum) berechnen. Ich möcht mir nicht über ein Regex kommando und ein Script das Datum aus einem Karteieintrag berechnen müssen. Ich schätze, dass es in Tomedo diese Funktion bereits gibt, ich die nur nicht gefunden habe.

Gefragt in Frage von (36.5k Punkte)
Bearbeitet von
0 Punkte

2 Antworten

Hallo Christian,

wenn ich Deine Frage richtig verstehe, möchtest Du verschiedene Daten entweder in einem CKE oder in AK-Bedingungen vergleichen, um dadurch AK zu steuern. Das geht eigentlich mit den normalen Funktionen, oder?

Für AK-Bedingungen kannst Du das Datum aus einer CKE-Variable so auslesen (wichtig ist der Zusatz dd.MM.yyyy, sonst kann das Datum nicht verglichen werden):

Beantwortet von (7.1k Punkte)
0 Punkte

Lieber Hans Jörg,

ich möchte nicht den Wert aus einem CKE auslesen oder dort ein Datum festlegen, sondern eine Aktionskette dann starten, wenn ein bestimmtes Datum in Bezug auf das Referenzdatum erreicht ist.

In Bezug auf das unix epoch datum  erhält man für das Datum 23.10.2023 die fortlaufende Zahl 19632 (die Anzahl der Tage seit dem 01.01.1970).

Das ist ganz schön kniffelig. Auch für diese Frage wäre eine Tomedo-Global-Variable, die man befüllen und abfragen kann hilfreich oder natürlich eine Rechenfunktion wie 01.01.1970+X in den AK-Bedingungen. Da es das nicht gibt, habe ich eine AppleScript-Bastellösung gebaut, die eine Aktionskette starten kann, wenn ein Datum (berechnet in der Form 01.01.1970 plus eine Anzahl von Tagen, im Beispiel 19632, also 23.10.2023) erreicht ist (gesuchtes Datum < Systemdatum). Es funktioniert so, dass in der (z.B. bei Öffnen der Kartei startenden AK) für den Datumsvergleich mittels geskripteter Tastatureingaben das Karteidatum auf das gesuchte Datum gesetzt wird. Dann wird per AK-Bedingung geprüft, ob $[d K]$ < $[d]$ und falls ja eine AK (in Warteposition 1) gestartet wird. Zuletzt wird in der AK noch das Karteidatum wieder auf das Systemdatum gesetzt. Danach wird die gewünschte AK ausgelöst.  

-- Funktion zum Berechnen des Datums
on calculateDate(daysToAdd)
    set epochDate to current date
    set year of epochDate to 1970
    set month of epochDate to 1
    set day of epochDate to 1
    set time of epochDate to 0 -- Mitternacht
    
    -- Berechne das Ziel-Datum durch Addition der Tage
    set targetDate to epochDate + (daysToAdd * days)
    
    -- Extrahiere Tag, Monat, und Jahr aus dem Ziel-Datum
    set calculatedDay to day of targetDate as string
    set calculatedMonth to month of targetDate as integer -- Um den Monat als Zahl zu bekommen
    set calculatedYear to year of targetDate as string
    
    return {calculatedDay, calculatedMonth, calculatedYear}
end calculateDate

-- Beispiel: Berechne Datum durch Addition von 19362 Tagen zum 01.01.1970
set resultDate to calculateDate(19362)
set calculatedDay to item 1 of resultDate
set calculatedMonth to item 2 of resultDate
set calculatedYear to item 3 of resultDate

-- Simuliere die Tastatureingaben
tell application "System Events"
    -- Cmd-L und Cmd-K simulieren
    keystroke "l" using command down
    delay 0.2
    keystroke "k" using command down
    delay 0.2
    
    -- Dreimal Shift-Tab simulieren
    key down shift
    repeat 3 times
        keystroke tab
        delay 0.2
    end repeat
    key up shift
    
    -- Tag eingeben und Tab drücken
    keystroke calculatedDay
    delay 0.2
    keystroke tab
    
    -- Monat eingeben und Tab drücken
    keystroke calculatedMonth
    delay 0.2
    keystroke tab
    
    -- Jahr eingeben und Tab drücken
    keystroke calculatedYear
    delay 0.2
    keystroke tab
    
    -- Return drücken
    keystroke return
end tell

Je nachdem, woher die Information des zeitlichen Versatzes (also der Faktor +19632 im Beispiel) kommt, kann man das im Skript ablegen oder im Skript abfragen (display dialog). 

im Rahmen von Aktionskettenbedingungen können Daten im Format dd.mm.yyyy numerisch korrekt verglichen werden.

Das geht nicht schon immer, aber schon länger. Das hat Dr. Thierfelder mal nachgerüstet.
Beantwortet von (28.1k Punkte)
0 Punkte
Moin, Herr Tenzer. Das war ja neulich mal im Forum (hatte mir Schwierigkeiten gemacht), hatte ich in meiner ersten Antwort (s. Photo) ja auch so vorgeschlagen. Das vorliegende Problem war aber ja die Notwendigkeit eines Rechenschrittes (Addition) mit einem Datum außerhalb eines CKE. Daher die Berechnung in einem AppleScript mit getrickstem Rückschrieb.
da hab ich tatsächlich nicht gut genug gelesen, sorry ;-)

 

Aus meiner Sicht sollte das aber im Rahmen von Aktionskettenbedingungen auch ohne Tricks gehen.

 

@ Christian, kannst du das Beispiel nochmal konkretisieren?
Eine Aktionskette soll automatisch starten allerdings nur bis zu einem bestimmten Datum, sozusagen fest eingebautes Verfalldaum für bestimmte Aktionsketten. Genau so könnte man andere ketten erst ab einem bestimmten Stichtag ausführen. Der Umweg über Voreinstellungen in CKE, die dann ausgelesen weren halte ich für zu umständlich.
ich brauche ein noch konkreteres Beispiel ;-)

 

Meinst du, wenn Systemdatum kleiner gleich  zum Beispiel 24.11.2024 (festes Beispiel-Datum) ist, soll sie AK auslösen?

Sowas sollte bereits direkt in den AK-Bedingungen möglich sein, da diese Daten als auswertbare Zahl von Tomedo interpretiert werden.
Das wäre dann doch wirklich einfacht: AK-Bedingung $[d]$ ist größer als und dann einfach das gewünschte Datum eintragen. Das funktioniert.

Ich dachte, dass Du das Datum erst irgendwie zum Zeitpunkt der Abfrage erzeugen willst, daher der mühsame Umweg...
Es funktioniert leider nicht. Für meine Anwendung benötige ich eine absolute Zahl, die sich aus dem referenzdatum ergibt.

Irgendwo habe ich das auch mal gesehen, da rechnet Tomedo sogar in Sekunden ab dem Referenzdatum.
In wiefern funktioniert es nicht?

Welches Format hat dein Referenzdatum?
Wenn ich mein Referenzdatum als Vorbefüllung in einen CKE eintrage, hat es folgendes Format dd.mm.yyyy HH:mm. Es zeigt immer auch die Uhrzeit mit an,  also z.B. 30.10.2024 00:00

Das Kommando $[d]$ wirft das Ergebnis mm.yyyy aus, für heute also 24.10.2024

Wenn ich da den größer kleiner Vergleich anstelle, funktioniert es nicht. Ich habe bisher nicht herausfinden können, wie man das gleiche Format wie im Karteieintrag ausdrücken kann, nur so könnte man es vergleichen.
dann nimm doch $[d S dd.MM.yyyy_HH.mm]$
Das funktioniert.

Ich hatte das Kommando falsch geschrieben: $[d dd.MM.yyyy HH.mm]$
18,373 Beiträge
26,637 Antworten
47,760 Kommentare
28,982 Nutzer