犬小屋日記 このページをアンテナに追加 RSSフィード

2006-05-31 Lotus Notes CalendarからGoogle Calendarへイベントを登録する このエントリーを含むブックマーク

【注 意】

こちらのエントリーのコードは、そのまま実行すると"Bad Request Error 400"というエラーが発生するケースがあったため、修正しています。

最新のコードはこちらに掲載しています。

Google Calendarが発表されてから、自分のスケジュール管理をどうするかいろいろ悩んでいたんだけれど、会社のグループウェアであるLotus NotesからスケジュールデータをGoogle Calendarへ登録できないか悩むこと数日。

昨日になってこのページを見つけてから、ごにょごにょと...。

で、できたのが以下のコード。なんだか美しくないコードで恥ずかしいんだけど...。(^^ゞ

NotesのメールDBデザイナーで開いて、"Appointment"フォームにでもアクションを追加して、以下のコードを貼り付けてください。

登録済みのNotesカレンダーイベントを開いて作成したアクションボタンを押すと、ブラウザが起動して、Google Calendarへのイベント登録画面にNotesカレンダーに登録したデータが埋められた状態で開きます。

保存する前にイベントのステータスを"Private"にしないと、他の人から見られちゃうのでご注意ください。

ちなみにテストした環境は、Lotsu Notes Client R7.0 HF144 と会社標準のメールテンプレートです。

フィールド名が違ったりしたら、ごにょごにょと直しちゃってください。

REM {リッチテキストのBodyフィールドをテキストタイプに変換};

details := @Trim(@Text(Body));

REM {@TimeMerge()で、Googleのタイムゾーンにあわせる};

gtimezone := "Z=7$DO=1$DL=4 1 1 10 -1 1";

gStartDateTime := @TimeMerge( StartDateTime; StartDateTime ; gtimezone );

gEndDateTime := @TimeMerge( EndDateTime; EndDateTime ; gtimezone );

REM {月、日、時、分、秒の1桁を@Replace()で2桁に変換するためのリスト。};

short := "0" :"1" :"2" : "3" : "4" : "5" : "6" : "7" : "8" : "9";

long := "00" :"01" :"02" :"03" :"04" :"05" :"06" :"07" :"08" :"09";

REM {開始年月日と時刻をフォーマット};

syear := @Text(@Year(gStartDateTime));

smonth := @Replace(@Text(@Month(gStartDateTime)); short; long);

sday := @Replace(@Text(@Day(gStartDateTime)); short; long);

shour := @Replace(@Text(@Hour(gStartDateTime)); short; long);

sminute := @Replace(@Text(@Minute(gStartDateTime)); short; long);

ssecond := @Replace(@Text(@Second(gStartDateTime)); short; long);

startDate := syear + smonth + sday;

startTime := shour + sminute + ssecond;

REM {終了年月日と時刻をフォーマット};

eyear := @Text(@Year(gEndDateTime));

emonth := @Replace(@Text(@Month(gEndDateTime)); short; long);

eday := @Replace(@Text(@Day(gEndDateTime)); short; long);

ehour := @Replace(@Text(@Hour(gEndDateTime)); short; long);

eminute := @Replace(@Text(@Minute(gEndDateTime)); short; long);

esecond := @Replace(@Text(@Second(gEndDateTime)); short; long);

endDate := eyear + emonth + eday;

endTime := ehour + eminute + esecond;


REM {@URLOpen()でHTTP(S)リクエストを作成};

REM {@If()でアポイントメントタイプがAnniversary、All Day Eventは時間指定なしでリクエスト};

@URLOpen(

"https://www.google.com/calendar/event?action=TEMPLATE&" +

"text=" + @URLEncode ("Domino"; Subject) +

@If(

AppointmentType="1" | AppointmentType="2" ;

"&dates=" + startDate + "/" + endDate ;

"&dates=" + startDate +"T" + startTime + "Z/" + endDate + "T" + endTime +"Z"

) +

"&location=" + @URLEncode ("Domino"; Location) +

"&trp=true&sprop=&sprop=name:" +

"&details=" + @URLEncode("Domino"; details )

)

furuyan_jpfuruyan_jp 2007/02/08 18:50 2007.2.8現在、4行目は
gtimezone := ”Z=-18$DO=0”;
で日本時間で登録できています。

ひでまるひでまる 2007/03/07 21:45 furuyam.jp さんの設定の場合は、1日のスケジュールが前日にずれてしまう事があるようですので、オリジナルに戻して使っています。 ありがとうございます。

furuyan_jpfuruyan_jp 2007/04/03 12:19 時々”Bad Request”となって登録できない不具合を修正しました。
http://d.hatena.ne.jp/furuyan_jp/20070403
を参照ください。

ひでまるひでまる 2007/04/11 15:57 今になって気がつきました。確かに、ご指摘のエラーも見たことがありました。その後で開いて、手で入力していました。 早速新しいものへ入れ替えてみます。 ありがとうございます。