我有一个脚本,用于将工作表中的事件添加到公共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);
}
}
感谢您的帮助!
如果我的理解是正确的,那么这个答案怎么样?请认为这只是几个可能的答案之一。
在此模式下,当startTime
和endTime
相同时,不会创建重复的事件。
修改脚本后,请进行如下修改。
从:eventCal.createEvent(title, startTime, endTime, options);
至:var events = eventCal.getEvents(startTime, endTime);
if (events.length == 0) {
eventCal.createEvent(title, startTime, endTime, options);
}
在此模式下,当startTime
,endTime
和title
相同时,不会创建重复的事件。
修改脚本后,请进行如下修改。
从: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)
的参数分别是字符串,日期对象,日期对象和对象。因此,请注意这一点。如果我误解了你的问题,而这不是你想要的方向,我深表歉意。