定期的なイベントのインスタンスのすべて (またはサブセット) を更新する適切な方法は何ですか? 関連: 元のイベントの ID を指定して、そのイベントのインスタンスを取得するにはどうすればよいですか?
4 に答える
定期的なイベントのサブセットのみを更新する場合は、クエリを実行してイベントの初期リストを取得するときに、singleevents = true を設定する必要があります。PHPでは、次のようなことをします
$gdataCal = new Zend_Gdata_Calendar($client);
$query = $gdataCal->newEventQuery();
$query->setUser('default');
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setStartMin($startDate);
$query->setStartMax($endDate);
$query->setSingleEvents('true'); //get recurring events as a series of single events
$eventFeed = $gdataCal->getCalendarEventFeed($query);
foreach ($eventFeed as $event) {
//do stuff with $event
}
すべての繰り返しイベントを更新してみましたが、機能しています。最初は、2016-02-25 から 2016-03 25 までの月曜日に毎週のような繰り返しイベントを 1 つ作成し、その繰り返し期間に 6 つのインスタンスを作成しました。 、
1.最初に Recurrence フィールドに割り当てた "recurrence":["RRULE:FREQ=WEEKLY;COUNT=18;BYDAY=TU"] (毎週火曜日に更新)
2.その後、list google api.here を使用して利用可能なリストをフェッチします。
3. update イベントを使用して、auth、eventId および calendarId: "primary" および resource:updated イベント配列を渡すように更新した後
火曜日に毎週インスタンスを更新しています。
それが誰かに役立つことを願っています。
この問題を抱えている人のために、私もこれを理解しようと時間を費やしました。基本的に、CalendarEventEntryリストを取得するときは、各calendarEventEntryにoriginalEvent(calendarEventEntry.getOriginalEvent())があるかどうかを確認する必要があります。これは基本的に、この現在のcalendarEventEntryの情報と交換する必要がある別のイベント(すでに処理されている場合とされていない場合があります)があることを示しています。
すべてを更新するには、イベントに関連するプロパティを変更し、繰り返しと繰り返しの例外文字列はそのままにします。サブセットによっては、定期的なイベントを複数の新しいイベントに変換する必要があるため、サブセットを簡単に変更できるかどうかはわかりません。
APIドキュメントによると、2番目の部分またはあなたの質問について:
具体的には、繰り返し発生する各イベントは結果フィード内の要素によって表され、これらの各要素には、開始時刻と終了時刻の間に該当するイベントが発生するたびに要素が含まれます。要素を調べることは、繰り返しや例外を自分で解析するよりもはるかに簡単です。
しかし、「いつ」という魔法を見つけることができなかったので、recurrence および recurrenceexceptions 文字列を解析することになりました。その答えが見つかったら、お知らせください。