Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Software
>
Applescript: date und text item delimiters
Applescript: date und text item delimiters
gbkom
16.06.22
08:50
Hallo liebe Applescripter,
ich hab' gerade ein Brett vorm Kopp:
Für eine Regel in Apple Mail habe ich ein Applescript, das die Betreffzeile der Mail zerlegt und daraus eine Erinnerung erstellt.
Im Editor läuft die Routine problemlos. Sobald das Script von Mail aufgerufen wird, ist die date Berechnung fehlerhaft und das Script wird abgebrochen. Leider finde ich nirgends eine Fehlermeldung.
Als Ursache habe ich nach viel Probieren die AppleScript's text item delimiters gefunden. Sobald ich die verändere, funktioniert "date" nicht mehr. Im Script habe ich sie in "savedDelimiters" gesichert und stelle sie auch wieder her, trotzdem tritt der Fehler auf. Und wie gesagt, nur wenn der Aufruf über Mail erfolgt -- im Editor läuft alles fehlerfrei.
Wo ist mein Denkfehler, oder ist das ein Bug in AS?
Danke!
BG.gb
using terms from application "Mail"
on perform mail action with messages these_messages for rule this_rule
tell application "Mail"
set the message_count to the count of these_messages
repeat with i from 1 to the message_count
set this_message to item i of these_messages
if read status of this_message is false then
set my_subject to subject of this_message
-- Das sind Beispieltexte für my_subject:
-- Abfuhr schwarze Restmülltonne am 15.06.2022 ab 6 Uhr
-- Abfuhr blaue Papiertonne am 10.06.2022 ab 6 Uhr
-- Abfuhr grüne Biotonne am 08.06.2022 ab 6 Uhr
-- dies ist eine Krücke, nicht was ich möchte. (Hiermit erstell ich ein date vom aktuellen Datum um 18.00 Uhr)
set my_date to current date
set null_time to time of my_date
set my_new_datum to my_date - null_time + 64800
-- Hier funktioniert die date Berechnung einwandfrei
set savedDelimiters to AppleScript's text item delimiters
-- Betreff der Mail zerlegen in "Abfuhr" und Datum
set AppleScript's text item delimiters to {" am "}
set my_text to first text item of my_subject
set my_datum to last text item of my_subject
set AppleScript's text item delimiters to {" ab "}
set my_datum to first text item of my_datum
set AppleScript's text item delimiters to {"."}
set my_tag to the first text item of my_datum
set my_monat to the second text item of my_datum
set my_jahr to the last text item of my_datum
set AppleScript's text item delimiters to savedDelimiters
set my_datum to my_tag & "/" & my_monat & "/" & my_jahr
-- my_datum ist jetzt zB. "15/06/2022"
set my_new_datum to date my_datum
-- hier bricht das Script ab
tell application "Reminders"
set newremin to make new reminder
set name of newremin to my_text
set remind me date of newremin to my_new_datum
end tell
set the read status of this_message to true
end if
end repeat
end tell
end perform mail action with messages
end using terms from
Hilfreich?
0
Kommentare
udrabo
16.06.22
18:34
Die Reihenfolge im Datum stimmt nicht: Das muss
Monat / Tag / Jahr
sein. Die amerikanische Schreibweise wird hier erwartet.
Die Zeile muss also heißen:
set my_datum to my_monat & "/" & my_tag & "/" & my_jahr
__
Ergänzung: Wenn’s im Editor funktioniert hat, dann weil Du zum Testen ein Datum verwendet hast, welches zufällig in das Schema passt: wie z. B. 12/06/2022.
Hilfreich?
+1
mactelge
16.06.22
19:43
Alternativ könnte man auch den Abfallkalender, vorn mit dem ersten, hinten mit dem zweiten Halbjahr der Abfuhrtermine bedruckt, welchen die Gemeinde am Anfang des Mülljahres in den Briefkasten steckt, verwenden.
Hoffentlich kann das Problem noch vor dem nächsten Abfuhrtermin gelöst werden!
„Dreh´dich um – bleib´wie du bist – dann hast du Rückenwind im Gesicht!“
Hilfreich?
0
gbkom
17.06.22
08:38
@udrabo
Leider nicht, es wird die Systemeinstellung benutzt (womit solche Scripts nicht überall anwendbar sind):
set my_datum to "20/10/2022"
set my_new_datum to (date my_datum)
display dialog ("Datum: " & my_datum & return & "NewDatum: " & my_new_datum)
ergibt
Datum: 20/10/2022
NewDatum: Donnerstag, 20. Oktober 2022 um 00:00:00
@macteige
Danke für den großartigen Tip!
Hilfreich?
0
marm
17.06.22
09:02
Kannst du nicht mit dem Script die Betreffzeile abrufen und an Kurzbefehle weiterreichen und verarbeiten?
Hilfreich?
0
gbkom
17.06.22
09:06
@marm
Ja, an Kurzbefehle hatte ich auch schon gedacht -- aber mich nervt einfach, dass es im Editor funktioniert und über Mail nicht. Ehrgeiz und so...
Hilfreich?
0
ttwm
17.06.22
11:22
date "15/06/2022" funktioniert in dem Fall nicht. Das würde nur gehen, wenn es bei der Übersetzung schon so da stehen würde - dann wird es nämlich automatisch in den korrekten String umgewandelt.
Warum nimmst Du nicht den Ansatz aus der Krücke her und machst das gleiche weiter unten?
Also statt:
set my_datum to my_tag & "/" & my_monat & "/" & my_jahr
set my_new_datum to date my_datum
dann
set my_Datum to current date
set the day of my_Datum to my_tag
set the month of my_Datum to my_monat
set the year of my_Datum to my_jahr
set the time of my_Datum to 0
Hilfreich?
+1
Michael Schmidt
17.06.22
11:22
Hi, hast du schon
set my_datum to (my_tag & "/" & my_monat & "/" & my_jahr) as text
probiert? Nicht, dass er eine Liste daraus macht...
LG
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
Hilfreich?
0
gbkom
17.06.22
15:24
@ttwm
Toll! Das funktioniert! Danke!
Schade, dass
date
nicht das tut, was im AppleScript Language Guide steht:
date "7/16/70"
--result: date "Wednesday, July 16, 2070 12:00:00 AM"
@Michael Schmidt
ja, alle Variationen ausprobiert -- es funktioniert nur im Editor. Weder in Mail noch in Erinnerungen funktioniert
date
.
Hilfreich?
0
MikeMuc
17.06.22
17:30
gbkom
Es könnte sein, das du bei „date“ explizit „System events“oder ähnlich ansprechen muß. Bin am iPad, kann daher grad nicht genau sagen „wer da genau“ zuständig ist. wenn Mail den Befehl „durchreichen“ muß, weil es ihn nicht selber kennt, gibt es im Scripteditor ein anders Verhalten als in dem Fall, wo das Script im reinen Kontext einer Anwendung wie Mail läuft.
Hilfreich?
0
ttwm
17.06.22
18:18
gbkom
Schade, dass
date
nicht das tut, was im AppleScript Language Guide steht:
date "7/16/70"
--result: date "Wednesday, July 16, 2070 12:00:00 AM"
Doch, es tut leider genau das, was im Guide steht (es ist nur nicht auf den ersten Blick ersichtlich bzw. verständlich formuliert):
The following expressions show some options for specifying a date, along with the results of compiling the statements.
Letzter Teil (along with …) bringt leider unverständlich zum Ausdruck, das dein Code nur beim erstmaligen Übersetzen (und nicht variabel während der Laufzeit) korrekt angepasst/übersetzt wird. Aus dem Grund ranken sich um date allerlei Lösungen (und Hass-Lieben), viele greifen dann sogar auf Terminal-Scripts zurück…
Hilfreich?
+1
gbkom
17.06.22
18:36
Beim Terminal war ich auch schon angekommen...
Aber die zitierte "Erklärung" muss man wirklich mehrfach lesen und dann interpretieren.
Danke noch Mal!
Hilfreich?
0
ttwm
17.06.22
18:44
Gerne doch
Hilfreich?
0
ttwm
18.06.22
14:53
udrabo
Die Reihenfolge im Datum stimmt nicht: Das muss
Monat / Tag / Jahr
sein. Die amerikanische Schreibweise wird hier erwartet.
Das ist leider falsch und auch keine Daumen hoch wert.
Hilfreich?
0
ttwm
18.06.22
14:57
mactelge
Alternativ könnte man auch den Abfallkalender, vorn mit dem ersten, hinten mit dem zweiten Halbjahr der Abfuhrtermine bedruckt, welchen die Gemeinde am Anfang des Mülljahres in den Briefkasten steckt, verwenden.
Hoffentlich kann das Problem noch vor dem nächsten Abfuhrtermin gelöst werden!
Abgesehen davon, dass es die gedruckte Version zum Bleistift bei uns nicht mehr gibt – wie teilst du uns dann mit, dass sich die Termine übers Jahr mal wieder ändern (was bei uns wegen Ferien – die sind ja nicht vorher bekannt… –, Feiern oder Baustellen ca. 15x im Jahr ist).
Hilfreich?
0
udrabo
18.06.22
15:29
ttwm
udrabo
Die Reihenfolge im Datum stimmt nicht: Das muss
Monat / Tag / Jahr
sein. Die amerikanische Schreibweise wird hier erwartet.
Das ist leider falsch und auch keine Daumen hoch wert.
Ich habe inzwischen auch bemerkt, dass ich mich geirrt hatte – und vermutlich jeder andere auch, der den Thread gelesen hat. Aber danke für den verdeutlichenden Hinweis.
Ich hatte mich von der Schreibweise mit „/“ irritieren lassen.
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Vor 30 Jahren: Apple holt Sanierer – kann das s...
10 Jahre Yosemite-Design
Sonos-Qualitätsmisere: Viele Maßnahmen, damit "...
Gegenüberstellung: AirPods 4 vs. AirPods Pro 2
Daten zum Mac mini M4: Aufpreise, Spezifikation...
Test Cambridge P100
Update-Abend: macOS 15.1.1, iOS 18.1.1, iPadOS ...
Vor 10 Jahren: Das iPhone 6 und "Bendgate"