我希望按位置提取Google日历活动。
我有一段脚本通过字符串过滤器搜索事件,但我想知道.getEvents是否有办法按位置搜索事件。
var events = cal.getEvents(new Date(), new Date(endDate), {location: 'Wisconsin'});
似乎有一个'location:'搜索功能用于创建事件,但不确定是否有.getEvents
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
您需要先按开始日期和结束日期获取所有事件,然后循环查看事件数组,并检查每个事件的位置。 CalendarEvent
类具有getLocation()
方法。
function getEventsByLocation() {
var cal = CalendarApp.getDefaultCalendar();
var events = cal.getEvents(new Date(), new Date(endDate));
var = i;
for (i=0;i<events.length;i++) {
var thisEvent = events[i];
var thisLocation = thisEvent.getLocation();
if (thisLocation === 'Wisconsin') {
//To Do
. . . . . Code here to do what you want
};
};
};
答案 1 :(得分:1)
全文搜索将包含位置字段。
var events = cal.getEvents( now, then,
{search:"Wisconsin"});
不幸的是,这可能包括没有location == "Wisconsin"
但在其他任何地方都有该文字的事件。如果这是一个问题,Sandy的答案中显示的过滤器将删除它们,但由于起始列表较短,可能会提高效率。
如果您的搜索字词包含多个单词,例如&#34; Embarrass,Wisconsin&#34;,则每个单词必须匹配,就好像它们之间的空格意味着AND一样。如果您的位置不止一个单词,那么搜索将非常有效。
在这种情况下,不是那么先进,因为我们无法搜索单个事件字段。但是,可以使用q
参数和Calendar.Events.list()
应用相同的全文搜索:
var calendarId = 'primary';
var now = getRelativeDate(0,0);
var then = getRelativeDate(7,0); // A week out
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
timeMax: then.toISOString(),
q: "Embarrass Wisconsin"
});
注意:getRelativeDate()
来自Advanced Calendar Service docs。