[英]How can I retrieve an extended property for a Google Calendar event?
I have several extended properties I've added to various events using PHP. 我有几个扩展属性,已使用PHP添加到各种事件中。 Now I want to retrieve them using Google Apps Script in Google Sheets. 现在,我想使用Google表格中的Google Apps脚本检索它们。 I'm able to access the calendar, all events and the standard data elements like this: 我可以像这样访问日历,所有事件和标准数据元素:
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 = ??
}
How do I query the private extended property named "talk-number" on each event? 如何在每个事件上查询名为“ talk-number”的私有扩展属性?
Within Google Apps Script you have two ways to interact with Google Calendar; 在Google Apps脚本中,您有两种与Google日历进行交互的方式: the Calendar Service and the Advanced Calendar Service (aka Calendar API) which must be enabled via Advanced Google Services. 日历服务和高级日历服务 (又称日历API),必须通过高级Google服务启用。
The ACS uses the resource representations from the Google Calendar API , so the extendedProperties
are available as a part of the event objects you can obtain through the API. ACS使用来自Google Calendar API的资源表示形式,因此extendedProperties
可作为可通过API获取的事件对象的一部分。
Here's a simple modification of the example from the ACS docs that will log the "talk-number" for every event that has one. 这是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.');
}
}
You can update your function with this: 您可以使用以下命令更新功能:
var eventId = events[i].getId().replace(/@.*/,''); // Remove @google.com from eventId
var event = Calendar.Events.get(calendarId, eventId)
myTalkNo = event.extendedProperties.private["talk-number"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.