具有重复事件的 NotesCalendarEntry

NotesCalendarEntry with recurring event

你好,我需要解决我的老问题XPages search calendar range datetime 所以我重写了使用 NotesCalendar class 的代码,现在这段代码 return 正确地处理了事件(包括 recurring/repeat 事件)

var startDateTime:NotesDateTime = session.createDateTime(new Date(2016,0,1));
var endDateTime:NotesDateTime = session.createDateTime(new Date(2016,1,1));
var cal:NotesCalendar = session.getCalendar(mailDB);
cal.readRange(startDateTime,endDateTime) //work correctly and return VCAL

但我需要阅读每个日历条目以创建我的 JSON 对象,所以我添加了以下代码:

var vect:java.util.Vector=cal.getEntries(startDateTime,endDateTime)
 for(j=0;j<vect.size();j++){
       var cale:NotesCalendarEntry = vect.elementAt(j);
        cale.read(); //this return NULL in recurring Event and work in other case   
       cale.recycle();
    }

这是我从 cal.readRange(startDateTime,endDateTime)

生成的 VCAL
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
DTSTART:20160131T080000Z
TRANSP:TRANSPARENT
RECURRENCE-ID:20160131T080000Z
DTSTAMP:20160203T084615Z
CLASS:PRIVATE
SUMMARY:test repeat event
UID:134A501D66B80411C1257E520058802B-Lotus_Notes_Generated
X-LOTUS-SUMMARYDATAONLY:TRUE
X-LOTUS-APPTTYPE:4
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER:-PT1H
DESCRIPTION:test repeat event
END:VALARM
END:VEVENT
BEGIN:VEVENT
DTSTART:20160131T090000Z
DTEND:20160131T100000Z
TRANSP:OPAQUE
DTSTAMP:20160203T084615Z
SEQUENCE:0
CLASS:PRIVATE
SUMMARY:private test public appointment
UID:4C5E7D5116C19E7EC1257F4E00301400-Lotus_Notes_Generated
X-LOTUS-SUMMARYDATAONLY:TRUE
X-LOTUS-APPTTYPE:0
END:VEVENT
BEGIN:VEVENT
DTSTART:20160201T070000Z
DTEND:20160201T080000Z
TRANSP:OPAQUE
DTSTAMP:20160203T084615Z
SEQUENCE:0
CLASS:PUBLIC
SUMMARY:public test -appointment
UID:802CB03D0FE29EC7C1257F4C005B9344-Lotus_Notes_Generated
X-LOTUS-SUMMARYDATAONLY:TRUE
X-LOTUS-APPTTYPE:0
END:VEVENT
END:VCALENDAR

如果我需要读取每个重复发生的事件,我认为我需要使用函数 cale.read("20160131T080000Z") 传递 RECURRENCE-ID。

但是我怎样才能在 NotesCalendarEntry 中得到这个参数我的 FOR 语句?

非常感谢

P.S。我可以使用我知道的 Ical4j Java 库。这是唯一的解决方案吗?

您好,我的问题已经解决了。 我找到了一个 JavaScript 库,可以将 VCAL 转换为 JSON 对象。 我已将此 JavaScript 客户端库转换为 SSJS 代码,瞧! 现在在简单模式下完美运行!