2017-02-06 2 views
1

Я успешно извлечения Attendees Календарь событий с помощью следующего кода суть:Почему отображаемое имя не отображается в списке участников календаря?

require_once __DIR__ . '/vendor/autoload.php'; 
putenv("GOOGLE_APPLICATION_CREDENTIALS=" . __DIR__ . '/mt-service-account.json'); 

$client = new Google_Client(); 
$client->useApplicationDefaultCredentials(); 
$client->setApplicationName("APP NAME"); 
$client->setSubject("<APPROPRIATE_USER_EMAIL>"); 
$client->setScopes([ 
    'https://www.googleapis.com/auth/calendar' 
]); 

$calendarService = new Google_Service_Calendar($client); 

$optParams = array(
    'singleEvents' => true, 
    'orderBy'  => 'startTime' 
); 
$events = $calendarService->events->listEvents('<APPROPRIATE_CALENDAR_ID>', $optParams); 

foreach ($events->getItems() as $event) { 
    print_r($event->getAttendees()); 
} 

Однако, как можно видеть в ответ, не Отображаемое имя не возвращается.

Array 
(
    [0] => Google_Service_Calendar_EventAttendee Object 
     (
      [additionalGuests] => 
      [comment] => 
      [displayName] => 
      [email] => [email protected] 
      [id] => 
      [optional] => 
      [organizer] => 
      [resource] => 
      [responseStatus] => needsAction 
      [self] => 
      [internal_gapi_mappings:protected] => Array 
       (
       ) 

      [modelData:protected] => Array 
       (
       ) 

      [processed:protected] => Array 
       (
       ) 

     ) 
) 

посетитель в вопросе является Соприкосновением создателя события и имя и адрес электронной почты контактного лица появляется в типе помощи поля при создании события.

UPDATENB События не создаются через API. Они создаются через Календарь Google (т. Е. В браузере). Участники добавляются, введя имя участника в поле Добавить участника (Google type-assist found the Contact). Цель состоит в том, чтобы получить информацию о событиях программы (то есть с API), созданную нашими пользователями G Suite Calendar

ответ

0

Я не могу видеть, как вы создаете данное событие, но я предполагаю, что когда событие было создано, и участник добавил свои отображаемое имя не было вставлено в качестве необязательного параметра.

Events.insert

чел []. DISPLAYNAME струнные имя посетителя, если они доступны. Необязательный. доступный для записи

Когда события сверлены с помощью веб-представления Календаря Google, вы просто добавляете адрес электронной почты пользователей. В случае, если указанный пользователь является учетной записью Gmail, Google может угадать отображаемое имя. В случае, если это не учетная запись Gmail, у google нет способа узнать, что имя пользователя для вас в конечном итоге имеет отображаемое имя null.

attendees": [ 
    { 
    "email": "[email protected]", 
    "displayName": "Linda Lawton", 
    "organizer": true, 
    "self": true, 
    "responseStatus": "accepted" 
    }, 
    { 
    "email": "[email protected]", 
    "responseStatus": "needsAction" 
    } 
+0

@DalmTo Событие не было создано через API. Он был создан через Календарь Google (т. Е. В браузере). Участники были добавлены, набрав имя участника в форме «Добавить участника» (подсказки типа «Google» нашли контакт). Моя цель - получить программные данные (например, с API), созданные нашими пользователями G Suite Calendar – Jordan

+0

Отображаемое имя добавляется только через веб-представление, если это учетная запись gmail, и у Google есть способ узнать, что такое имя пользователя. Это может также работать, если пользователь-организатор сказал, что пользователь в своих контактах google может быть способен захватить его так же. – DaImTo

+0

@DalmTo Это кажется странным, поскольку кажется, что у Google есть способ узнать, что такое имя пользователя. Чтобы воспроизвести проблему: 1) Создайте контакт, отличный от Google, в представлении G-Suite «Контакты» (например, John Smith w/email [email protected]) 2) В веб-представлении «Календарь G Suite» создайте событие на своем календарь и в поле «Участники», начните вводить «Джон Смит». Вы увидите, что Google заполнит это имя (таким образом, предлагая мне знать, что Google знает имя пользователя) – Jordan