停止脚本复制事件



我有一个脚本,用来将工作表中的事件添加到公共谷歌日历中。日历的目的是显示所有批准的前往特定地点的旅行。尽管我遇到了一个错误("找不到方法createEvent(字符串,字符串,对象(。"(第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);
}
}

我感谢你的帮助!

  • 您不希望在日历中创建重复的事件

如果我的理解是正确的,这个答案怎么样?请将此视为几种可能的答案之一。

模式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)的参数分别为字符串、日期对象、日期对象和对象。所以请小心

参考文献:

  • getEvents(startTime,endTime(
  • getEvents(startTime、endTime、options(
  • createEvent(title、startTime、endTime、options(

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

最新更新