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形式で出力し、その内容を解析することで可能となります。
その方法は、また次回!