Advertisements
新年明けましておめでとう御座います。
今年もぼちぼち記事を書かせていただきます。
Advertisements
※LotusScriptでNotesメールを送る記事を併せて見るとわかりやすいです。
Lotus ScriptでNotesメールを送る場合 | land3939.info
NotesメールをNotes式ではなく、Lotus Scriptを用いて送信をします。様々な方法を紹介。
リモートデバッガが使えれば恐らく可能なのですが、サーバー側からのスケジュールにより実行されるエージェントはエラーが発生しても発生しているかどうかわかりません。
今まではどうしようもなかったのですが、ついに今回どうにかする術を発見したので本記事で残しておきます。
Erl関数とErr関数とError関数
VBAですと「Errオブジェクト」を用いてエラー内容を取得できますが、LotusScriptでは、それぞれ別々の関数を用いて取得します。
Erl→発生したエラーの行数
Err→エラー番号
Error→エラー内容
これがわかれば、On Errorステートメントを使ってエラーをキャッチして、関数を用いて本文に含んでメールを送れば簡単にエラーを解析することが出来ます。
エラーメールを送付するプログラム
Sub Initialize
On Error Goto ErrProc
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
//中略//
exit sub
ErrProc:
Dim errDoc As NotesDocument
Set errDoc = New NotesDocument( db )
errDoc.Form = "Memo"
errDoc.SendTo = "ユーザー名" '送信先
errDoc.Subject = "【エージェントエラー】件名" '件名
'本文
Dim richTextItemErr As NotesRichTextItem
Set richTextItemErr = New NotesRichTextItem( errDoc, "Body" )
Call richTextItemErr.AppendText( "エラー行数:" & Cstr(Erl) )
Call richTextItemErr.AddNewLine( 1 )
Call richTextItemErr.AppendText( "エラー番号:" & Cstr(Err) )
Call richTextItemErr.AddNewLine( 1 )
Call richTextItemErr.AppendText( "エラー内容:" & Error )
'送信
Call errDoc.Send( False )
End Sub
※sessionやdbを前もって宣言していない場合は、ErrProc以降で宣言してdbを取得しておいてください。
とまあこんな感じです。
環境次第ですが、これでスケジュールエージェントのデバッグ作業が捗ると思います。
参考サイト
のおつ -Notes/Dominoに関すること-: Erl関数の戻り値に注意
Notes/DominoのLotus Scriptや@関数のサンプルコード、各バージョンの新機能、XPages について紹介します。
Advertisements