C# 取消删除Google日历事件

C# 取消删除Google日历事件,c#,google-calendar-api,C#,Google Calendar Api,我有一个在谷歌日历中创建事件的c应用程序。出于自身目的,它控制事件的UID,有时还想删除和重新创建事件 尝试使用与已删除事件相同的UID重新创建事件时,远程服务器返回错误:409冲突 我可以通过向请求URL发送?showdeleted=true&showhidden=true来查看已删除的事件 但是,我在API中没有看到任何允许我在检索已删除事件后取消删除它们的内容 有什么建议吗 更新: 试一下Jay建议我做些 var service = new CalendarService(); servi

我有一个在谷歌日历中创建事件的c应用程序。出于自身目的,它控制事件的UID,有时还想删除和重新创建事件

尝试使用与已删除事件相同的UID重新创建事件时,远程服务器返回错误:409冲突

我可以通过向请求URL发送?showdeleted=true&showhidden=true来查看已删除的事件

但是,我在API中没有看到任何允许我在检索已删除事件后取消删除它们的内容

有什么建议吗

更新:

试一下Jay建议我做些

var service = new CalendarService();
service.setUserCredentials("XXX", "XXX");
var query = new CalendarQuery { Uri = new Uri("http://www.google.com/calendar/feeds/default/owncalendars/full") };
var cal = service.Query(query).Entries
    .Select (e => new { Title = e.Title.Text, Uri = e.SelfUri, 
        Id = e.SelfUri.Content.Split('/').Last () } )
    .Single (e => e.Title == calendarName);
var eventQuery = new EventQuery(string.Format(@"http://www.google.com/calendar/feeds/{0}/private/full?showdeleted=true&showhidden=true", cal.Id));
var evs = service.Query(eventQuery).Entries.Cast<EventEntry>().ToList();
evs[0].Status = EventEntry.EventStatus.CONFIRMED;
service.Update(ev[0]);
远程服务器返回了一个错误:404未找到。

您可以通过将其状态属性从“已取消”更改为“已确认”来取消删除

你可以在手术室里亲自尝试。您需要打开OAuth授权,然后输入日历和事件ID。

似乎

远程服务器返回错误:404未找到

是因为EventEntry.EditUri无法找到已删除/隐藏的事件

这可以通过在EntryEvent.Update之前将?showdelected=true&showhidden=true添加到EditUri来修复

大致如下:

var evs = service.Query(eventQuery).Entries.Cast<EventEntry>().ToList();
evs[0].Status = EventEntry.EventStatus.CONFIRMED;
evs[0].EditUri.Content = evs[0].EditUri.Content + "?showdeleted=true&showhidden=true";
evs[0].Update();

最后一行应该是service.Updateevs[0]?看起来您缺少evs中的。此外,如果您已经知道事件ID,那么没有理由先进行查询,您应该能够提交状态更改后的更新/补丁。不幸的是,这似乎不再有效?