2010年10月28日木曜日

メール文書を開くと、メール文書は開かずに他のアプリケーションの文書が開く仕組み

ワークフローなどのアプリケーションで依頼や通知のメールを送信することがありますが、相手にリンク先の文書を開いてもらうには、メールの本文へ文書リンクを挿入しておき、それをクリックしてもらうといったが運用が多いかと思います。

これからご紹介するのは、メールに文書リンクを挿入しますが、受信者はリンクをクリックしなくても、文書を開くだけで他のアプリケーションの文書が開くようにする仕掛けです。

まずはメールを送信するためのボタンに設定する LotusScript のサンプルです。
Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim ss As New NotesSession
    Dim doc As NotesDocument
    Dim rtitem As NotesRichTextItem
    Set uidoc = ws.CurrentDocument
    Call uidoc.Save
    Set doc = New NotesDocument( ss.CurrentDatabase )
    doc.Form = "Link"
    doc.Subject = "[Request] " & uidoc.Document.Subject(0)
    Set rtitem = New NotesRichTextItem( doc, "Body" )
    Call rtitem.AppendDocLink( uidoc.Document, uidoc.Document.Subject(0) )
    Call doc.Send( True, "Hoge Hoge/ORG" )
    Set doc = Nothing
    Call uidoc.Close( True )
End Sub

このサンプルで作られる文書(doc)ではフォーム名として "Link" を指定しています。※フォーム名は"Link"以外でも結構です
この"Link"フォームをDBに作成しておき、フォーム上に2つのフィールド"Subject"と"Body"を配置します。
そして"Link"フォームのプロパティを開き、[起動]タブにある「自動起動」の値を "-最初の文書リンク-"に変更します。

作成した文書を送信するとき、Send メソッドの第一パラメータへ True を指定すると、文書にフォームの設計情報が埋め込まれます。
つまり「フォームの最初にある文書リンクを自動起動する」情報が埋め込まれるわけです。

こうして送信されたメールをビューからダブルクリックして開くと、リンク先の文書が開きます。

この仕組みの惜しいところは、プリビューペインで開いた場合はリンク先の文書は開かず、埋め込まれたフォームの内容が表示されるところです。
プリビューペインで開くことを想定して、「リンクをクリックして文書を開きなさい」的な文言を追加したり、"Link"フォームの設計を工夫するのが良いと思います。