Datumsstring aus Dokument wird nicht als Datum akzeptiert

Hallo,

ich hatte mir mal ein AppleScript erstellt, mit dem das Erstellungsdatum auf ein selektiertes Datum im Dokument gesetzt wird.

Nun hatte ich mal wieder angefangen meine Dokumente zu ordnen und mir war aufgefallen, dass nicht immer das Datum auf das selektierte Datum gesetzt wird. Zuerst hatte ich eine fehlerhafte OCR Erkennung in Verdacht. Dann viel mir aber auf, das der Fehler nur auftrat, wenn der Monatsname ausgeschrieben war und der Monat März war.

Im Script trat dann der Fehler “Datum und Uhrzeit sind ungültig” (-30720) auf.

Ich hatte dann geprüft, ob ich das gleiche Datum setzen kann, wenn ich es als String Konstante im Script definiere, was dann auch funktionierte.

Im Moment bin ich etwas ratlos, warum der Datumsstring aus den Dokument nicht akzeptiert wird, wenn ich den String im Script definieren, dann aber ja.

Ich habe mal ein kleines Script erstellt, mit dem der Fehler reproduziert werden kann.

================ Start Script ======================
set d1 to get_date_string()
log “d1=”" & d1 & “”"
get class of d1
log the result

set d2 to “1. März 2011”
log “d2=”" & d2 & “”"
get class of d2
log the result

if d1 = d2 then
log “d1=d2 ist identisch”
else
log “d1=d2 ist ungleich”
end if

try
set theDate to date d1
log "theDate=d1 => " & theDate
on error errorMessage number errorNumber
log "ERROR set Date to d1: " & errorMessage & “(” & errorNumber & “)”
end try

try
set theDate to date d2
log “theDate=d2 =>” & theDate
on error
log "ERROR set Date to d2: " & errorMessage & “(” & errorNumber & “)”
end try

on get_date_string()
tell application “DEVONthink Pro”
try
if not (exists think window 1) then error “No window is open.”
if not (exists content record) then error “Please open a document.”
return selected text of think window 1 as string
on error error_message number error_number
if the error_number is not -128 then display alert “DEVONthink Pro” message error_message as warning
end try
end tell
end get_date_string
================ Ende Script ======================

d1 enthält das Datum aus dem Dokument. d2 ist das identische Datum als String im Script definiert.

Hier noch kurz der Output (Script Editor unter Nachrichten) mit einer Erläuterung.

1: (d1=“1. März 2011”)
2: (text)
3: (d2=“1. März 2011”)
4: (text)
5: (d1=d2 ist identisch)
6: (ERROR set Date to d1: Datum und Uhrzeit sind ungültig: date 1. März 2011.(-30720))
7: (theDate=d2 =>Dienstag, 1. März 2011 um 00:00:00)

1: Datumsstring der aus dem Dokument gelesen wurde
2: Klasse der Variablen d1
3: Datumsstrang aus dem Script
4: Klasse der Variablen d2
5: Ergebnis des Stringvergleiches
6: Fehler, weil d1 nicht in ein Datum gewandelt werden konnte
7: d2 wurde in ein Datum gewandelt

Kann jemand diesen Fehler reproduzieren und kennt die Lösung, warum der String aus dem Dokument nicht als gültiges Datum akzeptiert wird?

Danke,
Roadrunner1106

Kleine Zusatzinfo noch dazu.

Erzeuge ich ein neues Dokument als Reinen Text oder RTF-Text, dann wird das Datum daraus korrekt übernommen und gesetzt.

Gebe ich das Datum in TextEdit ein und drucke das Dokument als PDF nach DEVONthink, dann tritt dort auch der Fehler auf.

Eventuell ist bei PDF-Dokumenten die interne Kodierung der Umlaute anders und AppleScript kommt zwar bei Vergleichen, nicht jedoch beim Datum damit klar. Mit einem Workaround klappt’s aber:


set d1 to my replaceText(d1, "ä", "ä")

on replaceText(theString, find, replace)
	if theString contains find then
		local od
		set od to text item delimiters of AppleScript
		set text item delimiters of AppleScript to find
		set theString to text items of theString
		
		set text item delimiters of AppleScript to replace
		set theString to "" & theString
		set text item delimiters of AppleScript to od
	end if
	return theString
end replaceText

Danke, der Workaround mit der Ersetzung funktioniert (warum auch immer).

Ich hatte auch schon mal die Charaktercodes für beide Strings verglichen, die waren aber identisch.

Hallo Roadrunner1106,

könntest Du das funktionierende Skript hier posten?

Dank vorab und Gruß
Franz-Josef

Habe das Script in meinem Blog aktualisiert.

Du findest es hier: macblogbyroadrunner.blogspot.com … k-pro.html