メールのアーカイブや複数の文書をまとめて承認するなど、ビューで選択した文書を順次処理する操作は、ノーツでは一般的ですよね。この操作を自身のアプリケーションで実現できると使いやすく効率的な 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 件のコメント:
コメントを投稿