0

我正在尝试使用Google日历API获取事件的重现规则(RRULE),但它返回undefined从Google Calendar API事件获取“重现”(React,Javascript)

据称,每个事件具有“复发值如所述here

[]作为指定

复发定期事件的RRULE,EXRULE,RDATE和EXDATE线列表

列表,在RFC5545中注意,DTSTART和DTEND行不允许在该字段中使用;事件的开始和结束时间在开始和结束字段中指定,对于单个事件或重复事件的实例,此字段被忽略。

作为一个说明,

没有什么问题:SET创建一个事件执行以下操作时, “复发” 值:

var event = { 
    'summary': this.props.user.calendarEventTitle, 
    'start': { 
    'dateTime': this.props.user.calendarEventStartDateTime, 
    'timeZone': this.props.user.calendarEventTimeZone 
    }, 
    'end': { 
    'dateTime': this.props.user.calendarEventEndDateTime, 
    'timeZone': this.props.user.calendarEventTimeZone 
    }, 
    "recurrence": [ 
    "RRULE:FREQ=WEEKLY;UNTIL=20110701T170000Z", 
    ] 
}; 


var request = window.gapi.client.calendar.events.insert({ 
    'calendarId': 'primary', 
    'resource': event 
}); 

request.execute(function(resp) { 
    console.log('resp = ' + resp); 
}); 

问题:无法GET的“复发“取值时执行以下操作的值:

listUpcomingEvents() { 
    window.gapi.client.calendar.events.list({ 
    'calendarId': 'primary', 
    'timeMin': (new Date()).toISOString(), 
    'showDeleted': false, 
    'singleEvents': true, 
    'orderBy': 'startTime' 
    }).then(function(response) { 
    var events = response.result.items; 

    if (events.length > 0) { 
     var eventsArr = []; 
     for (var i = 0; i < events.length; i++) { 
     var event = events[i]; 
     var startDate = event.start.dateTime; 
     var endDate = event.end.dateTime; 
     if (!startDate) { 
      startDate = event.start.date; 
     } 
     if (!endDate) { 
      endDate = event.end.date; 
     } 
     var reminders = event.reminders.overrides; 

     console.log('event.recurrence = ' + event.recurrence); 
     {Object.keys(event).map(function(key) { 
       console.log('>Key (event): ' + key + ", Value (event): " 
+ event[key]); 
      })} 

注意:我添加了上面的日志以打印出事件对象的每个键和值,但我仍然没有看到“重复”键。如果此对象中没有一个,我如何获取创建此事件的重复规则?可能对repeatEventID做些什么?

  var rowArray = { 
      id: event.id, 
      title: event.summary, 
      start: startDate, 
      end: endDate, 
      allDay: false, 
      location: event.location, 
      description: event.description, 
      timeZone: event.start.timeZone, 
      reminders: event.reminders.overrides, 
      recurrence: event.recurrence //ISSUE: RETURNS UNDEFINED 
     }; 
     eventsArr.push(rowArray); 
     this.setState({ 
          eventArray: eventsArr 
        }) 
     } 
    } else { 
     console.log('No upcoming events found.'); 
    } 
    const { calendar } = this.refs; 
} 

它几乎出现here有此事件后,再没“复发”属性(仅复发ID)。

任何提示?

回答

0

对于将来有类似问题的任何人,可以使用recurringEventId获取包含原始事件重复值的不同事件。

下面介绍如何做到这一点。

获取定期事件ID如下:

var recurringEventID = event.recurringEventId

然后我们ID拨打另一个电话到谷歌日历API的recurringEventId(而不是event本身的ID):

var requestRecurringEvent = window.gapi.client.calendar.events.get({ 
     'calendarId': 'primary', 
     'eventId': payload 
     }); 
     requestRecurringEvent.execute(function(resp) { 
     console.log('requestRecurringEvent = ' + resp); 
     console.log('requestRecurringEvent.recurrence = ' + resp.recurrence); 
     recurrence = resp.recurrence; 

     console.log('recurrence (inside execute)= ' + recurrence); //NO ISSUE (YET): recurrence (inside execute) = RRULE:FREQ=WEEKLY;COUNT=10 

     return recurrence; 
     }); 

就是这样!

相关问题