创建事件系列的问题
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 不支持这种语法
- 为了起诉它,您需要启用 Advanced Calendar Service
- 为了enable吧,请继续
Resources > Advanced Google services.
之后您可以使用高级日历如下:
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);
}
我想为
创建一个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 不支持这种语法
- 为了起诉它,您需要启用 Advanced Calendar Service
- 为了enable吧,请继续
Resources > Advanced Google services.
之后您可以使用高级日历如下:
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);
}