在googleCal api中获取所有日历中的活动时间



我要做的事情:

从工作日历中获取所有日历中所有事件的开始时间(如果只是企业"所有者"所在的日历,则可以(。现在我已经连接到"primary",但我需要它包含所有内容。

calendar.events
.list({
auth: auth,
calendarId: CAL_ID,
timeMin: date,
showDeleted: false,
singleEvents: true,
maxResults: 20,
orderBy: 'startTime',
})
.then((data) =>
res.status(200).send(data),
)

看了这些文档后,似乎没有办法将多个日历Id放入calendar.events.list。我不能只将calendarId:[calId1,calId2]。

那么,这是否意味着我必须对每个日历打多个电话才能找到所有事件的时间?

其他信息:我使用的是一个服务帐户,刚从Oauth切换过来,所以也许还有其他事情我可以做。

检查此线程中是否存在与您类似的问题。我还查看了calendars.events.list的文档,API调用似乎每次调用只能处理一个calendarID,解决方案是您制作一个caleendarList.list来检索您要查找的帐户的calendarID.然后使用calendars.events.list与每个Id循环。

编辑:我能够运行这个代码,它获取我的帐户拥有的所有日历的calendarID,并列出前5个事件:

function listCalendarEvents() {
var calendars;
var pageToken;
do {
calendars = Calendar.CalendarList.list({
maxResults: 100,
pageToken: pageToken  
});
if (calendars.items && calendars.items.length > 0) {
for (var i = 0; i < calendars.items.length; i++) {
var calendar = calendars.items[i];
Logger.log('%s (ID: %s)', calendar.summary, calendar.id); // retrieves the calendar information along with the calendar ID
var calendarId = calendar.id; // assigning the calendar ID from the loop.
var now = new Date();
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
singleEvents: true,
orderBy: 'startTime',
maxResults: 5
});
if (events.items && events.items.length > 0) { //loop to retrieve the 5 events
for (var j = 0; j < events.items.length; j++) {
var event = events.items[j];
if (event.start.date) {
// All-day event.
var start = new Date(event.start.date);
Logger.log('%s (%s)', event.summary, start.toLocaleDateString());
} else {
var start = new Date(event.start.dateTime);
Logger.log('%s (%s)', event.summary, start.toLocaleString());
}
}
} else {
Logger.log('No events found.');
}
}
} else {
Logger.log('No calendars found.');
}
pageToken = calendars.nextPageToken;
} while (pageToken);
}

最新更新