Domino 9 und frühere Versionen > ND9: Entwicklung
PDF/TIF-Attachments extrahieren
typeOneg:
Und wieder mal hat sich gezeigt, wie cool die Notes-Community ist. Vielen Dank für Eure Inputs und ganz speziell an Peter, der für den "Feinschliff" gesorgt hat.
Schöne Grüße aus dem Salzburger Land.
Hans
--- Zitat ---falls es wen interessiert, hier das fertige Script:
Option Public
Sub Initialize
'Changes
' 06-02-04 (TK)
' o check file: filename uppercase; save file as uppercase and compare with uppercase
server$ = "server/domain"
pathName$ = "\\server\share\verzeichnis\"
Dim subj As Variant
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc, reply, doc2 As NotesDocument
Dim embObj As NotesEmbeddedObject
Dim clog As New NotesLog("Rechnung eingegangen")
Dim rtitem As NotesRichTextItem
Call clog.OpenNotesLog(server$, "mailin/mailinlog.nsf")
Set db = session.currentDatabase
Set dc = db.Search ({@IsAvailable ($FILE) & @Text (FlagBearbeitet) = ""}, Nothing, 0)
Set doc = dc.GetFirstDocument
Do While Not doc Is Nothing
Set rtitem = doc.GetFirstItem ("Body")
nr = 1
If IsArray (rtitem.EmbeddedObjects) Then
ForAll obj In rtitem.EmbeddedObjects
Select Case LCase (StrRightBack (obj.Source, ".")) 'StrRightBACK ist wichtig, denn es gibt ja Dateinamen wie "Rechnung31.12.2012.tiff"
Case "pdf", "tif", "tiff"
'check, if attachment exists on file system
pattern$ = pathName$ + UCase(obj.Source) '-> obj.Source anstelle von subj (0)
fileName$ = Dir$(pattern$, 0)
If fileName$ = "" Then
found=False
Else
found = True
End If
If Not(found) Then
Call obj.ExtractFile(pathName$ & CStr(Nr) & CStr(ext))
Call clog.LogAction( "[" + CStr(nr) + "] File " + obj.Source + " (" + UCase(obj.Source) + ") " + " saved in " + pathName$ + " on server " + server$)
doc.FlagBearbeitet = Now
saved = True
Else
Call clog.LogAction( "[" + CStr(nr) + "] File " + obj.Source + " (" + UCase(obj.Source) + ") " + " exists in " + pathName$ + " on server " + server$)
saved = False
End If
End Select
nr = nr + 1
End ForAll
End If
If CStr (doc.FlagBearbeitet (0)) <> "" Then
Call doc.Save (True, True)
End If
Set doc = dc.GetNextDocument (doc)
Loop
'Call clog.close
End Sub
--- Ende Zitat ---
Peter Klett:
--- Zitat von: typeOneg am 18.09.13 - 15:12:13 ---Und wieder mal hat sich gezeigt, wie cool die Notes-Community ist. Vielen Dank für Eure Inputs und ganz speziell an Peter, der für den "Feinschliff" gesorgt hat.
--- Ende Zitat ---
Naja, eher "grob gehobelt" ... ;)
Enthält eine Mail mehrere zu speichernde Anhänge, und eine davon kann nicht abgelegt werden, weil die schon auf der Platte liegt, wird die Mail dennoch als bearbeitet gekennzeichnet und nie wieder angefasst.
Das funktioniert nur, wenn sichergestellt ist, dass vom Absender niemals verschiedene Dateien mit gleichem Dateinamen gesendet werden.
In Deinem Umfeld mag das funktionieren, wenn die Mails aus einem Prozess kommen, der eindeutige Dateinamen vergibt, für alle anderen, die glauben dieses Script so einsetzen zu können, sei dieser Hinweis unbedingt zu beachten.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln