6

Googleカレンダーに終日イベントがあり、それを引っ張って1時間のイベントに変更し、パッチイベントを作成してプッシュバックしました。私が理解しているように、終日のイベントには日付として「開始」があり、次の日付として「終了」があります。期間限定のイベントはDateTimeのものがあります。

したがって、私のパッチでは、これらの値を Date から DateTime に変更してみました。ただし、「開始時刻と終了時刻が無効または一致しません」というエラーが常に表示されます。

Google カレンダー API サイト ( https://developers.google.com/google-apps/calendar/v3/reference/events/patch#try-it ) でこれを手動で試してみまし たが、同じエラーが発生しました。期間限定のイベントを取って修正しても問題ありません。これは API 自体のバグだと思います。誰もがそれを経験し、回避策は何ですか? 前もって感謝します。

4

2 に答える 2

13

更新: これは、Google 開発チームから受け取ったものです。sb に役立つことを願っています:

stanc...@google.com による問題 3110 に関するコメント #4: 終日から非終日へのイベントのパッチ適用に失敗しました http://code.google.com/a/google.com/p/apps-api-問題/問題/詳細?id=3110

パッチ操作は元のイベントを取得し、要求によって指定されたエントリを変更/追加/削除します。終日イベントに対する PATCH 操作に次のリクエストを送信した場合:

{
 "start": {
  "dateTime": "2012-05-17T06:30:00+06:30",
  "timeZone": "UTC"
 },
 "end": {
  "dateTime": "2012-05-17T07:30:00+06:30",
  "timeZone": "UTC"
 }
}

結果のイベントは、dateTime フィールドと date フィールドの両方が設定された状態になります (これは許可されていません)。したがって、PATCH リクエストは日付フィールドをクリアする必要があります。

{
 "start": {
  "dateTime": "2012-05-17T06:30:00+06:30",
  "timeZone": "UTC",
  "date": null
 },
 "end": {
  "dateTime": "2012-05-17T07:30:00+06:30",
  "timeZone": "UTC",
  "date": null
 }
}

コードでは、フィールド Date を null に設定する場合は、次のようにする必要がありますData.NULL_DATE_TIME

EventDateTime edt = new EventDateTime();
edt.put("date",Data.NULL_DATE_TIME);// if you put NULL, it doesn't retain.
edt.put("dateTime", newTime); //newTime is the new value you want to set, type DateTime
于 2012-12-20T02:22:22.190 に答える
0

パッチhttps://github.com/google/google-api-php-client/pull/484を使用して ください。

于 2015-02-16T11:32:24.997 に答える