2020年11月17日火曜日

Outlook カレンダー Googleカレンダーと同期させ、Googleカレンダー側で予定があったら「予定あり」にする

 単に Outlook と Google カレンダー同期 は簡単にできるが、タイトルのように、同期したGoogleカレンダー側で予定がはいっていたら、Outlook側の会議招集時に、予定があるから参加できない とわかるようにしたい。

すごく簡単にできそうだが、結構ハマる。結局、デスクトップ版 Outlook でこの設定をやる方法は未だ不明、誰か知ってたら教えて下さい。

とりあえず以下で解決。

  1. web版 Outlook を開く
  2. 右上の設定(ギアのアイコン)-Outlookのすべての設定を表示-アカウント で同期させたいGoogleカレンダーに対応するアカウントを設定

    「割り当て可能作業時間に含めます」のスイッチをONにする

2020年6月24日水曜日

Lotus Notes 9 カレンダーを定期的に .icsファイルでエクスポート、外部カレンダーと同期させる

Lotus Notes 9 と Googleカレンダーを同期させたい。そのようなソフトがいくつか公開されているようだが、試してみると自分の環境では動かない。
あとNotesカレンダーから手動で .ics 形式で予定をエクスポートできるが、エクスポートする期間を指定できないという致命的いまいち仕様がある。そこで自力で同期を試みた。

まだ同期はできていないが、ひとまず以下で、定期的にNotesカレンダーから指定期間分の .icsファイルを自動書き出しできたのでメモする。後日、このファイルをgoogleカレンダーで自動取り込みさせる予定。あとその逆の google->notes もいつかそのうち。

※当然ながらサーバー等の設定によって動かない場合もあります。実行は自己責任で。

  1. カレンダー を開き、作成-エージェント。実行は「スケジュール」「一日一回以上」とする。
  2. 「スケジュール」ボタンを押すと「エージェントのスケジュール」ウィンドウが開く。任意の実行間隔を設定する。
    下の「エージェントの実行場所」では、ローカルでなくメールサーバーを指定する。
  3. 「エージェントのスケジュール」タブを閉じ前の画面に戻る。
    左上の「エージェント ▼」の下の鍵マークをクリック、「実行時セキュリティレベルの設定」で「2. 制限された操作を許可する」を選択。
  4.  オブジェクトタブで Initialize を選択し、以下を入力。
Sub Initialize
    Dim session As New NotesSession
    Dim maildb As New NotesDatabase("", "")
    Dim cal As NotesCalendar
    Dim dt1 As NotesDateTime
    Dim dt2 As notesdatetime
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim body As NotesRichTextItem
    Dim Pre As Integer
    Dim Post As Integer
    REM Get calendar for current user
    Call maildb.Openmail()
    Set cal = session.getCalendar(maildb) ' Not In ref pane
    Set dt1 = session.createdatetime("Today")
    Set dt2 = session.Createdatetime("Today")
    Set db = session.CurrentDatabase
    REM delta 分だけ本日前後の予定を抽出する 先の予定だけでいいかも
    Pre = 1
    Post = 90
    REM Create document to post results
    Call dt1.AdjustDay(-1*Pre)
    Call dt2.AdjustDay(Post)
    filenum = Freefile()
    Open "パスとファイル名.ics" For Output Access Write As filenum   
    Print #filenum,cal.ReadRange(dt1, dt2)
    REM Read range and put in body of document
    REM Call body.Appendtext(cal.ReadRange(dt1, dt2))
    REM Call doc.Save( True, True )
    Close filenum
End Sub