LotusScriptで設計要素を解析する(その2)

LotusScriptでより詳細な設計要素の解析をする必要がある場合は、「NotesNoteCollection」クラスを利用します。

このクラスを利用することで、ページやイメージリソースなど、LotusScriptでクラスが用意されていない設計要素についても、情報を取得することが可能となります。

プログラム例

'すべてのページを取得し、名称を表示する
Dim ns			As New NotesSession
Dim ndb			As NotesDatabase
Dim nc			As NotesNoteCollection
Dim nd			As NotesDocument
Dim nid			As String
Dim i			As Integer

Set ndb = ns.CurrentDatabase
Set nc = ndb.CreateNoteCollection(False)
nc.SelectPages = True		'コレクションに含める設計要素を指定する
Call nc.BuildCollection

If (nc.Count = 0) Then
	Exit Sub
End If
	
nid = nc.GetFirstNoteId
For i = 1 To nc.Count
	Set nd = ndb.GetDocumentByID(nid)
	Msgbox nd.GetItemValue("$TITLE")(0)

	nid = nc.GetNextNoteId(nid)
Next

ここでのポイントは、各設計要素をNotesDocumentクラスで取得できるという点です。その為、NotesDocumentのGetItemValueメソッドで、その文書に含まれるフィールドの情報を確認することができます。

※重要:
この文書は設計要素そのものです。その為、フィールドの値を不用意に変更すると、アプリケーション自体が破損する恐れがあることを十分にご注意ください。

設計解析のポイント

取得可能なフィールド名は、Domino Designerで設計要素を選択すると、下図のように「プロパティ」-「フィールド」で確認することができます。

フィールドの例

設計要素の文書に含まれるフィールドは、各設計要素の種類、設定状況により変化しますが、ほとんどの設計要素に含まれる主要なフィールドとしては、以下の2つがあります。

■「$TITLE」フィールド
設計要素の名称および別名を保存。
※別名は、設計要素の種類により "|" または複数値で保持される。

■「$Flags」フィールド
設計要素のプロパティなどの設定が保持されている。ただし、コード値で保持されている為、それぞれが何を意味しているかは容易には判断できません。

Next STEP

ここまでの内容で、設計要素の一覧を作成することは可能ですが、詳細な設計解析が出来ているわけではありません。

より詳細な設計解析については、設計要素の情報をDXL形式で出力し、その内容を解析することで可能となります。

その方法は、また次回!


いいなと思ったら応援しよう!