Как правильно размещать ежегодные повторяющиеся события в API Microsoft Graph?

#javascript #microsoft-graph-api

Вопрос:

Я пытался публиковать повторяющиеся события ежегодно с помощью API Microsoft graph, с помощью этой простой полезной нагрузки я хочу публиковать события, которые повторяются ежегодно во вторник 3-й недели августа,

Я размещаю это так:

 async function simplePost(){
  event = {
    body: {
      content: "<p>Post from console</p>",
      contentType: "html"
    },
    end: {
      dateTime: "2021-08-17",
      timeZone: "Asia/Bangkok"
    },
    recurrence: {
      pattern: {
        daysOfWeek: ["Tuesday"],
        interval: 1,
        month: 8,
        type: "relativeYearly"
      },
      range:{
        endDate: "2025-08-17",
        startDate: "2021-08-17",
        type: "endDate",
      }
    },
    start:{
      dateTime: "2021-08-17",
      timeZone: "Asia/Bangkok"
    },
    subject: "No title - testing"
  }

  try {
    console.log(event)
   post =  await graphClient
      .api('/me/events')
      .post(event);
  
   console.log(post)

  } catch (error) {
    console.log(error)
  }

}
 

Это событие было успешно опубликовано, однако дата начала была указана неверно из полезной нагрузки, которую я опубликовал; дата начала события стала 2022-08-02T00:00:00.0000000 , но данные даты начала, которые я опубликовал, были "2021-08-17" . Я задался вопросом, почему это так неправильно; и я хочу, чтобы он правильно публиковался в качестве моих полезных данных. Спасибо.

Ответ №1:

Из полезной нагрузки вы создаете событие, которое: Происходит каждый год в первый вторник августа с Пн 8/1/2022 до Сб 8/16/2025. Вы можете увидеть больше о свойствах типа ресурсов RecurrencePattern и

Для начала я предлагаю вам указать метку времени события, потому что ваша дата начала совпадает с датой окончания. Например, есть 2021-08-17T12:00:00 до 2021-08-17T13:00:00 для одночасового события вместо 2021-08-17 до 2021-08-17.

Тем не менее, конечная точка возвращает следующее событие в вашей серии, которое в вашем случае 2022-08-02T00:00:00.0000000 и ожидается, что 2 августа 2021 года уже в прошлом.

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

 {
"subject": "Reapetes Yearly",
"body": {
    "contentType": "HTML",
    "content": "Repeating Eevent"
},
"start": {
    "dateTime": "2021-08-17T12:00:00",
    "timeZone": "Asia/Bangkok"
},
"end": {
    "dateTime": "2021-08-17T13:00:00",
    "timeZone": "Asia/Bangkok"
},
"recurrence": {
    "pattern": {
        "daysOfWeek": [
            "Tuesday"
        ],
        "interval": 1,
        "month": 8,
        "type": "relativeYearly"
    },
    "range": {
        "endDate": "2025-08-17",
        "startDate": "2021-08-17",
        "type": "endDate"
    }
},
"location": {
    "displayName": "Harry's Bar"
},
"attendees": [
    {
        "emailAddress": {
            "address": "chris@contoso.com",
            "name": "Chris Green"
        },
        "type": "required"
    }
]
 

}