如何检索 Google 日历活动的扩展属性?
Posted
技术标签:
【中文标题】如何检索 Google 日历活动的扩展属性?【英文标题】:How can I retrieve an extended property for a Google Calendar event? 【发布时间】:2015-10-03 02:37:05 【问题描述】:我有几个使用 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”的私有扩展属性?
【问题讨论】:
【参考方案1】:在 Google Apps 脚本中,您可以通过两种方式与 Google 日历交互; Calendar Service 和 Advanced Calendar Service(又名日历 API)必须通过高级 Google 服务启用。
ACS 使用来自Google Calendar API 的资源表示,因此extendedProperties
可作为您可以通过API 获取的事件对象的一部分使用。
这是 ACS 文档中示例的简单修改,它将记录每个事件的“通话号码”。
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"];
【讨论】:
以上是关于如何检索 Google 日历活动的扩展属性?的主要内容,如果未能解决你的问题,请参考以下文章
我如何测试标记为“自动拒绝新的和现有的会议”的Google日历活动]]