复制事件停止脚本

问题描述 投票:0回答:1

我有一个脚本,用于将工作表中的事件添加到公共Google日历中。日历的目的是显示所有批准到特定站点的旅行。尽管出现错误,但我仍然收到错误消息(“找不到方法createEvent(string,string,string,object)。(第26行,文件“ CalendarEvent”)),脚本似乎确实起作用(我至少可以在日历上看到事件)。我遇到的问题是它正在创建重复事件。我看到了一个类似的问题可以解决此重复问题,但是,答案似乎并没有解决我的问题。到目前为止,这是我的脚本:

function CreateBPEvent() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarId = spreadsheet.getRange('AB1').getValue();
  var eventCal = CalendarApp.getCalendarById("###");
  var lr = spreadsheet.getLastRow();
  Logger.log(lr);
  var count = spreadsheet.getRange("Z3:AC"+lr+"").getValues(); 
  for (x=0; x<count.length; x++) {
    var shift = count[x];
    var title = shift[0];
    var startTime = shift[1];
    var endTime = shift[2];
    var description = shift[3];   
    var options = {
      'description': description,
    }
    eventCal.createEvent(title, startTime, endTime, options);
  }
}

感谢您的帮助!

google-apps-script google-sheets google-calendar-api
1个回答
0
投票
  • 您不想在日历中创建重复的事件。

如果我的理解是正确的,那么这个答案怎么样?请认为这只是几个可能的答案之一。

模式1:

在此模式下,当startTimeendTime相同时,不会创建重复的事件。

修改的脚本:

修改脚本后,请进行如下修改。

从:
eventCal.createEvent(title, startTime, endTime, options);
至:
var events = eventCal.getEvents(startTime, endTime);
if (events.length == 0) {
  eventCal.createEvent(title, startTime, endTime, options);
}

模式2:

在此模式下,当startTimeendTimetitle相同时,不会创建重复的事件。

修改的脚本:

修改脚本后,请进行如下修改。

从:
eventCal.createEvent(title, startTime, endTime, options);
至:
var events = eventCal.getEvents(startTime, endTime, {search: title});
if (events.length == 0) {
  eventCal.createEvent(title, startTime, endTime, options);
}

var events = eventCal.getEvents(startTime, endTime);
if (events.length == 0 || events.filter(function(e) {return e.getTitle() == title}).length == 0) {
  eventCal.createEvent(title, startTime, endTime, options);
}

注意:

  • 关于"Cannot find method createEvent(string,string,string,object). (line 26, file "CalendarEvent"的错误消息,createEvent(title, startTime, endTime, options)的参数分别是字符串,日期对象,日期对象和对象。因此,请注意这一点。

参考:

如果我误解了你的问题,而这不是你想要的方向,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.