Das Notes Forum

HCL Notes / Domino / Diverses => Entwicklung => Thema gestartet von: schroederk am 04.03.22 - 14:21:24

Titel: Zugriff nur auf selektiertes Attachment?
Beitrag von: schroederk am 04.03.22 - 14:21:24
Hallo,

kann ich ermitteln, welche(s) Attachment(s) der Anwender selektiert hat?
Am liebsten wäre mir, wenn ich meinen Agenten auch in das Kontextmenü beim Rechtsklick auf das Attachment einbauen könnte.

Mit folgendem Code bekomme ich ja alle(?) Attachments aus dem Body (und die wohl mehrfach, da ich bei einer Mail mit 20 Attachments ca. 200 Mal die Messagebox bestätigen durfte.)
Code
	Set db = sess.currentdatabase
	Set coll = db.unprocesseddocuments
	Set doc = coll.getfirstdocument
	While Not doc Is Nothing
		Set rtitem = doc.GetFirstItem( "Body" )
		If Not rtitem Is Nothing Then
			If ( rtitem.Type = RICHTEXT ) Then
				ForAll o In rtitem.EmbeddedObjects
					If ( o.Type = EMBED_ATTACHMENT ) Then
						filename = Evaluate("@AttachmentNames", doc)
						For i = 0 To UBound(filename)
							strname = filename(i)
							MessageBox strname
						Next
					End If
				End ForAll
			End If
		End If
		Set doc = coll.getnextdocument(doc)
	Wend

Titel: Antw:Zugriff nur auf selektiertes Attachment?
Beitrag von: eknori am 04.03.22 - 19:46:03
Ja, kann man. mit einem extension manager in c/c++

Dein  code works as designed; deshalb die 200 mal.
Titel: Antw:Zugriff nur auf selektiertes Attachment?
Beitrag von: schroederk am 05.03.22 - 08:35:06
Ja, kann man. mit einem extension manager in c/c++

D.h. es ist mit Notes-Boardmitteln (Lotusscript / Formula) nicht möglich, festzustellen, welches Attachment der Benutzer selektiert hat?
Und das Kontextmenü ist so dann auch nicht erweiterbar?

Wäre es denn eine mögliche Lösung (mit Lotusscript), dass der Anwender nochmal eine Liste aller Attachments gezeigt bekommt und er dann nochmal auswählen kann, welches Attachment er haben möchte?


Dein  code works as designed; deshalb die 200 mal.

Ich verstehe aber leider nicht warum. Meinem Verständnis nach: doc sollte nur 1 einziges Dokument beinhalten (die von mir geöffnete Mail), es wird nur 1 Mal das Feld "Body" geholt und dann alle darin enthaltenen Attachments.


Titel: Antw:Zugriff nur auf selektiertes Attachment?
Beitrag von: Richard Eder am 05.03.22 - 09:38:57
Dein  code works as designed; deshalb die 200 mal.
Kommt halt darauf an, was der Agent als db.unprocesseddocuments betrachtet (Einstellung als Agent-Ziel).
Set doc = sess.documentcontext ist dann ggf. zielführender...
Titel: Antw:Zugriff nur auf selektiertes Attachment?
Beitrag von: schroederk am 05.03.22 - 09:50:24
Kommt halt darauf an, was der Agent als db.unprocesseddocuments betrachtet (Einstellung als Agent-Ziel).
Set doc = sess.documentcontext ist dann ggf. zielführender...

Als Ziel ist eingestellt: "Alle ausgewählten Dokumente". Wenn ich in einem geöffneten Dokument stehe, sollte es damit meinem Verständnis nach eigentlich nur ein einiges Dokument sein können.

Titel: Antw:Zugriff nur auf selektiertes Attachment?
Beitrag von: Richard Eder am 05.03.22 - 14:25:21
Ok, das stimmt. Dann besser einfach mal debuggen und auf die Count Property der Collection achten, ob die Collection nicht doch mehrere Dokumente enthält (wg. einer vorangehenden Suche). Man könnte den Agenten auch als Aktionsbutton in der Maske realisieren, was dann eh die wohl bessere Variante wäre, wenn das Dokument schon geöffnet wird.
Titel: Antw:Zugriff nur auf selektiertes Attachment?
Beitrag von: eknori am 05.03.22 - 15:29:46
Das ist ja nicht auszuhalten. Guckt euch den code doch mal genau an. Ist doch offensichtlich, warum die msgbox so oft erscheint.
Titel: Antw:Zugriff nur auf selektiertes Attachment?
Beitrag von: Richard Eder am 05.03.22 - 16:59:07
wow, da hab ich wohl drübergelesen. ;-)
Titel: Antw:Zugriff nur auf selektiertes Attachment?
Beitrag von: Tode am 07.03.22 - 07:52:54
Ich verstehe aber leider nicht warum. Meinem Verständnis nach: doc sollte nur 1 einziges Dokument beinhalten (die von mir geöffnete Mail), es wird nur 1 Mal das Feld "Body" geholt und dann alle darin enthaltenen Attachments.

Genau: Zunächst hast Du eine While- Schleife, die Dir alle gewählten Dokumente durchläuft...
Gut, Du sagst, Du hast nur ein Dokument gewählt...

Dann hast Du eine Forall- Schleife, die alle Attachments im Dokument durchläuft. INNERHALB dieser Schleife hast Du eine weitere For- Schleife, die alle Attachmentnamen erneut durchläuft.

Du kommst also zu Deiner inneren Messagebox bei 1 Dokument mit 10 Attachments insgesamt 1 x 10 x 10 = 100 mal zur Messagebox. --> Works as Designed.

Was Du willst, ist einen

NotesUIWorkspace.Prompt( PROMPT_OKCANCELLIST, ... ) mit fileName als values- Parameter.
Die Variable "fileName" sollte besser "fileNames" heissen, weil sie alle Dateinamen des Dokuments enthält und nicht nur eins.

Dann kannst Du Dir das Attachment, was der Benutzer gewählt hat, mittels doc.GetAttachment holen und dann damit tun, was Du willst.
Wenn Du wirklich immer nur ein Dokument haben willst, dann ersetzt Du Dein "While Not Doc is Nothing" durch "If not doc is Nothing Then", dann wird immer nur das erste Dokument der Collection (normalerweise das älteste) genommen.