Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
Javascript 在什么情况下,一批活动参与者会导致删除谷歌日历中的上述活动?_Javascript_Google Calendar Api - Fatal编程技术网

Javascript 在什么情况下,一批活动参与者会导致删除谷歌日历中的上述活动?

Javascript 在什么情况下,一批活动参与者会导致删除谷歌日历中的上述活动?,javascript,google-calendar-api,Javascript,Google Calendar Api,我为我工作的学校开发了一个应用程序,在我们的注册系统和谷歌日历之间架起了一座桥梁。简言之,它根据注册系统的数据填充多个日历(教师、学生、教室和包含所有课程的日历),它允许教师注册每个班级的学生出勤和家庭作业,还可以做其他一些事情 该应用程序还允许教师在注意到注册学生未在日历事件中作为助理输入时触发学生列表的更新 在守则中: 我打电话到注册系统获取课程的最新学生名单 我给谷歌日历打了个电话,以获取日历中代表课程的事件的重现 我打电话到谷歌日历批量修补“与会者”数组的每个重复 this.update

我为我工作的学校开发了一个应用程序,在我们的注册系统和谷歌日历之间架起了一座桥梁。简言之,它根据注册系统的数据填充多个日历(教师、学生、教室和包含所有课程的日历),它允许教师注册每个班级的学生出勤和家庭作业,还可以做其他一些事情

该应用程序还允许教师在注意到注册学生未在日历事件中作为助理输入时触发学生列表的更新

在守则中:

  • 我打电话到注册系统获取课程的最新学生名单
  • 我给谷歌日历打了个电话,以获取日历中代表课程的事件的重现
  • 我打电话到谷歌日历批量修补“与会者”数组的每个重复

    this.updateEvent = function(calendarId, eventId, resource)
    {
      return $window.gapi.client.calendar.events.patch({
        calendarId: calendarId, 
        eventId: eventId,
        resource: resource
      });
    };
    
    this.batchUpdateEvents = function(calendarId, eventList)
    {
      var counter = 0;
      var batchPromises = [];
      for(var i=0; i < eventList.length; i++)
      {
        if(counter === 0)
        {
          var batch = $window.gapi.client.newBatch();
        }
    
        var event = eventList[i];
        batch.add(this.updateEvent(calendarId, event.id, event.resource), {id: event.id});
        counter++;
    
        if(counter === 50 || i === eventList.length-1)
        {
          counter = 0;
          batchPromises.push(batch.then());
        }
      }
    
      return $q.all(batchPromises).then(
        function(response){
          var updateResults = {};
          response.forEach(function(batchResponse){
          updateResults = Object.assign(updateResults, batchResponse.result);
        });
    
        return updateResults;
      });
    };
    
    this.updateEvent=函数(日历ID、事件ID、资源)
    {
    返回$window.gapi.client.calendar.events.patch({
    calendarId:calendarId,
    eventId:eventId,
    资源:资源
    });
    };
    this.batchUpdateEvents=函数(日历ID、事件列表)
    {
    var计数器=0;
    var=[];
    对于(var i=0;i
  • 它在大多数情况下都可以正常工作,但通常会删除与课程相关的所有日历事件。我不知道如何重现这个bug,因为所有的代码都是用javascript编写的,所以我无法记录错误

    在这个过程中,这是我的应用程序与Google日历交互的唯一两次。我真的不知道一个请求怎么能删除任何东西,所以我假设这批请求就是问题所在。虽然我在补丁中只包含了attendee数组,但实际上很难把它搞砸


    有人知道我该往哪个方向看吗?我在这里有点不知所措。

    batchUpdateEvents可能接收到一个有效的calendarId,但是一个带有空值的事件列表。如果是这种情况,则在事件列表[0]中检查有效值。在继续执行for循环之前,resource将阻止保存空白事件值(这可能会导致Google删除该事件)。如果此脚本只应添加事件而从不删除它们,那么在将其添加到批处理之前检查event.resource也会很有好处

    我认为这不太可能是我正在寻找的问题,但我无论如何都会测试它并让你知道。尽管如此,我应该测试eventList[0]的存在性,这一点您是对的。请参阅某个地方的资源。