我有一个脚本,用来将工作表中的事件添加到公共谷歌日历中。日历的目的是显示所有批准的前往特定地点的旅行。尽管我遇到了一个错误("找不到方法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:
在这种模式中,当startTime
和endTime
相同时,不会创建重复的事件。
修改的脚本:
修改脚本时,请按如下方式进行修改。
发件人:eventCal.createEvent(title, startTime, endTime, options);
收件人:var events = eventCal.getEvents(startTime, endTime);
if (events.length == 0) {
eventCal.createEvent(title, startTime, endTime, options);
}
模式2:
在该模式中,当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)
的参数分别为字符串、日期对象、日期对象和对象。所以请小心
参考文献:
- getEvents(startTime,endTime(
- getEvents(startTime、endTime、options(
- createEvent(title、startTime、endTime、options(
如果我误解了你的问题,而这不是你想要的方向,我道歉。