#lotus-notes #lotus-domino #lotusscript
#lotus-notes #lotus-domino #lotusscript
Вопрос:
Здравствуйте, я написал этот код (скопировав с сайтов, которые я нашел в Интернете), чтобы находить электронные письма в моем представлении «Входящие» в Lotus notes и сохранять вложения. Чего я не могу сделать, так это найти документы с нужной мне темой. Коллекция не заполнена. Где я ошибаюсь? Спасибо.
Sub Initialize
Dim sess As New NotesSession
Dim db As NotesDatabase
Dim coll As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim filename As Variant
Const DIR_NOT_FOUND = 76
Dim i As Integer
Dim strname As String
Dim view As NotesView
Dim myArray (1 To 2) As String
myArray (1) = "DataToBeSaved"
myArray (2) = "DataToBeSaved"
Set db = sess.currentdatabase
Set view = db.GetView("($Inbox)" )
Set coll = view.GetAllDocumentsByKey(myArray,False)
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
If Isempty(rtitem.EmbeddedObjects) = False Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
filename = Evaluate("@AttachmentNames", doc)
'For i = 0 To Ubound(filename)
If (filename(i)="query nas.txt") Then
strname = Replace(filename(i), "/", "-")
On Error DIR_NOT_FOUND Resume Next
Call o.ExtractFile( "\rflenas1.rfle.roto-frank.comRFIBLOTUSPROVA" amp; strname )
End If
'Next
doc.fieldname = ""
Call doc.Save( True, True )
End If
End Forall
End If
End If
End If
Set doc = coll.getnextdocument(doc)
Wend
Конец подраздела
Комментарии:
1. Вам нужно добавить проверку для doc.Subject(0) = «ТЕМА, КОТОРУЮ ВЫ ХОТИТЕ НАЙТИ».
2. Значит, мне не нужно использовать GetAllDocumentsByKey? Итак, в чем же ключ?
3. док.Тема не существует в моем Lotus
4. После
While doc is not Nothing
добавленияif doc.subject(0) = "SUBJECT TO MATCH" then
, а затем поместитеend if
передset doc = coll.getnextdocument(doc)
. Объяснение:doc.subject(0)
означает получение строкового значения поля тема в документе5. Вы использовали цикл в моем ответе? Это позволит просмотреть каждый документ. Ваш исходный цикл просматривает только документы, которые находятся в коллекции, что, вероятно, не то, что вам нужно.
Ответ №1:
Вам нужно обернуть свою логику в цикл, подобный этому. Он будет перебирать все документы в вашем почтовом ящике, и если subejct совпадает, он будет делать все, что вы хотите поместить в область «Сделать что-нибудь с документом».
set doc = view.getfirstdocument
while not doc is nothing
if doc.subject(0) = "THE SUBJECT I WANT TO FIND" then
'Do something with the doc
end if
set doc = view.getnextdocument(doc)
Wend
Вам больше не понадобится coll
Комментарии:
1. Я использовал коллекцию, потому что я ищу только в непрочитанных документах. Если я ищу весь вид или базу данных, это очень, очень, очень медленно
2. Вы все еще можете перебирать коллекцию, но вам нужно протестировать doc.Subject() . В папке «Входящие» нет «ключа», потому что это не отсортированное представление. GetAllDocumentByKey выполняет поиск в первом отсортированном столбце. И, кстати, существует коллекция необработанных документов (посмотрите в documentiaton класс NotesDatabase), но (насколько я помню) нет коллекции для непрочитанных документов.