Domino 9 und frühere Versionen > ND8: Entwicklung
Dateianhänge lösen
Hedwig14:
Hallo !
ich habe ein kleines Problem.
Ich möchte per Script bei ca 200 Documenten die Dateianhänge lösen.
Nun werden die Anhänge aber nicht im Richtext-Feld "Body" gespeichert sondern in "$File". Daher passt mein Script leider nicht ! Wie muss ich das Scipt jetzt umschreiben ???
While Not(doc Is Nothing)
'Set rtitem = doc.GetFirstItem( "Body" )
Set rtitem = doc.GetFirstItem( "$FILE" )
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
datei = o.name
fileCount = fileCount + 1
Call o.ExtractFile ( pfad + datei)
'Call o.Remove
'Call doc.Save( True, True )
End If
End Forall
End If
Call session.UpdateProcessedDoc( doc )
Set doc = collection.GetNextDocument(doc)
Wend
Tode:
Attachments sind immer in "$File"... die Frage ist: Wie kommen sie dahin... Meist sind sie in einerm Richtextfeld angehängt, dann ist Dein Code mit set rtitem = doc.GetFirstItem( "Body" ) korrekt...
Manchmal sind Attachments aber auch direct ans Dokument gehängt, dann musst Du googeln, weil man an solche Attachments leider nicht über NotesDocument.EmbeddedObjects rankommt (Auszug aus der Designer- Hilfe: "Unlike the EmbeddedObjects property in NotesRichTextItem, this property does not include file attachments, nor OLE/1 objects created in Notes Release 3")..
Manchmal sind Attachments auch als MIME- Element im Dokument drin, dann braucht man wieder anderen Code (gilt für Mails, die aus dem Internet gekommen sind).
Das "sauber" zu handeln erfordert jede Menge Know How... Vielleicht findest Du ja was fertiges, oder einer hier im Forum hat was, aber üblicherweise sind solch komplexe Anforderungen das Kapital, aus dem Dienstleister (ich auch) Ihren Profit ziehen, deshalb kann es durchaus sein, dass Du nichts "für Ummme" findest...
Viel Glück
Mitch:
Wie Torsten gesagt hat: Erstmal gucken ob die nicht in einem anderen Feld hängen. Oder direkt am Dokument (doc.EmbeddedObjects).
Im Notfall könntest du auch mit doc.GetAttachment arbeiten, in der Art von:
--- Code: --- Forall item In doc.Items
If item.Name = "$FILE" Then
Set obj = doc.GetAttachment(item.Values(0))
Call obj.ExtractFile("C:\Temp\" & obj.Source)
Call obj.Remove
End If
End Forall
Call doc.Save(True, False)
--- Ende Code ---
Damit kommt man auch an Attachments dran, die weder in einem Item noch unter doc.EmbeddedObjects hängen (allerdings haben die dann meistens keinen schönen Dateinamen).
Gruß,
Mitch
koehlerbv:
--- Zitat von: Mitch am 15.07.11 - 16:35:17 ---... ob die nicht in einem anderen Feld hängen.
--- Ende Zitat ---
Mitch - Feld ist hier falsch und völlig uninteressant und etwas ganz anderes: Es geht um Items. Ein himmelweiter Unterschied ...
Bernhard
Mitch:
Hast Recht, ich weiß es ja eigentlich auch:
--- Zitat von: Mitch am 15.07.11 - 16:35:17 ---Damit kommt man auch an Attachments dran, die weder in einem Item noch unter doc.EmbeddedObjects hängen (allerdings haben die dann meistens keinen schönen Dateinamen).
--- Ende Zitat ---
Schlechte Angewohnheit... :)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln