Не в состоянии использовать Graph API для создания событий, которые импортируются из Google - PullRequest
0 голосов
/ 13 марта 2019

Я импортирую некоторые события в свой Календарь Outlook через файл , которые были созданы в Календаре Google.Импорт выполнен успешно, но я нахожу, что эти объекты событий отличаются от других событий, которые я создаю через пользовательский интерфейс Outlook.

Используя Graph Explorer, я вижу, что originalStartTimeZone и originalEndTimeZone в импортированном событии tzone://Microsoft/Customи recurrenceTimeZone - пустая строка.

{
  "@odata.etag": "W/\"jQw3WvygBke/Eeuel/y+PAACnR0HFQ==\"",
  "id": "AAMkADU2MzY5ODJlLWI2YjgtNDM5YS1iMWQzLTkxNWFlOTk3MjA3MABGAAAAAAAZitkJ2449ToBFAe4BGzZIBwCNDDda-KAGR78R656X-L48AAKczwuSAACNDDda-KAGR78R656X-L48AAKcz0NjAAA=",
  "createdDateTime": "2019-03-11T12:58:33.1040062Z",
  "lastModifiedDateTime": "2019-03-11T12:58:33.2340999Z",
  "changeKey": "jQw3WvygBke/Eeuel/y+PAACnR0HFQ==",
  "categories": [],
  "originalStartTimeZone": "tzone://Microsoft/Custom",
  "originalEndTimeZone": "tzone://Microsoft/Custom",
  "iCalUId": "040000008200E00074C5B7101A82E0080000000000000000000000000000000000000000320000007643616C2D55696401000000336A6C61316A6773666C6B766D70666F766D6D7365686439647240676F6F676C652E636F6D00",
  "reminderMinutesBeforeStart": 0,
  "isReminderOn": false,
  "hasAttachments": false,
  "subject": "Every Tue.",
  "bodyPreview": "",
  "importance": "normal",
  "sensitivity": "normal",
  "isAllDay": false,
  "isCancelled": false,
  "isOrganizer": true,
  "responseRequested": false,
  "seriesMasterId": null,
  "showAs": "busy",
  "type": "seriesMaster",
  "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADU2MzY5ODJlLWI2YjgtNDM5YS1iMWQzLTkxNWFlOTk3MjA3MABGAAAAAAAZitkJ2449ToBFAe4BGzZIBwCNDDda%2FKAGR78R656X%2FL48AAKczwuSAACNDDda%2FKAGR78R656X%2FL48AAKcz0NjAAA%3D&exvsurl=1&path=/calendar/item",
  "onlineMeetingUrl": null,
  "responseStatus": {
    "response": "organizer",
    "time": "0001-01-01T00:00:00Z"
  },
  "body": {
    "contentType": "html",
    "content": "<html><head><meta name=\"Generator\" content=\"Microsoft Exchange Server\">\r\n<!-- converted from text -->\r\n<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style></head>\r\n<body>\r\n<font size=\"2\"><span style=\"font-size:11pt;\"><div class=\"PlainText\">&nbsp;</div></span></font>\r\n</body>\r\n</html>\r\n"
  },
  "start": {
    "dateTime": "2018-08-13T22:00:00.0000000",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "2018-08-14T00:00:00.0000000",
    "timeZone": "UTC"
  },
  "location": {
    "displayName": "",
    "locationType": "default",
    "uniqueIdType": "unknown",
    "address": {},
    "coordinates": {}
  },
  "locations": [],
  "recurrence": {
    "pattern": {
      "type": "weekly",
      "interval": 1,
      "month": 0,
      "dayOfMonth": 0,
      "daysOfWeek": ["tuesday"],
      "firstDayOfWeek": "monday",
      "index": "first"
    },
    "range": {
      "type": "endDate",
      "startDate": "2018-08-14",
      "endDate": "2018-09-18",
      "recurrenceTimeZone": "",
      "numberOfOccurrences": 0
    }
  },
  "attendees": [],
  "organizer": {
    "emailAddress": {
      "name": "my@gsuite.com",
      "address": "my@gsuite.com"
    }
  }
}

Кроме того, когда я использую этот event объект в качестве тела запроса Создать Event API , он возвращает эту ошибку:

{
  "error": {
    "code": "TimeZoneNotSupportedException",
    "message": "A valid TimeZone value must be specified. The following TimeZone value is not supported: ''.",
    "innerError": {
      "request-id": "69f1a5de-1dbe-4caa-a996-15dc9190380c",
      "date": "2019-03-13T13:37:24"
    }
  }
}

Это ошибка при импорте .ics файлов или это ограничение API?

1 Ответ

1 голос
/ 15 марта 2019

Ответ такой же, как я дал на ваш вопрос Невозможно создать весь день, повторенный через Graph API :

Вы публикуете весь объект,включая несколько свойств только для чтения.Это всегда приведет к какому-то сбою.

При работе с Microsoft Graph (фактически, с большинством REST API) вы должны предоставить только свойства, которые хотите установить.

Для вышеупомянутого события вы бы отправили что-то вроде этого:

POST https://graph.microsoft.com/v1.0/me/events
{
  "isReminderOn": false,
  "subject": "Every Tue.",
  "importance": "normal",
  "sensitivity": "normal",
  "showAs": "busy",
  "body": {
    "contentType": "html",
    "content": "<html><head><meta name=\"Generator\" content=\"Microsoft Exchange Server\">\r\n<!-- converted from text -->\r\n<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style></head>\r\n<body>\r\n<font size=\"2\"><span style=\"font-size:11pt;\"><div class=\"PlainText\">&nbsp;</div></span></font>\r\n</body>\r\n</html>\r\n"
  },
  "start": {
    "dateTime": "2018-08-13T22:00:00.0000000",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "2018-08-14T00:00:00.0000000",
    "timeZone": "UTC"
  },
  "recurrence": {
    "pattern": {
      "type": "weekly",
      "interval": 1,
      "daysOfWeek": ["Tuesday"]
    },
    "range": {
      "type": "endDate",
      "startDate": "2018-08-14",
      "endDate": "2018-09-18"
    }
  }
}

Для дальнейшего использования в документации также есть опубликованный список поддерживаемых часовых поясов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...