Domino 9 und frühere Versionen > ND8: Entwicklung

Dateianhänge lösen

(1/2) > >>

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