3

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

当尝试使用与已删除事件相同的 UID 重新创建事件时,它会收到“远程服务器返回错误:(409)冲突。”

我可以通过将“?showdeleted=true&showhidden=true”附加到请求 URL 来查看已删除的事件。

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

有什么建议么?

更新:

尝试杰伊的建议我有类似的东西

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)未找到。”

4

3 回答 3

3

您可以通过将事件的属性从更改为来取消删除事件statuscancelledconfirmed

您可以通过Google API Explorer中的events.patch()操作自己尝试一下。您需要打开 OAuth 授权,然后输入日历和事件 ID。

于 2013-08-12T14:24:40.823 回答
0

看来,

远程服务器返回错误:(404) Not Found

是由于EventEntry.EditUri无法找到已删除/隐藏的事件。

EditUri这可以通过在 .之前附加 "?showdeleted=true&showhidden=true" 来解决EntryEvent.Update

类似于以下内容:

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();
于 2013-08-14T13:43:08.113 回答
0

在删除/取消一段时间前已删除的事件的 403 错误事件后,对状态属性的修补操作似乎失败。将状态设置为“已取消”或删除事件,然后将状态设置为“已确认”,以便新事件对我有用。此行为符合 API 文档:“此类取消的事件最终会消失,因此不要依赖它们无限期可用。删除的事件仅保证填充 id 字段。”。

约尔格

于 2022-02-27T07:55:08.293 回答