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