CalendarAPIを用いたイベントリストの取得について

1,205 views
Skip to first unread message

内田興輔

unread,
Mar 13, 2015, 2:04:36 AM3/13/15
to google-app...@googlegroups.com
初めまして、以下の様な事象が起きておりご助力頂けましたらと思い投稿しました。
使用言語:Java

CalendarAPIを使ってイベントのリストを取得しているのですが、
『2015-02-18T00:00:01.955+09:00』~『2015-02-18T00:15:01.360+09:00』の範囲でイベントのリストを取得した際に、
『2015-02-17』~『2015-02-18』の終日予約の情報も一緒に取得出来てしまうといった事象が起こりました。
リクエストした範囲には含まれないので取得されない認識ですが、何故取得できてしまうのでしょうか?
もし何か心当たりや情報等ございましたら、ご教示頂けますと幸いです。


(CalendarAPI問い合わせ箇所)
com.google.api.services.calendar.Calendar.Events.List list = calendar.events().list("対象のカレンダーID")
.setTimeZone("Asia/Tokyo")
.setPageToken(pageToken)
.setTimeMin(beforeDateTime)
.setTimeMax(nextDateTime)
.setSingleEvents(true);
list.setUnknownKeys(customMap);
com.google.api.services.calendar.model.Events events = list.execute();

-------------------------------------------------------------
DateTime beforeDateTime = new DateTime(startdate,TimeZone.getTimeZone("GMT+09:00"));
DateTime nextDateTime = new DateTime(enddate,TimeZone.getTimeZone("GMT+09:00"));

beforeDateTime.toString の出力結果は 2015-02-18T00:00:01.955+09:00
nextDateTime.toString の出力結果は 2015-02-18T00:15:01.360+09:00
(startdateとenddateにはjava.util.Date型の時刻が入っています)
-------------------------------------------------------------

Tatsuya Nakano

unread,
Mar 14, 2015, 10:36:36 AM3/14/15
to google-app...@googlegroups.com
中野です。

終日予定は昔から挙動がよくわからないんですよね・・・

2015-03-14で終日予定を作ってTimeMin,TimeMaxをそれぞれ指定して以下の様な挙動になります。
--------------------------------------
取得されない
2015-03-14T08:59:00+09:00
2015-03-14T09:00:00+09:00

取得される
2015-03-14T08:59:00+09:00
2015-03-14T09:01:00+09:00

取得される
2015-03-14T23:59:00+09:00
2015-03-15T00:01:00+09:00

取得されない
2015-03-15T00:00:00+09:00
2015-03-15T00:01:00+09:00
--------------------------------------

つまり日本時間3/14の9時〜24時までが検索対象となっているようにみえます。
ただしこの内容と内田さんが記載された内容とはまた違いますね。(4つ目の取得されないケースで取得されています)
何か見落としがあるのか、Googleのバグなのかわかりません。

私の場合
終日予定はプログラム上でレスポンスを見てフィルターをかけるようにしています。



2015年3月13日金曜日 15時04分36秒 UTC+9 内田興輔:

内田興輔

unread,
Mar 15, 2015, 8:43:08 PM3/15/15
to google-app...@googlegroups.com
中野様

返信ありがとうございます。

『日本時間3/14の9時〜24時までが検索対象となっているようにみえる』との情報ありがとうございます。
終日予定はおかしな挙動をしますね。。。

仰るとおり私のケースは、4つ目の取得されないケースに当てはまります。
もし宜しければ『レスポンスを見てフィルターをかけている』というところをご教示頂ければ幸いです。
TimeMin,TimeMaxを実際より広い範囲で指定して予約を取得し、
そのレスポンスから日付でフィルターを掛けて欲しい終日予定の情報を取得するといった感じでしょうか。


2015年3月14日土曜日 23時36分36秒 UTC+9 Tatsuya Nakano:

Tatsuya Nakano

unread,
Mar 16, 2015, 8:29:57 AM3/16/15
to google-app...@googlegroups.com

そんなイメージですね。

私が使う場合は1日単位で欲しいことがほとんどなので
3/14だったら
2015-03-14T00:00:00+09:00~2015-03-15T00:00:00+09:00で取得を掛けて
以下の条件でフィルターでしょうか。
start <= 2015-03-14 かつ 2015-03-14 < end
※連続した終日予定だと start:2015-03-10 end:2015-3-20とかになるのでそこだけ注意ですかね。



2015年3月16日月曜日 9時43分08秒 UTC+9 内田興輔:

内田興輔

unread,
Mar 16, 2015, 10:30:31 PM3/16/15
to google-app...@googlegroups.com
中野様
返信ありがとうございます。

終日予定の取得方法参考にさせて頂きます。
ありがとうございました。

ただ何故そのような取得結果になるのか?は気になるので引き続き調べていきたいと思います。


2015年3月16日月曜日 21時29分57秒 UTC+9 Tatsuya Nakano:
Reply all
Reply to author
Forward
0 new messages