创建事件系列的问题

Issues with creating an event series

我想为

创建一个Google日历活动系列

"every first sunday in all months"

使用 CalendarApp.getCalendarById(testId).createEventSeries(...).

我尝试了 CalendarApp.newRecurrence() 的各种组合。仅添加...但其中 none 有效。 代码:

function example () {

  var year=2022;
  var testId='cobugitj4b6dev17cghb78j3rc@group.calendar.google.com';
  var oneHour=60 * 60 * 1000
  var sunday=CalendarApp.Weekday.SUNDAY;
  var silvester=new Date(year, 11, 31, 23, 59, 0);
  var startDayTime=new Date(year, 0, 2, 19, 30, 0);
  var recurrenceWeekday=CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeekday(sunday)
  var newEvent = CalendarApp.getCalendarById(testId).createEventSeries("Termin",
        startDayTime, new Date(startDayTime.getTime() + oneHour),
        recurrenceWeekday.until(silvester));
}    

在每个星期日创建一个事件。我应该用什么方法来限制只在每个月的第一个星期日举行?

在线创建这样的eventSerie是没有问题的。

正确的 VCALENDAR-Entry 如下所示:

BEGIN:VEVENT
DTSTART;TZID=Europe/Vienna:20220102T193000
DTEND;TZID=Europe/Vienna:20220102T203000
RRULE:FREQ=MONTHLY;COUNT=12;BYDAY=1SU
DTSTAMP:20200811T121708Z
UID:7ojdc1g1mfjov4m3ubtg7k8d5h@google.com
CREATED:20200811T120316Z
DESCRIPTION:
LAST-MODIFIED:20200811T121423Z
LOCATION:FranZ
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Termin_1
TRANSP:OPAQUE
END:VEVENT
  • 您可以找到有关定期 Google 日历 API 事件 here
  • 的文档
  • Events resource 说明:

List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.

  • 其中有关于 RFC5545
  • 的详细文档

对于您的特定查询,重复规则为:

"RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SU;BYSETPOS=1"

  • CalendarApp 不支持这种语法

之后您可以使用高级日历如下:

function example() {
  var testId='XXXXXXXXXXXXXXXXXXXXXX';
  var silvester="20221231";
  var resource = {
    "start": {
      "date": "2020-09-06"
    },
    "end": {
      "date": "2020-09-06"
    },
    "recurrence": [
      "RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SU;BYSETPOS=1;UNTIL=" + silvester
    ],
          "summary": "Termin"
  }
  Calendar.Events.insert(resource, testId);
}