【问题标题】:Why Document properties body value is null in lotus notes?为什么莲花笔记中的文档属性正文值为空?
【发布时间】:2020-04-23 11:26:55
【问题描述】:

在显示此符号""[] 而不是内容的文档属性中,正文内容为空。
消息框 Lotus 脚本也显示 nullgetItemValue("Body")
如何解决?

Sub Click(Source As Button)
    Dim s As NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim col As NotesDocumentCollection

    Set s = New NotesSession
    Set db = s.CurrentDatabase


    Set col = db.UnprocessedDocuments

    Print "Collection Size:"& col.Count
    Set doc = col.GetFirstDocument
    If doc.HasItem("Body") Then
        While Not doc Is Nothing
            Dim body As Variant


            body = doc.GetItemValue("Body")

            Msgbox (body(0))

            Set doc = col.GetNextDocument(doc)
        Wend
    End If
End Sub

【问题讨论】:

  • 你能给我们看一些代码吗?显示文档属性框时选择了什么?类别将没有任何正文,因此请确保您选择的是文档。如果您在选定的文档上运行代理,类别将不会返回任何文档属性。
  • Sub Click(Source As Button) Dim s As NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim col As NotesDocumentCollection Set s = New NotesSession Set db = s.CurrentDatabase Set col = db.UnprocessedDocuments Print " Collection Size:"& col.Count Set doc = col.GetFirstDocument If doc.HasItem("Body") Then While Not doc Is Nothing Dim body As Variant body = doc.GetItemValue("Body") Msgbox (body(0)) Set doc = col.GetNextDocument(doc) Wend End If End Sub
  • 以上是我的代码,我可以使用此代码从 e.t.c 获取主题、delivered_to,但正文为空。不知道为什么。
  • 请参阅帮助中的 GetItemValue 方法:“返回值是……文本、数字或时间日期项的值数组,以及富文本项的字符串。”。因此,在您的代码中,body 是一个字符串,因此 body(0) 是无效的。
  • 所以我应该怎么做其实我是一个java开发者和莲花脚本初学者

标签: javascript lotus-notes lotusscript domino-designer-eclipse


【解决方案1】:

因为(通常)正文是富文本字段,并且这些字段的处理方式不同。请参阅设计器帮助中的 NotesRichTextItem。

从您的代码开始:

Set s = New NotesSession
Set db = s.CurrentDatabase


Set col = db.UnprocessedDocuments

Print "Collection Size:"& col.Count
Set doc = col.GetFirstDocument
While Not doc Is Nothing
    Dim body As Variant

    If doc.HasItem("Body") Then
        Set body = doc.GetFirstItem("Body") ' now body contains the richtext item'

        Msgbox body.UnformattedText
    End If
    Set doc = col.GetNextDocument(doc)
Wend

Notes 应该为您将 MIME 项目转换为富文本。如果要处理 MIME 类型,则必须使用 NotesMimeHeader 和 NotesMimeEntity 类。查看帮助数据库,尤其是这些类的示例很有趣。

【讨论】:

  • 我确实照顾 NotesRichTextItem(LotusScript) 并尝试了几个示例,但我面临一个错误变体不包含对象。你能分享一个工作的例子吗?
  • 这不是这个网站恕我直言的想法。最好分享您的非工作示例,我们会帮助您使其工作。如果您必须发布代码,请修改问题并将其添加到代码部分中。
  • 我还分享了文档正文属性的图片,请看我修改后的问题
【解决方案2】:

您不能像引用普通 NotesItem 一样仅引用 NotesRichtTextItem。富文本字段可以包含图形、表格、字体、颜色和其他非文本内容。它是否确实包含这些东西并不重要;它从来都不是一个简单的字符串数组,所以 Body(0) 没有定义。查找 NotesRichTextItem 类的方法。您会发现一个名为 getUnformattedText 的方法,它将返回字段值的简单文本表示。

(有一些选项可以将字段值获取为 HTML,以便您也可以获取所有格式标记,但前提是该字段确实存储为 MIME 而不是 Notes 富文本。)

【讨论】:

  • 字段tyoe是mime它的确认。
  • 我还分享了文档正文属性的图片,请看我修改后的问题
  • 你仍然不能使用 Body(0)。您需要使用 Body.getUnformattedText。
  • 或者您需要学习如何使用 NotesMIMEEntity 类以及与之相关的其他 NotesMIMExxx 类。 MIME 字段作为实体树相关联。您的 Body 字段是顶级实体。您也许可以只使用 GetEntityAsText。否则,你会找到它的孩子,也许是他们的孩子,直到你找到 ContentType/ContentSubType 是 text/plain 或 text/HTML 的部分(或部分),然后你可以使用 getContentAsText 或 getContentAsBytes - 你可以如果有 Content-Transfer-Encoding 头,则需要一路使用 DecodeContent。
  • 我已经使用了 NotesMIMEEntity 类的注释,我得到了标题,但也没有内容类型,既没有内容作为文本也仍然为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多