Lotus notes 是否从Notes文档底部删除附件?

Lotus notes 是否从Notes文档底部删除附件?,lotus-notes,lotusscript,lotus,Lotus Notes,Lotusscript,Lotus,我有Notes文档,文档底部有附件(是的,我知道原因)。如何以编程方式删除这些附件,而不删除字段中的附件 我希望使用NotesDoume.Embeded对象,但它不包括文件附件:(您可以使用Evaluate()(是的,这是您希望使用它的少数几次之一),调用@AttachmentNames公式以获取文档中所有附件的列表。 然后,您可以处理返回的数组,并将其与富格文本字段中附加的数组进行比较,然后删除不需要的数组 我首先从富文本字段中获取所有嵌入的附件,并将这些名称存储在列表中。 然后我将使用@At

我有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列表应将文件名作为列表标记。
现在,您可以使用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