gcalapiで"Invalid date/time value"(GoogleCalendar::EventInsertFailed)

rubyからGoogleCalendarにアクセスできるgcalapiを使ったアプリケーションを書いているのですが、こんなエラーが出て苦労しました。

/usr/lib/ruby/gems/1.8/gems/gcalapi-0.1.1/lib/googlecalendar/event.rb:130:in `save!': [Line 8, Column 106, element gd:when] Invalid date/time value. (GoogleCalendar::EventInsertFailed)
from mail2gcal.rb:87:in `from_mail'
from mail2gcal.rb:102
from /usr/lib/ruby/1.8/net/pop.rb:528:in `each'
from /usr/lib/ruby/1.8/net/pop.rb:528:in `each_mail'
from mail2gcal.rb:97
要するに、GoogleCalendarにポストしたら "Invalid date/time value"といわれました、ということらしい。
Googleのドキュメントをあさると、
Invalid date/time value
The value you entered is not a valid date/time. Please enter a date and time in the correct format: YYYY-MM-DDThh:mm:ss. For example, "1975-09-25T06:20:00" is a valid date/time value, but "June 2005 5pm" is not.
(Invalid date/time value | Google Base Help Centre)
というのを発見。

「DateTimeは"1975-09-25T06:20:00"のフォーマットで渡してね」ということ。
そんなこと言われてもgcalapiにはDate型を渡しているし、うまくいく場合もあるからgcalapi側が変な形式のデータを渡しているとは考えにくい。ソース見ても、dt.iso8601 ってやっているし。


 試行錯誤した結果、 event.enを渡さないとエラーになるらしいことが判明。
event.st = Time.parse(yaml["st"].to_s) if yaml.has_key?("st")
# event.en = Time.parse(yaml["en"].to_s) if yaml.has_key?("en")

 gcalapiのサンプルについているmail2gcalに対して、
st: 2008-09-06 19:20:36
title: title of an event
desc: description of an event
where: location of an event
というメールを投げると再現します。

gcalapiとしては、開発者が渡したデータを適切に変換してGoogleCalendarに渡して、その結果帰ってきたエラーを適切に報告していただけているのだから、別にgcalapiが悪いわけじゃないと思うのですが。はまったので一応メモということで。

こういうのを調べるとき、原因がgcalapiや自分のアプリにあるのか、それともGoogleCalendarにあるのか切り分けるために、gcalapiがポストしたデータを見る方法ってないものでしょうか。パケットキャプチャ以外で。

カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: gcalapiで"Invalid date/time value"(GoogleCalendar::EventInsertFailed)

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/630

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2008年9月 6日 20:38に書いたブログ記事です。

ひとつ前のブログ記事は「 atom形式のページをFirefoxで見る 」です。

次のブログ記事は「 MextractrAPIを使ってみた。 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type