Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events 在GAS触发事件代码中,如何找出更新了哪个Google日历事件?_Events_Google Apps Script_Calendar_Google Calendar Api - Fatal编程技术网

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

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

使用GoogleApps脚本中的AdvancedCalendarAPI服务(),我发现可以在更新日历时调用事件处理程序函数(请参见屏幕截图),而且效果很好:每次添加或更改事件时,似乎都会调用我的函数。但是,我无法确定哪些日历事件(即约会)已被修改。使用1个arg(e)调用处理程序函数,该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);
}
函数触发器更新(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和所有的!我们可能在不同的早期访问计划中!