Office365 如何知道已删除哪些重复事件?

Office365 如何知道已删除哪些重复事件?,office365,office365api,office365-restapi,Office365,Office365api,Office365 Restapi,我的应用程序订阅了名为ConferenceRoom的office365日历。因此,当创建/修改/删除事件时,office365服务器将向我的应用程序发送通知,告知发生了这三种情况 在日历中,我为每周一创建定期事件站立会议(通过浏览器)。在此之后,我的应用程序收到带有ChangeType:Created的通知,下面是该通知事件的重复部分: Recurrence: { Pattern: { Type: 'Weekly', Interval: 1, Month: 0,

我的应用程序订阅了名为ConferenceRoom的office365日历。因此,当创建/修改/删除事件时,office365服务器将向我的应用程序发送通知,告知发生了这三种情况

在日历中,我为每周一创建定期事件站立会议(通过浏览器)。在此之后,我的应用程序收到带有
ChangeType:Created
的通知,下面是该通知事件的重复部分:

Recurrence:
 { Pattern:
    { Type: 'Weekly',
      Interval: 1,
      Month: 0,
      DayOfMonth: 0,
      DaysOfWeek: [Object],
      FirstDayOfWeek: 'Sunday',
      Index: 'First' },
   Range:
    { Type: 'NoEnd',
      StartDate: '2016-09-12',
      EndDate: '0001-01-01',
      RecurrenceTimeZone: 'FLE Standard Time',
      NumberOfOccurrences: 0 } },
以及该事件的全部数据(从通知中获得的id):

以下是我在日历中具体做了什么的图片:

您能告诉我如何知道该事件的哪个事件被删除了吗

这似乎是一条死胡同,所以任何帮助都将不胜感激


仅供参考:定期事件只有一个eventId,删除一次定期事件不会发送带有
ChangeType:DELETED

的通知。不幸的是,API当前不让您知道哪个事件已被删除。但是,当删除单个引用时,它会触发SeriesMaster上的更新。当此更新到来时,您必须计算所有会议应在何时举行,然后获取所有会议。在对这些事件进行迭代之后,您可以推断哪些事件已从先前的计算中删除。由于您的会议每周重复一次,因此您需要限制您请求会议发生的时间范围


如果使用Python,我可以强烈推荐dateutil包,它附带一个方便的rrule类:

你能添加删除一个事件时得到的
ChangeType:Updated
的确切结果吗?@jehna1在创建和更新后添加了事件数据。我知道这已经有一段时间了,但这个答案对你有帮助吗?好的,那么你的意思是我必须获取这些日期的所有事件,当我假设重复发生的事件应该发生,然后匹配,如果这些天存在此事件?我想我理解这一点,这是正确的,但要确保以下步骤再次出现:1。收到定期会议(SeriesMaster)的更新后,通过查看SeriesMaster[“定期”]计算所有预期事件。2.通过向/me/events/{event\u id}/instances发出GET请求,实际获取所有事件?startDateTime={start\u datetime}&endDateTime={end\u datetime}3。将2中返回的列表与1中计算的列表进行比较。第二个列表中任何缺失的事件都是已删除的事件。
{ '@odata.context': 'https://outlook.office.com/api/v2.0/$metadata#Users(\'2ce6a929-0b04-40fb-9c73-d812370e0d46%40ea38f869-d755-40c7-9c95-e6277325b7ae\')/Events/$entity',
  '@odata.id': 'https://outlook.office.com/api/v2.0/Users(\'2ce6a929-0b04-40fb-9c73-d812370e0d46@ea38f869-d755-40c7-9c95-e6277325b7ae\')/Events(\'AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT-M8JoV8TI5B1BhmG2N_BwBi3Yqq_sjMSYdHHux_aUXFAAAAAAFZAABi3Yqq_sjMSYdHHux_aUXFAAAMNRbUAAA=\')',
  '@odata.etag': 'W/"Yt2KqvrIzEmHRx7sfmlFxQAADDdF3g=="',
  Id: 'AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT-M8JoV8TI5B1BhmG2N_BwBi3Yqq_sjMSYdHHux_aUXFAAAAAAFZAABi3Yqq_sjMSYdHHux_aUXFAAAMNRbUAAA=',
  CreatedDateTime: '2016-09-13T03:55:43.5305953-02:00',
  LastModifiedDateTime: '2016-09-13T03:55:43.5476101-02:00',
  ChangeKey: 'Yt2KqvrIzEmHRx7sfmlFxQAADDdF3g==',
  Categories: [],
  OriginalStartTimeZone: 'FLE Standard Time',
  OriginalEndTimeZone: 'FLE Standard Time',
  ResponseStatus: { Response: 'Organizer', Time: '0001-01-01T00:00:00Z' },
  iCalUId: '040000008200E00074C5B7101A82E00800000000F9B6FC76830DD2010000000000000000100000005D7D5B0B8D1EA84E86C8AEE4014697CA',
  ReminderMinutesBeforeStart: 15,
  IsReminderOn: true,
  HasAttachments: false,
  Subject: 'standup meeting',
  Body:
   { ContentType: 'HTML',
     Content: '<html>\r\n<head>\r\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r\n<meta content="text/html; charset=us-ascii">\r\n<style type="text/css" style="display:none">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style>\r\n</head>\r\n<body dir="ltr">\r\n<div id="divtagdefaultwrapper" style="font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif">\r\n<p><br>\r\n</p>\r\n</div>\r\n</body>\r\n</html>\r\n' },
  BodyPreview: '',
  Importance: 'Normal',
  Sensitivity: 'Normal',
  Start:
   { DateTime: '2016-09-12T03:00:00.0000000',
     TimeZone: 'Etc/GMT+2' },
  End:
   { DateTime: '2016-09-12T03:30:00.0000000',
     TimeZone: 'Etc/GMT+2' },
  Location: { DisplayName: '', Address: {}, Coordinates: {} },
  IsAllDay: false,
  IsCancelled: false,
  IsOrganizer: true,
  Recurrence:
   { Pattern:
      { Type: 'Weekly',
        Interval: 1,
        Month: 0,
        DayOfMonth: 0,
        DaysOfWeek: [ 'Monday' ],
        FirstDayOfWeek: 'Sunday',
        Index: 'First' },
     Range:
      { Type: 'NoEnd',
        StartDate: '2016-09-12',
        EndDate: '0001-01-01',
        RecurrenceTimeZone: 'FLE Standard Time',
        NumberOfOccurrences: 0 } },
  ResponseRequested: false,
  SeriesMasterId: null,
  ShowAs: 'Busy',
  Type: 'SeriesMaster',
  Attendees: [],
  Organizer:
   { EmailAddress:
      { Name: 'John Smith',
        Address: 'john.smith@sample.onmicrosoft.com' } },
  WebLink: 'https://outlook.office365.com/owa/?ItemID=AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT%2FM8JoV8TI5B1BhmG2N%2BBwBi3Yqq%2BsjMSYdHHux%2BaUXFAAAAAAFZAABi3Yqq%2BsjMSYdHHux%2BaUXFAAAMNRbUAAA%3D&exvsurl=1&viewModel=ICalendarItemDetailsViewModelFactory',
  'Calendar@odata.associationLink': 'https://outlook.office.com/api/v2.0/Users(\'2ce6a929-0b04-40fb-9c73-d812370e0d46@ea38f869-d755-40c7-9c95-e6277325b7ae\')/Calendars(\'AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT-M8JoV8TI5B1BhmG2N_BwBi3Yqq_sjMSYdHHux_aUXFAAAAAAEGAABi3Yqq_sjMSYdHHux_aUXFAAAAAA0jAAA=\')/$ref',
  'Calendar@odata.navigationLink': 'https://outlook.office.com/api/v2.0/Users(\'2ce6a929-0b04-40fb-9c73-d812370e0d46@ea38f869-d755-40c7-9c95-e6277325b7ae\')/Calendars(\'AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT-M8JoV8TI5B1BhmG2N_BwBi3Yqq_sjMSYdHHux_aUXFAAAAAAEGAABi3Yqq_sjMSYdHHux_aUXFAAAAAA0jAAA=\')' }
{ '@odata.context': 'https://outlook.office.com/api/v2.0/$metadata#Users(\'2ce6a929-0b04-40fb-9c73-d812370e0d46%40ea38f869-d755-40c7-9c95-e6277325b7ae\')/Events/$entity',
  '@odata.id': 'https://outlook.office.com/api/v2.0/Users(\'2ce6a929-0b04-40fb-9c73-d812370e0d46@ea38f869-d755-40c7-9c95-e6277325b7ae\')/Events(\'AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT-M8JoV8TI5B1BhmG2N_BwBi3Yqq_sjMSYdHHux_aUXFAAAAAAFZAABi3Yqq_sjMSYdHHux_aUXFAAAMNRbUAAA=\')',
  '@odata.etag': 'W/"Yt2KqvrIzEmHRx7sfmlFxQAADDdF3w=="',
  Id: 'AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT-M8JoV8TI5B1BhmG2N_BwBi3Yqq_sjMSYdHHux_aUXFAAAAAAFZAABi3Yqq_sjMSYdHHux_aUXFAAAMNRbUAAA=',
  CreatedDateTime: '2016-09-13T03:55:43.5305953-02:00',
  LastModifiedDateTime: '2016-09-13T03:57:48.2229052-02:00',
  ChangeKey: 'Yt2KqvrIzEmHRx7sfmlFxQAADDdF3w==',
  Categories: [],
  OriginalStartTimeZone: 'FLE Standard Time',
  OriginalEndTimeZone: 'FLE Standard Time',
  ResponseStatus: { Response: 'Organizer', Time: '0001-01-01T00:00:00Z' },
  iCalUId: '040000008200E00074C5B7101A82E00800000000F9B6FC76830DD2010000000000000000100000005D7D5B0B8D1EA84E86C8AEE4014697CA',
  ReminderMinutesBeforeStart: 15,
  IsReminderOn: true,
  HasAttachments: false,
  Subject: 'standup meeting',
  Body:
   { ContentType: 'HTML',
     Content: '<html>\r\n<head>\r\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r\n<meta content="text/html; charset=us-ascii">\r\n<style type="text/css" style="display:none">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style>\r\n</head>\r\n<body dir="ltr">\r\n<div id="divtagdefaultwrapper" style="font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif">\r\n<p><br>\r\n</p>\r\n</div>\r\n</body>\r\n</html>\r\n' },
  BodyPreview: '',
  Importance: 'Normal',
  Sensitivity: 'Normal',
  Start:
   { DateTime: '2016-09-12T03:00:00.0000000',
     TimeZone: 'Etc/GMT+2' },
  End:
   { DateTime: '2016-09-12T03:30:00.0000000',
     TimeZone: 'Etc/GMT+2' },
  Location: { DisplayName: '', Address: {}, Coordinates: {} },
  IsAllDay: false,
  IsCancelled: false,
  IsOrganizer: true,
  Recurrence:
   { Pattern:
      { Type: 'Weekly',
        Interval: 1,
        Month: 0,
        DayOfMonth: 0,
        DaysOfWeek: [ 'Monday' ],
        FirstDayOfWeek: 'Sunday',
        Index: 'First' },
     Range:
      { Type: 'NoEnd',
        StartDate: '2016-09-12',
        EndDate: '0001-01-01',
        RecurrenceTimeZone: 'FLE Standard Time',
        NumberOfOccurrences: 0 } },
  ResponseRequested: false,
  SeriesMasterId: null,
  ShowAs: 'Busy',
  Type: 'SeriesMaster',
  Attendees: [],
  Organizer:
   { EmailAddress:
      { Name: 'John Smith',
        Address: 'john.smith@sample.onmicrosoft.com' } },
  WebLink: 'https://outlook.office365.com/owa/?ItemID=AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT%2FM8JoV8TI5B1BhmG2N%2BBwBi3Yqq%2BsjMSYdHHux%2BaUXFAAAAAAFZAABi3Yqq%2BsjMSYdHHux%2BaUXFAAAMNRbUAAA%3D&exvsurl=1&viewModel=ICalendarItemDetailsViewModelFactory',
  'Calendar@odata.associationLink': 'https://outlook.office.com/api/v2.0/Users(\'2ce6a929-0b04-40fb-9c73-d812370e0d46@ea38f869-d755-40c7-9c95-e6277325b7ae\')/Calendars(\'AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT-M8JoV8TI5B1BhmG2N_BwBi3Yqq_sjMSYdHHux_aUXFAAAAAAEGAABi3Yqq_sjMSYdHHux_aUXFAAAAAA0jAAA=\')/$ref',
  'Calendar@odata.navigationLink': 'https://outlook.office.com/api/v2.0/Users(\'2ce6a929-0b04-40fb-9c73-d812370e0d46@ea38f869-d755-40c7-9c95-e6277325b7ae\')/Calendars(\'AAMkADg5YzZmNTViLWM3NjEtNGI4Mi04Yjg4LTkyOWQ4NjFjM2QzOABGAAAAAAATT-M8JoV8TI5B1BhmG2N_BwBi3Yqq_sjMSYdHHux_aUXFAAAAAAEGAABi3Yqq_sjMSYdHHux_aUXFAAAAAA0jAAA=\')' }