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

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

2014年12月9日火曜日

空き時間情報を検索してみる

おはようございます。

今年はホントにXPagesの話題が多かったですね。
でも、LotusScriptの話題も欲しいよね?ということで、久しぶりにLotusScriptの話題です。

本題に入る前に、にほんブログ村 IT技術ブログへ
をクリックしましょう。


今日は空き時間情報の検索についてです。
カレンダーにスケジュールを登録していて、他の人と予定が重なっていないかどうかを調べるのにいくつか方法が考えられます。
例えば・・・
  • 確認したい人のスケジュールを自分のカレンダーに表示させてみる
  • 会議招集を作成して、出席可能な時間の検索を行ってみる
  • 直接本人に聞いてみる(^^;
等でしょうか。

どれを使ってもいいのですが、LotusScriptでも実現できるので、やってみましょう。

検索に必要な情報は次の3つ+αです。
  1. 検索したい時刻の範囲
  2. 検索したい人のユーザー名
  3. 空き時間と認定する時間
  4. 返してほしい空き時間の数(1つで良いのか、複数なのか)

まぁ、4つ目は戻り値を単数にするのか複数にするのかということなので、厳密にいうと必要な情報ではありません。なので、3つ+αとしてます。

1.はNotesDateRangeオブジェクトに開始時刻と終了時刻をセットします。
2.は空き時間を検索したい人のユーザー名を配列にセットします(グループ名でも良いそうです)。
3.は指定した時刻の範囲の中で、空き時間として検知したい時間の分数をセットします(30分なら30
1時間なら60)。

ということで、サンプルです。
Sub Click(Source As Button)
 On Error Goto ErrProc
 
 Dim session       As New NotesSession
 Dim chkDateTime   As     NotesDateRange
 Dim needTime      As     Integer
 Dim names(1 To 2) As     String
 Dim freeTime      As     Variant
 
 '空き時間を検索する開始/終了時刻
 Set chkDateTime               = session.CreateDateRange()
 Set chkDateTime.StartDateTime = New NotesDateTime( "2014/12/10 15:00" )
 Set chkDateTime.EndDateTime   = New NotesDateTime( "2014/12/10 18:00" )
 
 '空き時間として設定したい時間の長さ(分)
 needTime = 20
 
 '空き時間を検索するユーザー(複数設定可)
 names(1) = "Masahiko Miyo"
 names(2) = "Domino Administrator"
 
 '空き時間の検索
 '4つ目の引数のfalseは時間内に複数の空き時間が見つかった場合、全部返す
 'trueの場合、開始時刻に一番近いものを返す
 freeTime = session.FreeTimeSearch( chkDateTime, needTime, names, False )
 
 If freeTime(0) Is Nothing Then
  Msgbox "空き時間はありません", 0, "空き時間情報の検索"
 Else
  Forall x In freeTime
   Msgbox x.Text, 0, "空き時間情報の検索"
  End Forall
 End If
 
 Exit Sub
 
ErrProc:
 Msgbox Cstr(Err) & Chr$(10) & _
 Error & Chr$(10) & _
 Cstr(Erl)
 
 Exit Sub
End Sub

10行目から20行目は検索に必要な情報をセットしています。
実際に検索しているのは、25行目です。
27行目から33行目で結果を表示しています。
空き時間情報が見つからない(スケジュールが全部埋まっている)場合は、空の配列が返ってくるので、27行目で確認しています。


引数が多いので、ちょっと面倒ですが、わかってしまえば、そんなに難しくはないと思います。

是非、チャレンジしてみてください。



それでは、今日はこの辺で・・・








【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ





0 件のコメント: