1

C# Google API を使用して、アプリケーション (asp.net mvc - C#) から定期的なイベントをプログラムで追加しています。以下はそのコードです (2012 年 12 月 1 日に開始し、2012 年 12 月 3 日に終了する毎日のイベントを追加しています):

GOAuthRequestFactory authFactory = new GOAuthRequestFactory("cl", "MyApp");
authFactory.ConsumerKey = "xxxx";
authFactory.ConsumerSecret = "yyyy";
authFactory.Token = "zzzz";
authFactory.TokenSecret = "ssss";
Google.GData.Calendar.CalendarService service = new Google.GData.Calendar.CalendarService(authFactory.ApplicationName);
service.RequestFactory = authFactory;

EventEntry entry = new EventEntry();
entry.Title.Text = "Year End Meeting";

Recurrence recur = new Recurrence();
recur.Value = "DTSTART;VALUE=DATE:20121201\r\nDTEND;VALUE=DATE:20121201\r\nRRULE:FREQ=DAILY;UNTIL=20121203;INTERVAL=1";
entry.Recurrence = recur;

Uri postUri = new Uri("https://www.google.com/calendar/feeds/default/private/full");
EventEntry insertedEntry = service.Insert(postUri, entry);
if (insertedEntry != null && !string.IsNullOrEmpty(insertedEntry.EventId))
{
   //Update the Google Event Id to the Event Table
    this.UpdateGoogleEventId(_userId, _eventId, insertedEntry.EventId);
}

これまではすべてうまくいきます。ここで、定期的なイベントから特定のイベント (このインスタンスのみ) を更新する必要があります。例の場合; 2012 年 12 月 2 日のイベントのタイトルを「来年の計画」に変更する必要があります。同様に、次のすべてのイベント、この一連の更新アクションのすべてのイベントについても同じことを行う必要があります。私は、Google イベント ID (定期的なイベントを作成するときの応答にある) に基づいてすべてのイベントを削除してから、イベントを再度作成していましたが、これは一種の二重作業です。

これは、すべての定期的なイベントを削除し、上記のように作成する方法です。

Uri delteUri = new Uri("https://www.google.com/calendar/feeds/default/private/full/" + googleeventid);
EventQuery deleteQuery = new EventQuery(delteUri.ToString());
EventFeed deleteFeed = service.Query(deleteQuery);
if (deleteFeed.Entries.Count > 0)
{
   AtomEntry eve = deleteFeed.Entries[0];
   if (eve != null)
   {
       service.Delete(eve);
   }
}

必要な条件 (このインスタンスのみ、次のすべて、このシリーズのすべてのイベント) に基づいてインスタンスのみを更新する最善の方法は何ですか?

4

1 に答える 1