Notes 小ワザ集

第20回 誕生日通知エージェント

IBM Notes/Domino小ワザ集

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: Notes 小ワザ集

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:Notes 小ワザ集

このシリーズの続きに乞うご期待。

友人や仲間の誕生日をいつも忘れていませんか?

シンプルなエージェントを使えば、Notesクライアントが今度の誕生日を通知してくれます。このエージェントを個人用アドレス帳(PAB)に置くと、彼や彼女の連絡先とPAB内のそのページへのドキュメント・リンクを示す電子メールがあなたに送信されます。誕生日エージェントはスケジュールされたLotusScriptエージェントであり、PABで常に動作して、翌日にやってくる誕生日を通知します。

Sub Initialize
'Summary : Code for sending mail to oneself about colleagues'/friends' birthdays
'This agent checks for tomorrow's birthdays and composes a mail message with a link and 
'works automatically if the agent is enabled

'This agent works on the People view used in Notes
'You can create a Birthday view to display all colleagues'/friends' birthdays

'declaration 
Dim Session As New NotesSession
Dim db As notesdatabase
Dim view As notesview
Dim doc,maildoc As notesdocument
Dim Tomorrow As notesdatetime
Dim item As notesitem
Dim Bday, BTday ,send ,text As String
Dim x,a As Integer 
Dim user() As String
Dim userLink () As Variant
On Error Goto Err_Att
Set Tomorrow = New NotesDateTime( "Tomorrow" )
Set DB =Session.CurrentDataBase
Set View = DB.GetView("People")
Set Doc = View.GetFirstDocument
send="no"
x=0
' check in the view
While Not Doc Is Nothing 
Set item = doc.GetFirstItem( "Birthday" )
Set Bday= item.DateTimeValue
If Bday Is Nothing Then
'nothing
Else ' if Birthday has been inserted .. 
Redim Preserve user(x ) 
Redim Preserve userLink(x )
Bday = Day(Bday.dateonly) & Month(Bday.dateonly)
BTday = Day(Tomorrow.dateonly) & Month(Tomorrow.dateonly)
If Bday=BTday Then
'Compare dates to whether or not to send mail
send="yes"
user ( x)= doc.FirstName(0) + " " +doc.LastName(0) 
Set userLink ( x)=doc
'assign link to the document
x=x+1
End If
End If 
Set Doc = View.GetnextDocument(Doc)
Wend
If send = "yes" Then 'compose mail document 
Set Maildoc = DB.CreateDocument
'rich text style setting 
Dim richText As New NotesRichTextItem(maildoc, "Body")
Dim richStyle As NotesRichTextStyle
Set richStyle = session.CreateRichTextStyle
richStyle.NotesFont = FONT_HELV
richStyle.FontSize = 10
richStyle.NotesColor = COLOR_BLUE
Call richText.AppendStyle(richStyle)
' end rich text style setting
Maildoc.Form = "Memo"
Maildoc.Subject = "Birthday reminder! "
a=0
Call richText.AppendText("Tomorrow will be:")
Call richText.AddNewLine(1)
Forall z In user 
If a<>x Then 
Call richText.Addtab(3)
Call richText.AppendText(user(a) + "'s birthday. For details, follow the link ... " )
Call richText.AppendDocLink ( userLink(a) , user(a) )
Call richText.AddNewLine(2)
a=a+1
End If
End Forall
Maildoc.SendTo =session.CommonUserName
Call Maildoc.AppendItemValue( "_ViewIcon", 10 )
Call Maildoc.Send(False)
End If
Exit Sub
Err_Att: 
Msgbox "Attention error : " & Str(Err) & ": " & Error$ & Chr(13)
Resume Next
End Sub

このエージェントを変更または拡張して、会社のディレクトリ・カタログまたは共通のクライアント・アドレス帳にインストールすることもできます。

[対象環境]
Notes クライアント(6.0以降)
※この記事は IBM Notes 9.0 クライアント Standard Edition 環境に基づいて作成されております。クライアント環境により記載、画面が異なる場合がございます


ダウンロード可能なリソース

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=335589
ArticleTitle=Notes 小ワザ集: 第20回 誕生日通知エージェント
publish-date=06082016