0

私のプログラムでは、google-api-python-clientを使用してCalendarAPIに接続しています。次の3日間のイベントについて、次のようにクエリを実行します。

service = build(serviceName='calendar', version='v3', http=http)
events = service.events().list(
      calendarId=calendarId,
      timeMin='2013-01-04T00:00:00+01:00',
      timeMax='2013-01-06T00:00:00+01:00').execute()

結果は、Pythonディクショナリでモデル化されたイベントのリストであり、大まかに次のようになります(不要なデータをいくつか省略しました)。

{
     u'created': u'2012-11-26T00:54:43.000Z',
     u'description': u'abc abc',
     u'start': {u'dateTime': u'2012-11-26T08:00:00+01:00',
                u'timeZone': u'Europe/Copenhagen'},
     u'end': {u'dateTime': u'2012-11-26T10:00:00+01:00',
              u'timeZone': u'Europe/Copenhagen'},
     u'kind': u'calendar#event',
     u'recurrence': [u'RRULE:FREQ=DAILY'],
     u'sequence': 0
}

上記のイベントは数か月前に作成された定期的なイベントであり、「start」フィールドと「end」フィールドは作成日を反映しています。'timeMin'と'timeMax'の範囲で数回発生するため、結果のリストにはこのイベントのコピーがいくつかあります。

ここで、問題は、イベントが正確に発生したdateTimeがないことです(この場合は2013-01-04T00:08:00 + 01:00である必要があります)。Google Calendar APIからその時間を取得できるかどうか誰かが知っていますか(私はPythonパッケージを介してバージョン3を使用しています)?

または、クライアント側でそれを実装する方法を提案しますか?

4

2 に答える 2

0

開始フィールドと繰り返しフィールドを見てください。Python datetime APIを使用して、それが発生する日を計算します。

毎日の場合は、再発が終わるまで毎日。繰り返しフィールドには、イベントが繰り返される回数も含めることができるため、これを計算する必要があることに注意してください。これらの計算方法の詳細が必要な場合は、コードサンプルをまとめてハックできます。datetime APIは、日付への日数の追加などを処理できるため、計算が簡単であることに注意してください。また、2つの日付の差を計算できるため、すでに発生した回数も計算できます。

編集:以下のリンクをチェックしてください:

iCal繰り返し形式
日時のドキュメント

于 2013-01-03T19:47:55.580 に答える