【问题标题】:Microsoft Graph API - CalendarView Delete EventMicrosoft Graph API - CalendarView 删除事件
【发布时间】:2018-06-24 06:35:35
【问题描述】:

我正在尝试删除/取消从给定会议室的 CalendarView API 中提取的事件。我有事件 ID 并正在尝试以下操作:

graphClient.Users["conferenceroom@tenant.com"]
   .CalendarView[eventId]
   .Request(options)
   .DeleteAsync()

收到以下错误消息:

Message: The OData request is not supported.

不能从CalendarView 中删除/取消关联吗?

我注意到当我(在我的用户下)创建事件时,它具有不同的ID,而不是从CalendarView 中提取相同的event

想法?在为每个会议室拉CalendarView 时,我不会知道组织者Events 的上下文,对吗?

【问题讨论】:

    标签: microsoft-graph-api


    【解决方案1】:

    要删除事件,您需要使用 /events 段,而不是 /calendarview。您可以从日历视图中获取 ID,然后执行以下操作:

    graphClient.Users[""].Events[eventId].Request().DeleteAsync();
    

    【讨论】:

    • 我看到的是,当我创建活动时,我将自己和会议室电子邮件都包含为与会者。我得到一个事件 ID。然后,当我为该会议室提取日历视图事件时,它是一个不同的 ID。
    • 我在我的电子邮件而不是会议室电子邮件下创建活动。
    • 事件的id 可以更改。如果您正在寻找可以存储的唯一标识符,则应使用iCalUId 属性而不是id。请注意,您无法根据iCalUid 删除,但您可以使用/events?$filter=iCalUId eq '{value}' 快速查找事件的id
    • @MarcLaFleur 谢谢!我将如何使用 .NET 图形包装器进行过滤?我试过这个,但不确定我在那里: .Events.Request().Expand($"singleValueExtendedProperties($filter=iCalUId eq '{eventId}')").GetAsync()
    • iCalUid 不是扩展属性。您可以使用Events.Request().Filter("iCalUid eq '{iCalUid}').GetAsync() 进行过滤
    【解决方案2】:

    基本代码示例:

                var query = new List<Microsoft.Graph.Option>()
                     {
                      new Microsoft.Graph.QueryOption("$filter", $"iCalUId eq '{eventId}'")
                     };
    
                var events = await graphClient.Users[User.Identity.Name].Events.Request(query).GetAsync();
    
                var evt = events.First();
    
                await graphClient.Users[User.Identity.Name].Events[evt.Id].Request().DeleteAsync();
    

    【讨论】:

    • 不行,你觉得可能有什么问题?
    猜你喜欢
    • 2022-08-26
    • 2022-12-07
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多