你如何按位置从谷歌日历中提取事件?

时间:2015-05-07 12:10:35

标签: google-apps-script

我希望按位置提取Google日历活动。

我有一段脚本通过字符串过滤器搜索事件,但我想知道.getEvents是否有办法按位置搜索事件。

var events = cal.getEvents(new Date(), new Date(endDate), {location: 'Wisconsin'});

似乎有一个'location:'搜索功能用于创建事件,但不确定是否有.getEvents

任何帮助将不胜感激。谢谢!

2 个答案:

答案 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一样。如果您的位置不止一个单词,那么搜索将非常有效。

高级日历API

在这种情况下,不是那么先进,因为我们无法搜索单个事件字段。但是,可以使用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

中的示例