在GAS触发事件代码中,如何找出更新了哪个Google日历事件?

时间:2017-02-22 17:54:21

标签: events google-apps-script calendar google-calendar-api

在Google Apps脚本中使用高级日历API服务(https://developers.google.com/apps-script/advanced/calendar),我发现您可以在更新日历时调用事件处理函数(请参见屏幕截图),并且工作正常:每次添加或更改事件时,似乎都会调用我的函数。但是,我无法弄清楚哪个日历事件(即约会)已被修改。处理程序函数使用1 arg(e)调用,其类型为“event”,但它似乎不包含ID或对已更新的日历事件的任何引用。这是我的处理程序代码:

function triggeredOnUpdate(e){
  Logger.log('Update event: %s', e);

  var calendarId = 'primary';
  var eventId = e.<????what goes here???>;
  var event = Calendar.Events.get(calendarId, eventId);

  Logger.log('Running update on Calendar Event: %s', event.summary);
  colourEvent(calendarId, event);
}

日志输出为:

  

更新活动:{authMode = FULL,calendarId = mycalendar@mydomain.com,triggerUid = 1325034127}

TriggerUID是触发器的ID,因此每次调用此处理程序时它都是相同的。

您知道如何找出更新的日历活动吗?

(注意:在日历中谈论触发器时,单词事件会超载:有一个日历事件,比如和约会,以及更新事件,当更改约会时)

1]

1 个答案:

答案 0 :(得分:0)

按照此工作流程获取事件ID: https://developers.google.com/apps-script/guides/triggers/events#eventupdated

总结:将Calendar.Events.list与您在function参数中获得的日历地址一起使用以执行完全同步,其中包括nextSyncToken,可以将其保存在脚本属性中。

下次触发事件时,可以通过向nextSyncToken提供Calendar.Events.list来执行增量同步。自上次同步以来,这将为您提供事件。

另请参阅: https://developers.google.com/calendar/v3/reference/events/list https://developers.google.com/calendar/v3/reference/events#resource

https://developers.google.com/apps-script/advanced/calendar