Импортировать события из calendarList в основной календарь в gcal API в Javascript - PullRequest
1 голос
/ 14 января 2020
  • Я использую образец документа в API Календаря Google. Я вижу все свои события в календаре, но я просто не могу найти способ объединить данные из CalendarList с текущими данными, используя Javascript.

Вот что у меня есть:

function listUpcomingEvents() {
    gapi.client.calendar.events.list({
      'calendarId': 'primary',
      'timeMin': (new Date()).toISOString(),
      'showDeleted': false,
      'singleEvents': true,
      'maxResults': 10,
      'orderBy': 'startTime'
    })
    .then(function(response) {
      var events = response.result.items;
      appendPre('');

      if (events.length > 0) {
        for (i = 0; i < events.length; i++) {
          var event = events[i];
          var when = event.start.dateTime;

          var calEventTitle = event.summary;
          var eventStatus = event.status;
          if (!when) {
            when = event.start.date;
          }

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 14 января 2020

если вы хотите merge calendar events до вашего local variable, вот простой пример того, как это сделать.

  1. Создание массива calendarEvents
  2. Список событий календаря с помощью calendar.events.list () method
  3. Добавление данных результатов в calendarEvents
  4. Распечатайте свои данные
// 1
let calendarEvents = []; 

function listEvents(auth){

  const calendar = google.calendar({version: 'v3', auth});
// 2
  calendar.events.list({

    calendarId: 'primary',
    timeMin: "2020-1-1T22:00:00.000Z",
    maxResults: 10,
    singleEvents: true,
    orderBy: 'startTime'

  }, (err, res) => {

    if (err) return console.log('Error #1001 - The Calendar API returned an error: ' + err);

// 3
    const events = res.data.items;    
    if (events.length) {
      events.map((event, i) => {
        const start = event.start.dateTime || event.start.date;
        calendarEvents.push(`\n ${start} - ${event.summary}`);
      });
// 4      
    console.log(calendarEvents)

    } else {
      console.log('No upcoming events found.');
    }

  });

}

Если вы хотите update calendar event, вы можете использовать calendar.events.update ()

Вот простой пример:


function updateEvent(auth){

  const calendar = google.calendar({version: 'v3', auth});

  calendar.events.update({
      "calendarId": "primary",
      "eventId": "___eventId___", // how to get eventId, scroll down
      "resource": {
        "start": {
          "dateTime": "2020-01-15T05:00:00-05:00"
        },
        "end": {
          "dateTime": "2020-01-15T06:00:00-05:00"
        },
        "location": "Updated location",
        "summary": "Updated summary",
        "attendees": [
          {
            "email":"updatedEmail@gmail.com"
          }
        ]
      }

  }, (err, res) => {

    if (err) return console.log('Error #1002 - The Calendar API returned an error: ' + err);

  });

}


Как получить eventId?

Использовать метод events.list () и в ответ использовать console.log (res.data.items.events), вот пример:

function listEvents(auth) {

  const calendar = google.calendar({version: 'v3', auth});
  calendar.events.list({
    calendarId: 'primary',
    timeMin: "2020-1-1T22:00:00.000Z",
    maxResults: 10,
    singleEvents: true,
    orderBy: 'startTime',
  }, (err, res) => {

    if (err) return console.log('Error #1001 - The Calendar API returned an error: ' + err);

        const events = res.data.items;
        console.log(events);

  });

}

и это вывод, у меня только 1 событие,

, поэтому id is 12sv34jssjjov56jq7c8vlbjkd

[
  {
    kind: 'calendar#event',
    etag: '"3157989414186000"',
    id: '12sv34jssjjov56jq7c8vlbjkd',
    status: 'confirmed',
    htmlLink: 'https://www.google.com/calendar/event?eid=blablabla',
    created: '2020-01-14T09:23:46.000Z',
    updated: '2020-01-14T09:38:27.093Z',
    summary: 'Updated summary',
    location: 'Updated location',
    creator: { email: 'myEmail@gmail.com', self: true },
    organizer: { email: 'myEmail@gmail.com', self: true },
    start: { dateTime: '2020-01-15T05:00:00-05:00' },
    end: { dateTime: '2020-01-15T06:00:00-05:00' },
    iCalUID: 'myEmail@gmail.com',
    sequence: 1,
    attendees: [ [Object] ],
    hangoutLink: 'https://meet.google.com/123-4567-890',
    conferenceData: {
      entryPoints: [Array],
      conferenceSolution: [Object],
      conferenceId: '123-4567-890',
      signature: '32ipslWNrbuVDju4rHvyOpVzH/gj'
    },
    reminders: { useDefault: true }
  }
]

Надеюсь, эти примеры прояснят ситуацию. Если что-то пойдет не так, вы всегда можете проверить свой запрос непосредственно в браузере, используя Try This Api, который расположен в правой части Справочник по API Календаря Google страница

enter image description here

Ссылки:

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