具有重复事件的 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 代码,瞧!
现在在简单模式下完美运行!
你好,我需要解决我的老问题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)
生成的 VCALBEGIN: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 代码,瞧! 现在在简单模式下完美运行!