0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?