使用Google Apps脚本,我创建了一个包含复杂重复活动的日历。但是,我无法将该事件复制到另一个日历作为重复发生的事件。 注意:无法通过Web界面生成或编辑重复规则。
对于一个真实的例子,假设用户想要从this publicly shared Google calendar复制定期事件。该活动是一种模板活动,用于我所在大学周四课程的课程安排。
以下两个难以阻止用户将定期事件复制到用户有权访问的另一个日历中:
编辑以下是Google日历中事件的截图(点击事件,“更多详情”)。
请注意,这个定期事件是从学期开始到结束的每个星期一,有几个例外。没有假期(例如 Mon 2013-02-25 ),但也包括 2013年3月27日星期三,在哪一天课程将被给予,就像它是一个星期一(根据大学课程安排)。
我再说一遍:重复活动在Google日历中看起来不错,但不能将它们全部复制到另一个日历中。
创建日历的GAS功能(不是所有代码都在这里):
function createCalendar(calendarName, courseCode, weekday, times, room, isLab) { Logger.log("Last day: " + LAST_TRIMESTER_DATE); // hack the last day so that it's not midnight but rather just before the next day, i.e., 23:59:59 var adjustedLastDay = LAST_TRIMESTER_DATE; adjustedLastDay.setTime(adjustedLastDay.getTime() + (23*60*60*1000) + (59*60*1000) + (59*1000)); Logger.log("Adjusted last day: " + adjustedLastDay); var eventRecurrence = CalendarApp.newRecurrence(); eventRecurrence.addDailyRule().until(adjustedLastDay).interval(1).onlyOnWeekday(weekday); // get the day of the week of the first day var weekdayOfFirstDay = Utilities.formatDate(FIRST_TRIMESTER_DATE, LONG_TIME_ZONE, "EEEE").toUpperCase(); // if this calendar is for a lab, exclude the first week of days if (isLab) { eventRecurrence.addDailyExclusion().times(1); } else { // it's a course, so exclude the first day if it's not the course day // -- this is kind of a bug, since the "first day" of the event will always try to be created, even if it's not "onlyOnWeekday" specified if (weekdayOfFirstDay != weekday.toString()) { eventRecurrence.addDailyExclusion().times(1); // eventRecurrence.addDateExclusion(FIRST_TRIMESTER_DATE); } } // Exclude all holidays for (var i = 0; i
答案 0 :(得分:2)
这似乎是Google日历中的一个错误,因为它无法复制复杂的重复规则。您可以使用Google日历界面中齿轮图标下的“发送反馈”链接向团队报告。
答案 1 :(得分:1)
另一种选择是尝试导出ICA并让用户导入它。您甚至可以使用某种链接按钮来执行这两项操作。以下是如何获取Google事件的ica文件的示例;
http://google.com/calendar/ical/[CALENDARID]/public[or私人依赖] /完整/ [eventID] .ics
这应该将代码提供给用户,他们可以手动将代码导入到他们的日历中。您可以生成网址并发送电子邮件给所有注册指定课程的学生。
Ť