在 Javascript 中将事件从 calendarList 导入 gcal API 中的主日历

Import events from a calendarList to primary calendar in gcal API in 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;
          }

如有任何帮助,我们将不胜感激。

如果你想 merge calendar events 到你的 local variable 这里有一个简单的例子来说明如何做到这一点。

  1. 创建日历事件数组
  2. 使用 calendar.events.list() 方法列出日历事件
  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 个事件,

所以 id12sv34jssjjov56jq7c8vlbjkd

[
  {
    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 }
  }
]

我希望这些例子能让事情更清楚。 如果出现问题,您始终可以使用位于 Google Calendar API Reference 页面

右侧的 Try This Api 直接在浏览器中测试您的请求

参考文献: