如何检索 Google 日历事件的扩展 属性?
How can I retrieve an extended property for a Google Calendar event?
我使用 PHP 将几个扩展属性添加到各种事件中。现在我想在 Google 表格中使用 Google Apps 脚本检索它们。我能够像这样访问日历、所有事件和标准数据元素:
var mycal = "... my calendar id ....";
var cal = CalendarApp.getCalendarById(mycal);
var events = cal.getEvents(new Date("January 12, 2015 00:00:00 CST"), new Date("January 18, 2017 23:59:59 CST"))
for (var i=0; i < events.length; i++) {
var myStart = events[i].getStartTime();
var myTitle = events[i].getTitle();
var myDesc = events[i].getDescription();
var myTalkNo = ??
}
如何在每个事件中查询名为 "talk-number" 的私有扩展 属性?
在 Google Apps 脚本中,您可以通过两种方式与 Google 日历交互;必须通过高级 Google 服务启用的 Calendar Service and the Advanced Calendar Service(又名日历 API)。
ACS 使用来自 Google Calendar API 的资源表示,因此 extendedProperties
可作为您可以通过 API 获得的事件对象的一部分。
这是对 ACS 文档中示例的简单修改,它将记录 "talk-number" 每个有事件的事件。
function listNext10Events() {
var calendarId = 'primary';
var now = new Date();
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
singleEvents: true,
orderBy: 'startTime',
maxResults: 10
});
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
if (event.start.date) {
// All-day event.
var start = parseDate(event.start.date);
Logger.log('%s (%s)', event.summary, start.toLocaleDateString());
} else {
var start = parseDate(event.start.dateTime);
Logger.log('%s (%s)', event.summary, start.toLocaleString());
}
/********************************************************************/
if (event.hasOwnProperty("talk-number"))
Logger.log(event.extendedProperties.private["talk-number"]);
/********************************************************************/
}
} else {
Logger.log('No events found.');
}
}
你可以用这个更新你的函数:
var eventId = events[i].getId().replace(/@.*/,''); // Remove @google.com from eventId
var event = Calendar.Events.get(calendarId, eventId)
myTalkNo = event.extendedProperties.private["talk-number"];
我使用 PHP 将几个扩展属性添加到各种事件中。现在我想在 Google 表格中使用 Google Apps 脚本检索它们。我能够像这样访问日历、所有事件和标准数据元素:
var mycal = "... my calendar id ....";
var cal = CalendarApp.getCalendarById(mycal);
var events = cal.getEvents(new Date("January 12, 2015 00:00:00 CST"), new Date("January 18, 2017 23:59:59 CST"))
for (var i=0; i < events.length; i++) {
var myStart = events[i].getStartTime();
var myTitle = events[i].getTitle();
var myDesc = events[i].getDescription();
var myTalkNo = ??
}
如何在每个事件中查询名为 "talk-number" 的私有扩展 属性?
在 Google Apps 脚本中,您可以通过两种方式与 Google 日历交互;必须通过高级 Google 服务启用的 Calendar Service and the Advanced Calendar Service(又名日历 API)。
ACS 使用来自 Google Calendar API 的资源表示,因此 extendedProperties
可作为您可以通过 API 获得的事件对象的一部分。
这是对 ACS 文档中示例的简单修改,它将记录 "talk-number" 每个有事件的事件。
function listNext10Events() {
var calendarId = 'primary';
var now = new Date();
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
singleEvents: true,
orderBy: 'startTime',
maxResults: 10
});
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
if (event.start.date) {
// All-day event.
var start = parseDate(event.start.date);
Logger.log('%s (%s)', event.summary, start.toLocaleDateString());
} else {
var start = parseDate(event.start.dateTime);
Logger.log('%s (%s)', event.summary, start.toLocaleString());
}
/********************************************************************/
if (event.hasOwnProperty("talk-number"))
Logger.log(event.extendedProperties.private["talk-number"]);
/********************************************************************/
}
} else {
Logger.log('No events found.');
}
}
你可以用这个更新你的函数:
var eventId = events[i].getId().replace(/@.*/,''); // Remove @google.com from eventId
var event = Calendar.Events.get(calendarId, eventId)
myTalkNo = event.extendedProperties.private["talk-number"];