LoginSignup
0
1

More than 3 years have passed since last update.

Notes文書の添付ファイルを取得するLotusScript

Posted at

Notesマイグレーションでは、Notes文書だけではなく、文書に添付されたファイルも移行する必要があります。Notes文書から添付ファイルを抽出する方法はヘルプに記載がありますが、こちらの記事にあるように正常に動作しません。(doc.EmbeddedObjectsの値がNullとなる)

文書の添付ファイルを取得する処理は、文書に単一のリッチテキストフィールドが存在する場合と文書に複数のリッチテキストフィールドが存在する場合を考慮する必要があります。(それぞれのリッチテキストフィールドに、添付ファイルがある場合、ない場合、複数ある場合の組み合わせも考慮する必要があります。)

上記を踏まえて以下の関数を記載しました。

Sub Initialize
    Dim ss As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument

    'Set db = New NotesDatabase("Server","FilePath")
    Set db = ss.CurrentDatabase
    '--データベースの全てのNotes文書を取得
    Set dc = db.AllDocuments
    '--Notes文書を順次に取得
    Set doc = dc.GetFirstDocument
    While Not ( doc Is Nothing )
        '--Notes文書の全フィールド(Item)を順次に取得
        ForAll item In doc.Items
            '--フィールドがリッチテキストであれば
            If (item.Type = RICHTEXT ) Then
                '--リッチテキスト内の全てのオブジェクトを参照
                ForAll object In item.EmbeddedObjects
                    If (object.Type = EMBED_ATTACHMENT) Then
                        'c:¥Temp以下にオブジェクトを書き出す
                        Call object.ExtractFile("c:¥Temp" & object.Source)
                    End If
                End ForAll
            End If
        End ForAll
        Set doc = dc.GetNextDocument(doc)
    Wend
End Sub

※ 添付ファイルの出力先フォルダにはアクセス権限の付与が必要。
※ 同名のファイルが作成済の場合は、無条件で上書きされる。

(ここから、さらに添付ファイルの種類を判定することもあったりするのですが、それは別途で記載をする予定です。)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1