Lotus notes 是否从Notes文档底部删除附件?
我有Notes文档,文档底部有附件(是的,我知道原因)。如何以编程方式删除这些附件,而不删除字段中的附件 我希望使用NotesDoume.Embeded对象,但它不包括文件附件:(您可以使用Evaluate()(是的,这是您希望使用它的少数几次之一),调用@AttachmentNames公式以获取文档中所有附件的列表。 然后,您可以处理返回的数组,并将其与富格文本字段中附加的数组进行比较,然后删除不需要的数组 我首先从富文本字段中获取所有嵌入的附件,并将这些名称存储在列表中。 然后我将使用@AttachmentNames获取文档上的所有附件,并将它们放在另一个列表中。 Bot列表应将文件名作为列表标记。 现在,您可以使用ForAll非常轻松地遍历第二个列表,如果第一个列表中没有匹配的列表项,请从文档中删除附件。使用IsElement()检查是否存在特定的列表项。您可以使用Evaluate()(是的,这是您希望使用它的少数几次之一),调用@AttachmentNames公式以获取文档中所有附件的列表。 然后,您可以处理返回的数组,并将其与富格文本字段中附加的数组进行比较,然后删除不需要的数组 我首先从富文本字段中获取所有嵌入的附件,并将这些名称存储在列表中。 然后我将使用@AttachmentNames获取文档上的所有附件,并将它们放在另一个列表中。 Bot列表应将文件名作为列表标记。 现在,您可以使用ForAll非常轻松地遍历第二个列表,如果第一个列表中没有匹配的列表项,请从文档中删除附件。使用IsElement()检查是否存在特定的列表项。您可以使用Evaluate()(是的,这是您希望使用它的少数几次之一),调用@AttachmentNames公式以获取文档中所有附件的列表。 然后,您可以处理返回的数组,并将其与富格文本字段中附加的数组进行比较,然后删除不需要的数组 我首先从富文本字段中获取所有嵌入的附件,并将这些名称存储在列表中。 然后我将使用@AttachmentNames获取文档上的所有附件,并将它们放在另一个列表中。 Bot列表应将文件名作为列表标记。 现在,您可以使用ForAll非常轻松地遍历第二个列表,如果第一个列表中没有匹配的列表项,请从文档中删除附件。使用IsElement()检查是否存在特定的列表项。您可以使用Evaluate()(是的,这是您希望使用它的少数几次之一),调用@AttachmentNames公式以获取文档中所有附件的列表。 然后,您可以处理返回的数组,并将其与富格文本字段中附加的数组进行比较,然后删除不需要的数组 我首先从富文本字段中获取所有嵌入的附件,并将这些名称存储在列表中。 然后我将使用@AttachmentNames获取文档上的所有附件,并将它们放在另一个列表中。 Bot列表应将文件名作为列表标记。Lotus notes 是否从Notes文档底部删除附件?,lotus-notes,lotusscript,lotus,Lotus Notes,Lotusscript,Lotus,我有Notes文档,文档底部有附件(是的,我知道原因)。如何以编程方式删除这些附件,而不删除字段中的附件 我希望使用NotesDoume.Embeded对象,但它不包括文件附件:(您可以使用Evaluate()(是的,这是您希望使用它的少数几次之一),调用@AttachmentNames公式以获取文档中所有附件的列表。 然后,您可以处理返回的数组,并将其与富格文本字段中附加的数组进行比较,然后删除不需要的数组 我首先从富文本字段中获取所有嵌入的附件,并将这些名称存储在列表中。 然后我将使用@At
现在,您可以使用ForAll非常轻松地遍历第二个列表,如果第一个列表中没有匹配的列表项,请从文档中删除附件要检查是否存在特定的列表项。您只需删除不在
表单上的富文本
字段,并删除不在富文本
字段中的附件。
要检索Form
字段,可以使用NotesForm
对象,您可以通过NotesDatabase.GetForm
方法访问该对象。如果Notes文档
没有表单,则可以从默认数据库表单检索字段,可以使用NotesDatabase.get中的NotesDocument
获取该表单DocumentByID(“FFFF0004”)
及其$Fields
项。但是如果您的表单
包含计算子表单
,则需要手动检查该计算子表单
中的字段
要获取所有附件,您可以使用带有“$FILE”名称的NotesDocument.Items
,并使用其值获取附件的名称。
下面是一个例子:
您只需删除富文本
表单中不存在的字段
,并删除富文本
字段中不存在的附件。要检索
Form
字段,可以使用NotesForm
对象,您可以通过NotesDatabase.GetForm
方法访问该对象。如果Notes文档
没有表单,则可以从默认数据库表单检索字段,可以使用NotesDatabase.get中的NotesDocument
获取该表单DocumentByID(“FFFF0004”)
及其$Fields
项。但是如果您的表单
包含计算子表单
,则需要手动检查该计算子表单
中的字段
要获取所有附件,您可以使用带有“$FILE”名称的NotesDocument.Items
,并使用其值获取附件的名称。下面是一个例子:
您只需删除
富文本
表单中不存在的字段,并删除富文本
字段中不存在的附件。要检索
Form
字段,可以使用NotesForm
对象,您可以通过NotesDatabase.GetForm
方法访问该对象。如果Notes文档
没有表单,则可以从默认数据库表单检索字段,可以使用NotesDatabase.get中的NotesDocument
获取该表单DocumentByID(“FFFF0004”)
'Declarations
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim form As NotesForm
Dim defaultForm As NotesDocument
Dim fields As Variant
Dim rtItems() As NotesRichTextItem
Dim files() As String
Dim fileItem As NotesItem
'Get the database and document here
Set form = db.GetForm(doc.Form(0))
'Get Form fields
If form Is Nothing Then
Set defaultForm = db.GetDocumentByID("FFFF0004")
If defaultForm Is Nothing Then
Exit Sub 'Nothing to do
End If
fields = defaultForm.~$Fields
Else
fields = form.Fields
End If
count% = 0
'Get all Rich Text items in document
Forall item In doc.Items
If item.Type = RICHTEXT% Then
Redim Preserve rtItems(count%) As NotesRichTextItem
Set rtItems(count%) = item
count% = count% + 1
End If
End Forall
Redim files(0) As String
If count% > 0 Then
count% = 0
'Remove Rich Text items that are not in form and get all file names
Forall rtItem In rtItems
fieldIndex = Arraygetindex(fields, rtItem.Name)
If Isnull(fieldIndex) Then
Call rtItem.Remove
Elseif Not Isempty(rtItem.EmbeddedObjects) Then
Forall obj In rtItem.EmbeddedObjects
Redim Preserve files(count%) As String
files(count%) = obj.Name
count% = count% + 1
End Forall
End If
End Forall
End If
'Remove all files that are not in Rich Text item
For index = Ubound(doc.Items) To 0 Step -1
Set fileItem = doc.Items(index)
If Ucase(fileItem.Name) = "$FILE" Then
fileIndex = Arraygetindex(files, fileItem.Values(0))
If Isnull(fileIndex) Then
fileItem.Remove
End If
End If
Next
'Save changes here