Advertisements

【LotusScript】スケジュールエージェントでエラーが発生した時にメールでエラー内容を通知する方法

  • このエントリーをはてなブックマークに追加
Advertisements

新年明けましておめでとう御座います。
今年もぼちぼち記事を書かせていただきます。

Advertisements

※LotusScriptでNotesメールを送る記事を併せて見るとわかりやすいです。

リモートデバッガが使えれば恐らく可能なのですが、サーバー側からのスケジュールにより実行されるエージェントはエラーが発生しても発生しているかどうかわかりません。

今まではどうしようもなかったのですが、ついに今回どうにかする術を発見したので本記事で残しておきます。

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を取得しておいてください。

とまあこんな感じです。
環境次第ですが、これでスケジュールエージェントのデバッグ作業が捗ると思います。

参考サイト

Advertisements
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Advertisements