あとNotesカレンダーから手動で .ics 形式で予定をエクスポートできるが、エクスポートする期間を指定できないという致命的いまいち仕様がある。そこで自力で同期を試みた。
まだ同期はできていないが、ひとまず以下で、定期的にNotesカレンダーから指定期間分の .icsファイルを自動書き出しできたのでメモする。後日、このファイルをgoogleカレンダーで自動取り込みさせる予定。あとその逆の google->notes もいつかそのうち。
※当然ながらサーバー等の設定によって動かない場合もあります。実行は自己責任で。
- カレンダー を開き、作成-エージェント。実行は「スケジュール」「一日一回以上」とする。
- 「スケジュール」ボタンを押すと「エージェントのスケジュール」ウィンドウが開く。任意の実行間隔を設定する。
下の「エージェントの実行場所」では、ローカルでなくメールサーバーを指定する。 - 「エージェントのスケジュール」タブを閉じ前の画面に戻る。
左上の「エージェント ▼」の下の鍵マークをクリック、「実行時セキュリティレベルの設定」で「2. 制限された操作を許可する」を選択。 - オブジェクトタブで 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