当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2010年3月15日月曜日

文書の未読既読状態をチェックする

今日はLotus Domino Designer 8.5 開発者ガイド購入記念ということで、8.5のネタです。

皆様がクリックしてくれているおかげで、順調にランキングが上がっています。
さらに順位を上げて、Lotus Notes/Dominoユーザが増えることを期待しましょう。
ということで?、
にほんブログ村 IT技術ブログへ
さぁ、今日もクリックしましょう。




文書の未読/既読状態を確認できるというNotesDocumentクラスのGetReadメソッドの紹介です。
このメソッド、たしかに、Designerヘルプに8.5からの新機能として記載されています。

引数を省略すると、プログラムを実行したユーザが該当する文書を読んだのかそうでないのかを返してくれます。
ということで、サンプルを組んでみました。

サンプルは、ビューで選択した文書の既読未読チェックをして結果を表示するものです。

ここで、ちょっと驚いたことが起こりました。
通常、Lotus Scriptを組んでいると、そのクラスのメンバー(メソッド及びプロパティ)が候補として表示されますが、GetReadは表示されないのです。

【旧バージョンスタイルのLotus Script - Formなどで組む場合】


【EclipseスタイルのLotus Script - エージェントやスクリプトライブラリで組む場合】


完全に、隠しメソッド扱いです・・・
8.5.2では表示されることを祈っています。

ちなみに、引数にはString型でユーザ名をセットできます。
この場合、"Masahiko Miyo/EFMIYO"というように、ユーザ名と組織名がセットされていないといけません。"Masahiko Miyo"では反応しません。注意しましょう。
Sub Initialize()
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim docs As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim cnt As Integer
    Dim msg As String
    
    '選択した文書の取得(分かりやすくするために、10文書までは選択可能とする)
    Set db = session.Currentdatabase
    Set docs = db.Unprocesseddocuments
    If docs.Count > 10 Then
        MsgBox "選択する文書は10までとしてください。"
        Exit Sub
    End If
    
    'メッセージを順番に表示するために、降順で処理をする
    For cnt = docs.Count To 1 Step -1
        Set doc = docs.Getnthdocument( cnt )
        If doc.GetRead() = True Then
            msg = CStr(cnt) & "番目の文書" & Chr$(9) & "【既読】" & Chr$(10) & msg
        Else
            msg = CStr(cnt) & "番目の文書" & Chr$(9) & "[未読]" & Chr$(10) & msg
        End If
    Next
    
    '選択した文書は、作成日時順にソートされて表示される
    MsgBox msg, MB_OK + MB_ICONINFORMATION, "選択した文書の既読未読チェック"
End Sub



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: