Domino 9 und frühere Versionen > ND9: Entwicklung

PDF/TIF-Attachments extrahieren

<< < (2/2)

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