google-apps-script - 复制以编程方式创建的重复事件?

标签 google-apps-script google-calendar-api google-calendar-recurring-events

使用 Google Apps 脚本,我创建了一个包含复杂重复事件的日历。但是,我无法将该事件作为重复事件复制到另一个日历。注意:无法通过 Web 界面生成或编辑重复规则。

举一个真实的例子,假设用户想要从 this publicly shared Google calendar 复制重复发生的事件。 .该事件是我大学周四类(class)的类(class)安排的一种模板事件。

以下是阻止用户将重复发生的事件复制到用户有权访问的另一个日历的两个困难:

  • 单击事件的一个实例并说“复制到我的日历”只会复制该单个事件,即使该事件被定义为重复。这不是一个好的解决方案,因为用户必须这样做 10 次以上才能获得一个学期的所有事件。
  • 单击事件的实例,然后单击“更多详细信息”,然后尝试在“更多操作”菜单(其中 xxxx 是用户拥有的日历)下的“复制到 xxxx”似乎有效。但是,点击保存时,出现错误:“发生错误。请稍后再试。”

  • 编辑 这是 Google 日历中事件外观的屏幕截图(点击事件,“更多详细信息”)。

    screen shot of details of the created event

    请注意,此重复事件是从学期开始到结束的每个星期一,但有几个异常(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/

    相关文章:

    google-apps-script - 使用 Google App 脚本将电子邮件标记为已读

    google-apps-script - 使用应用程序脚本在过滤器 View 之间切换

    python - 再次查找 Google API 范围

    javascript - Google 日历 API 空闲/忙碌 : query does not retun events separatly

    google-apps-script - 如何修改事件系列的特定实例

    google-apps-script - 将图标添加到部署为 Web 应用程序 ("Add to home screen"的应用程序脚本)

    google-apps-script - 谷歌表格: Date formatting from within custom functions

    python - 自动认证--Google Calendar API

    google-apps-script - 使用 API 列出 Google 日历事件

    python - Google Calendar API 重复事件,EX 日期不起作用