使用 Google Apps 脚本,我创建了一个包含复杂重复事件的日历。但是,我无法将该事件作为重复事件复制到另一个日历。注意:无法通过 Web 界面生成或编辑重复规则。
举一个真实的例子,假设用户想要从 this publicly shared Google calendar 复制重复发生的事件。 .该事件是我大学周四类(class)的类(class)安排的一种模板事件。
以下是阻止用户将重复发生的事件复制到用户有权访问的另一个日历的两个困难:
编辑 这是 Google 日历中事件外观的屏幕截图(点击事件,“更多详细信息”)。
请注意,此重复事件是从学期开始到结束的每个星期一,但有几个异常(exception)。没有假期(例如, Mon 2013-02-25 ),但也包括 2013-02-27 周三 , 类(class)将在哪一天进行,就像周一一样(根据大学类(class)安排)。
我再说一遍:重复性事件在 Google 日历中看起来不错,但无法将它们完整地复制到另一个日历中。
创建日历的 GAS 函数(并非所有代码都在这里):
功能创建日历(日历名称,类(class)代码,工作日,时间,房间,isLab){
Logger.log("最后一天:"+ LAST_TRIMESTER_DATE);
//修改最后一天,使其不是午夜,而是在第二天之前,即 23:59:59
varadjustedLastDay = LAST_TRIMESTER_DATE;
AdjustedLastDay.setTime(adjustedLastDay.getTime() + (23*60*60*1000) + (59*60*1000) + (59*1000));
Logger.log("调整最后一天:"+adjustedLastDay);
var eventRecurrence = CalendarApp.newRecurrence();
eventRecurrence.addDailyRule().until(adjustedLastDay).interval(1).onlyOnWeekday(weekday);
//获取第一天的星期几
var weekdayOfFirstDay = Utilities.formatDate(FIRST_TRIMESTER_DATE, LONG_TIME_ZONE, "EEEE").toUpperCase();
//如果此日历用于实验室,则排除天的第一周
如果(isLab){
eventRecurrence.addDailyExclusion().times(1);
} 别的 {
//这是一门类(class),所以如果不是类(class)日,则排除第一天
//-- 这是一个错误,因为事件的“第一天”将始终尝试创建,即使它没有被指定为“onlyOnWeekday”
如果 (weekdayOfFirstDay != weekday.toString()) {
eventRecurrence.addDailyExclusion().times(1);
//eventRecurrence.addDateExclusion(FIRST_TRIMESTER_DATE);
}
}
//排除所有假期
对于 (var i = 0; i
最佳答案
这似乎是 Google 日历中的一个错误,因为它无法复制复杂的重复规则。您可以使用 Google 日历界面中齿轮图标下的“发送反馈”链接向团队报告。
关于google-apps-script - 复制以编程方式创建的重复事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552247/