2023/12/22

ビューで選択した文書の取得

メールのアーカイブや複数の文書をまとめて承認するなど、ビューで選択した文書を順次処理する操作は、ノーツでは一般的ですよね。この操作を自身のアプリケーションで実現できると使いやすく効率的な UI が構築できますね。

そこで、今回は LotusScript を使ってビューで選択した文書を順に取得する方法はついてまとめます。


NotesUIView クラス

まずは、NotesUI クラスをを使用した方法です。

NotesUIVeiw クラスは、現在ノーツクライアントで操作中のビューに対してアクセスするクラスです。そして、Documents プロパティで選択した文書を NotesDocumentCollection オブジェクトとして取得できます。

例えば、ビューのアクションボタンに次のようなコードをセットすると、ビューで選択した文書の Title フィールドの値を順にメッセージボックスで表示します。

Sub Click(Source As Button)
   Dim nuiw As New NotesUIWorkspace
   Dim nuiv As NotesUIView
   Dim ndc As NotesDocumentCollection
   Dim nd As NotesDocument

   Set nuiv = nuiw.CurrentView
   Set ndc = nuiv.Documents


   Set nd = ndc.GetFirstDocument()
   While Not (nd Is Nothing)
      Msgbox nd.Title(0), 64
      Set nd = ndc.GetNextDocument(nd)
   Wend
End Sub

NotesUIWorkspace オブジェクトから NotesUIView を取得、そこから選択文書を取得しています。直接的でわかりやすいコードですね。


エージェントを使用した方法

続いて、同様の操作をエージェントで実現する方法です。

選択文書を NotesDocumentCollection で取得する部分が少し違い、NotesDatabase クラスの UnprocessedDocuments プロパティを使用しています。

Option Declare

Sub Initialize
   Dim ns As New NotesSession
   Dim ndb As NotesDatabase
   Dim ndc As NotesDocumentCollection
   Dim nd As NotesDocument

   Set ndb = ns.CurrentDatabase
   Set ndc = ndb.UnprocessedDocuments

   Set nd = ndc.GetFirstDocument()
   While Not (nd Is Nothing)
      Msgbox nd.Title(0), 64
      Set nd = ndc.GetNextDocument(nd)
   Wend
End Sub

この UnprocessedDocuments プロパティは、実行中のエージェントが「未処理」と判断する文書コレクションを返します。対象となる文書は、エージェントの設定に応じて変化します。

今回のように、ビューで選択した文書を対象とする場合、エージェントのプロパティで次のように設定します。

この”対象”の設定と UnprocessedDocuments プロパティの利用の両方がそろって、ビューの選択文書が取得できます。コードだけで処理がすべて表現されていないので注意が必要ですね。


0 件のコメント:

コメントを投稿