为什么使用谷歌应用脚​​本创建谷歌日历活动重复

时间:2018-03-10 18:16:07

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

我的工作表包含用于创建Google日历活动的数据。事件创建的过程是这样的:当每个单元格值从工作表“onEdit”改变时,触发器被调用,并且在脚本中我有一些标准在调用“createEvent()”方法之前匹配。 下面是工作表的快照: enter image description here

标准如下:

if(ID_coloumn=="" && start_date_col !="" && end_date_col !="" && status=="Scheduled"){
   //then create even...
}

但我的问题有时会多次创建事件。下面是谷歌日历的行军15的截图。在这里你可以看到事件名称“Sid事件”是重复的。

enter image description here

这是我的谷歌应用脚​​本代码。

function main(){

  var RC_value=getRCpositionWithValue();           //Get current row and column number and the value inside that cell
  var day_data=day.getData(RC_value.R,RC_value.C); //Get current row data from sheet (Object)
  Utilities.sleep(100);
  var event_id_col = day_data.range[1];            //Range is the current row's data range horizontally till status
  var status=day_data.range[10];
  var start_date=day_data.range[3];
  var end_date=day_data.range[4];

  if(event_id_col == "" && status == "Scheduled" && end_date != "" && start_date !=""){

    var event = CalendarApp.getCalendarsByName("xyz")[0].createEvent(day_data.range[0],start_date,end_date);    

  }else if(event_id_col != ""){ 

    var event_id=day_data.range[1];                            
    if(day_data.range[10]=="Cancelled" || day_data.range[10]=="Bumped"){
      //Delete event

      CalendarApp.getCalendarsByName("xyz")[0].getEventById(event_id).deleteEvent();
      day.updateSheetEventId(RC_value.R,day_data.event_id_col,"Deleted");
    }else {
      //Update Event 

      var title=CalendarApp.getCalendarsByName("xyz")[0].getEventById(event_id).setTime(day_data.range[3],day_data.range[4]);     
    }
  }
}

请帮我解决这个问题。或者,如果有人想看到代码,请分享您的电子邮件,我将分享表格,你可以调试它。感谢。

0 个答案:

没有答案