Lotus Notes 6.5.x のスケジュールをGoogleカレンダーと同期

お仕事の日程管理が破綻しつつあるので、LotusNotesのカレンダーに移行してみる事になったのだが、Notes君はicalなんてオープンなエクスポート形式を持ち合わせていない。
個人的には今まで個人で利用していたGoogleカレンダーとiPod Touchでも見れるようにしたいなと、いろいろ調べたらGoogle Calendar Help のディスカッションでHowToを発見!
有り難く活用させていただく事にしました:mrgreen:
折角なんで日本語でTipsを転記してみる

How to export Lotus Notes calendar to CSV (ノーツのカレンダーをCSVに吐き出す方法)

– あなたのメールデータベースを開きます
– メニューバーの「作成(C)」>「エージェント(A)」を選択
– エージェントのダイアログボックスがポップアップされるので、名前を適当に”Export to CSV”とかってつけておく。
– 実行の対象に”すべての選択文書”を選ぶ(デフォルトのはず…)
– Xをクリックしてダイアログを閉じる

– メインのプログラムウィンドウの実行パラメーターで”シンプルアクション”から”LotusScript”に変更する。

– 左のナビゲーターの”オブジェクト”タブにて”Initialze”をクリック.
– これで、メインのプログラムウィンドウには2行のコード
“Sub Initialize” and “End Sub”が表示されているはず。
– 下のコードを”Sub Initialize” と “End Sub”の間にコピペ

‘コードここから ======================
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim col As NotesDocumentCollection
Dim outputFile As Integer
Dim startDate As NotesDateTime, endDate As NotesDateTime

Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments

outputFile = Freefile()
Open “c:\NotesCalendar.csv” For Output As outputFile
Print #outputFile, |”| & “Subject” & |”,”| & “Start Date” & |”,”| & _
“Start Time” & |”,”| & “End Date” & |”,”| & “End Time” & |”,”| & _
“All day event” & |”,”| & “Description” & |”|
Set doc = col.GetFirstDocument
While Not (doc Is Nothing)
Set startDate = New NotesDateTime(doc.StartDateTime(0))
Set endDate = New NotesDateTime(doc.EndDateTime(0))
Print #outputFile, |”| & doc.Subject(0) & |”,”| & _
startDate.DateOnly & |”,”| & startDate.TimeOnly & |”,”| & _
endDate.DateOnly & |”,”| & endDate.TimeOnly & _
|”,”| & “false” & |”,””|
Set doc = col.GetNextDocument(doc)
Wend

Close outputFile
‘コードここまで =============================

– エージェントを保存して閉じる.
– あなたのNotesカレンダーを開き、”会議”のタブを開く。
– エクスポートしたい予定を選択し、
– メニューバーの「アクション(A)」>「あなたの作った名前のスクリプト」を選択して実行
– これでCSVが”c:\NotesCalendar.csv”に出力されます。
– このファイルを使ってGoogleカレンダーに予定をインポートできます。

補足:
ちなみに、ふつーのカレンダー画面でも予定を選択して、「アクション(A)」>「あなたの作った名前のスクリプト」でエクスポートされます。
そして重複する予定をGoogleカレンダーにインポートしようとすると賢くも、Google様は重複する予定は弾いてくれるみたいです。

Thanks for Mr. Shawn McCormick ! 😯

補足その2:
Wordpressでのコードの表示で、ダブルクォートが’RIGHT DOUBLE QUOTATION MARK’ (U+201D)になってしまうので、
うまくいかない場合は、ダブルクォートを手で打ち直してみてください。(いっぱい有るけど..)

Lotus Notes 6.5.x のスケジュールをGoogleカレンダーと同期」への42件のフィードバック

  1. ありがたく活用させていただいています。

    もしお分かりでしたら、ノーツのスケジュールで入力した
    場所の情報を吐き出す記述を教えていただければ
    ありがたく。

  2. 大昔のBlog(しかもコメントスパムの中)わざわさ書き込んでくださいまして有り難うございます。
    私はすでにNotes環境ではなくなっているので、具体的な回答は出来ないのですが、Open “c:\NotesCalendar.csv” とあるので、CSV出力はC:のルートディレクトリです。
    その他のデータの出力場所が知りたいのでしたら、ごめんなさい、他を捜して見ていただければと思います。
    # 不親切でごめんなさい.

  3. NotesカレンダーのデータをGoogleカレンダーへ書き出す方法をwebで探しまくってここへたどり着きました。

    ご指示通りにやった(つもりな)のですが、エージェント作成のところで次のようなエラーメッセージが出てしまいます。
    Export to CSV: Initialize: 11: Unexpected: :; Expected: Operator; FOR; AS; ACCESS; LOCK; SHARED

    Export to CSV: Initialize: 14: Unexpected: event”; Expected: (

    どうも次の2行に何らかの原因があるようなのですが、お分かりになりますでしょうか? 藁をもすがる気持ちです。

    Open “c:\NotesCalendar.csv” For Output As outputFile

    “All day event” & |”,”| & “Description” & |”|

  4. 想定原因1.c:\NotesCalendar.csv にファイルの書き込み権限がないのでは? c:\NotesCalendar.csv でだめなら、どっかファイルの書き込み権限があるディレクトリを指定してみては如何でしょうか。

    想定原因2.
    本編に書いてるコードのダブルクォートが’RIGHT DOUBLE QUOTATION MARK’ (U+201D)(http://www.fileformat.info/info/unicode/char/201d/index.htm)
    になっているのが原因かもしれません。’QUOTATION MARK’ (U+0022)に変更したコードを以下に張っておきます。
    これでだめなら、分からないです。

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim col As NotesDocumentCollection
    Dim outputFile As Integer
    Dim startDate As NotesDateTime, endDate As NotesDateTime
    Set db = session.CurrentDatabase
    Set col = db.UnprocessedDocuments
    outputFile = Freefile()
    Open "c:\NotesCalendar.csv" For Output As outputFile
    Print #outputFile, |"| & "Subject" & |","| & "Start Date" & |","| & _
    "Start Time" & |","| & "End Date" & |","| & "End Time" & |","| & _
    "All day event" & |","| & "Description" & |"|
    Set doc = col.GetFirstDocument
    While Not (doc Is Nothing)
    Set startDate = New NotesDateTime(doc.StartDateTime(0))
    Set endDate = New NotesDateTime(doc.EndDateTime(0))
    Print #outputFile, |"| & doc.Subject(0) & |","| & _
    startDate.DateOnly & |","| & startDate.TimeOnly & |","| & _
    endDate.DateOnly & |","| & endDate.TimeOnly & _
    |","| & "false" & |",""|
    Set doc = col.GetNextDocument(doc)
    Wend
    Close outputFile

  5. 上のscriptをそのままコピペしたらうまく行きました。
    感謝感激であります。
    これでぐっすり眠れそうです。
    本当にありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

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