Events 在GAS触发事件代码中,如何找出更新了哪个Google日历事件?
使用GoogleApps脚本中的AdvancedCalendarAPI服务(),我发现可以在更新日历时调用事件处理程序函数(请参见屏幕截图),而且效果很好:每次添加或更改事件时,似乎都会调用我的函数。但是,我无法确定哪些日历事件(即约会)已被修改。使用1个arg(e)调用处理程序函数,该arg(e)类型为“event”,但它似乎不包含ID或对已更新日历事件的任何引用。以下是我的处理程序代码:Events 在GAS触发事件代码中,如何找出更新了哪个Google日历事件?,events,google-apps-script,calendar,google-calendar-api,Events,Google Apps Script,Calendar,Google Calendar Api,使用GoogleApps脚本中的AdvancedCalendarAPI服务(),我发现可以在更新日历时调用事件处理程序函数(请参见屏幕截图),而且效果很好:每次添加或更改事件时,似乎都会调用我的函数。但是,我无法确定哪些日历事件(即约会)已被修改。使用1个arg(e)调用处理程序函数,该arg(e)类型为“event”,但它似乎不包含ID或对已更新日历事件的任何引用。以下是我的处理程序代码: function triggeredOnUpdate(e){ Logger.log('Update
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);
}
函数触发器更新(e){
Logger.log('更新事件:%s',e);
var calendarId=‘primary’;
var-eventId=e。;
var event=Calendar.Events.get(calendarId,eventId);
Logger.log('在日历事件%s上运行更新,事件摘要);
颜色事件(日历ID、事件);
}
日志输出为:
更新事件:{authMode=FULL,calendarId=mycalendar@mydomain.com,triggerUid=1325034127}
TriggerUID是触发器的ID,因此每次调用此处理程序时都是相同的
你知道我怎样才能知道哪个日历事件已经更新了吗
(注意:当谈到日历中的触发器时,event这个词会被重载:有一个日历事件,比如和一个约会,还有一个更新事件,当约会被更改时)
按照此工作流获取事件ID: 总之:使用
Calendar.Events.list
和您在函数参数中获得的日历地址来执行完全同步,其中包括可以保存在脚本属性中的nextSyncToken
下次触发事件时,您可以通过向Calendar.Events.list
提供nextSyncToken
来执行增量同步。这将为您提供自上次同步以来的事件
另见:
您好,介意分享一下您是如何为日历事件创建触发器处理程序的吗?当然-该处理程序只是我的AppScript项目中的一个函数,我称之为triggeredOnUpdate。然后在项目浏览器的“资源”下,我选择了当前项目的触发器,并选择了该功能,其中“从日历”和“条目”已更新-您可以在上面的屏幕截图中看到这一点。奇怪的是,我以前从未见过此选项,而且我没有此选项,您的脚本是否绑定到某个对象?您添加了可安装的触发器吗?可能是某个特定的范围?您启用了高级日历API吗?你可能需要这个。或者可能是我正在进行早期访问计划?不管怎么说,它只是一个可安装触发器的使用界面——所以我想你也可以在代码中这样做。你是否在早期访问应用程序脚本/appmaker?我在那里,自从TT之后,但我以前从未见过扳机!是的,我试过阿伦达API和所有的!我们可能在不同的早期访问计划中!