【问题标题】:LotusScript - Find documents by subjectLotusScript - 按主题查找文档
【发布时间】:2021-02-23 08:43:59
【问题描述】:

您好,我编写了这段代码(从我在网上找到的网站复制)以在我的 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.com\RFIB\LOTUSPROVA\" & 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

结束子

【问题讨论】:

  • 您需要为 doc.Subject(0) = "SUBJECT YOU WANT TO FIND" 添加检查。
  • 所以我不必使用 GetAllDocumentsByKey?那么,关键是什么?
  • doc.Subject 在我的 Lotus 中不存在
  • While doc is not Nothing 之后添加if doc.subject(0) = "SUBJECT TO MATCH" then,然后将end if 放在set doc = coll.getnextdocument(doc) 之前。解释:doc.subject(0) 表示获取文档中主题字段的字符串值
  • 你在我的回答中使用了循环吗?这将查看每个文档。您的原始循环仅查看集合中的文档,这可能不是您想要的。

标签: lotus-notes lotus-domino lotusscript


【解决方案1】:

您需要将逻辑包装在这样的循环中。它将循环您收件箱中的所有文档,如果主题匹配,它将执行您想要放入“使用文档执行操作”区域的任何内容。

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

【讨论】:

  • 我使用了一个集合,因为我只在未读文档中搜索。如果我搜索整个视图或数据库,它非常非常非常慢
  • 你仍然可以遍历一个集合,但你必须测试 doc.Subject()。收件箱文件夹中没有“键”,因为它不是排序视图。 GetAllDocumentByKey 搜索第一个排序的列。顺便说一句,有一个未处理的文档集合(查看 NotesDatabase 类的文档),但是(据我所知)没有未读文档的集合。
猜你喜欢
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 2015-05-03
  • 2014-05-26
  • 1970-01-01
  • 2021-07-05
相关资源
最近更新 更多