0

早上好,

我正在创建一个与 Google 日历同步的日历,但我无法重现 Google 日历的事件。我认为事件的“重复”字段是受保护的字段。但我不知道如何获取已保存事件的字段。

编辑:代码:

$params = array(
                'orderBy' => 'startTime',
                'singleEvents' => 'true',
                'timeMin' => date(DateTime::ATOM),
        );
$listarEventos = $service->events->listEvents($calendar_id, $params);
foreach ($listarEventos['items'] as $i){
     echo $i->recurrence;
}

如果我尝试打印事件的内容,它会显示一个空字段重复,我已经证明它是重复的。

谢谢!

4

2 回答 2

1

如果当前事件不是拥有重复规则的原始事件,则它不包含其自己的“重复”字段副本。相反,“recurringEventId”字段中将引用原始事件。

如果您随后获取该引用的事件,您将找到重复规则。

例如(使用 Python API)...

...
events = service.events().list(calendarId=calId,
                               singleEvents=True,  # expand recurrence events
                               q=searchString
                              ).execute()
for e in events['items']:
    if 'recurringEventId' in e:
        root_ev = service.events().get(CalendarId=calId,
                                       eventId = e['recurringEventId']
                                      ).execute()
        # Copy the recurrence rules from the root event into our own:
        e['recurrence'] = root_ev['recurrence']
于 2018-03-22T09:59:53.720 回答
0

Events.list 返回事件资源列表。

"kind": "calendar#event",
   "etag": "\"9722590000\"",
   "id": "3nmhbd0465ts1enliigj4",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=285781",
   "created": "2015-04-13T07:24:21.000Z",
   "updated": "2015-04-13T07:24:21.509Z",
   "summary": "My event",
   "location": " ",
   "creator": {
    "email": "XXX@gmail.com",
    "displayName": "XXX",
    "self": true
   },
   "organizer": {
    "email": "XXX@gmail.com",
    "displayName": "XXX",
    "self": true
   },
   "start": {
    "dateTime": "2015-04-21T19:00:00+02:00",
    "timeZone": "Europe/Copenhagen"
   },
   "end": {
    "dateTime": "2015-04-21T21:00:00+02:00",
    "timeZone": "Europe/Copenhagen"
   },
   "recurrence": [
    "RRULE:FREQ=WEEKLY;COUNT=24;BYDAY=TU"
   ],
   "iCalUID": "XXX@google.com",
   "sequence": 0,
   "reminders": {
    "useDefault": false,
    "overrides": [
     {
      "method": "popup",
      "minutes": 45
     }
    ]
   }

如果事件有一个循环集,您可以在其中找到它。

“重复”:[“RRULE:FREQ=WEEKLY;COUNT=24;BYDAY=TU”]

我看不到您的代码是如何访问它的,但是如果您在 event.list 底部进行测试,您会注意到,如果您可以访问日历,则应该可以访问重复字段。

于 2015-06-08T10:51:48.737 回答