在 Javascript 中将事件从 calendarList 导入 gcal API 中的主日历
Import events from a calendarList to primary calendar in gcal API in Javascript
- 我在 Google 日历 API 中使用示例文档。我可以看到我所有的日历事件,但我就是找不到使用 Javascript 将 calendarList 中的数据合并到当前数据的方法。
这是我的:
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
这里有一个简单的例子来说明如何做到这一点。
- 创建日历事件数组
- 使用 calendar.events.list() 方法列出日历事件
- 将结果数据添加到 calendarEvents
- 打印您的数据
// 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
是 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 }
}
]
我希望这些例子能让事情更清楚。
如果出现问题,您始终可以使用位于 Google Calendar API Reference 页面
右侧的 Try This Api 直接在浏览器中测试您的请求
参考文献:
- 我在 Google 日历 API 中使用示例文档。我可以看到我所有的日历事件,但我就是找不到使用 Javascript 将 calendarList 中的数据合并到当前数据的方法。
这是我的:
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
这里有一个简单的例子来说明如何做到这一点。
- 创建日历事件数组
- 使用 calendar.events.list() 方法列出日历事件
- 将结果数据添加到 calendarEvents
- 打印您的数据
// 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
是 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 }
}
]
我希望这些例子能让事情更清楚。 如果出现问题,您始终可以使用位于 Google Calendar API Reference 页面
右侧的 Try This Api 直接在浏览器中测试您的请求