Al recuperar eventos con Google Calendar Api v3, la matriz de asistentes no se incluye en los resultados. Me estoy autenticando con una cuenta de servicio, por lo que no debería haber restricciones de acceso en campos individuales.
Mi solicitud se ve así (el código de autenticación se omite por razones de brevedad):
async function fetchEvents() { const calendar = google.calendar('v3') google.options({ auth: await auth() }) return await calendar.events.list({ calendarId: '<the-actual-calendar-id>@group.calendar.google.com', fields: 'items(summary,description,attendees)', maxAttendees: 99, timeMin: new Date().toISOString(), maxResults: 5, singleEvents: true, orderBy: 'startTime' }) } Omitir el parámetro de fields por completo tampoco incluye a los asistentes, aunque el campo es parte del recurso de eventos .
Del mismo modo, omitir maxAttendees tampoco cambia nada.
Siguiendo el htmlLink devuelto por la API, puedo verificar que un evento en particular tiene una lista de asistentes.
Parece que no ha configurado la delegación correctamente. Cuando delega al usuario en su dominio de espacio de trabajo. Ese usuario tiene acceso al dominio para the-actual-calendar-id>@group.calendar.google.com
Luego inicia la suplantación con with_subject .
from google.oauth2 import service_account SCOPES = ['https://www.googleapis.com/auth/calendar'] SERVICE_ACCOUNT_FILE = '/path/to/service.json' credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) delegated_credentials = credentials.with_subject('user@example.org')Como se señaló en la respuesta de DalmTo, los asistentes de un evento es un campo privilegiado que no se puede recuperar con una cuenta de servicio a menos que se use para suplantar al propietario del calendario.
Habilite la delegación en todo el dominio para la cuenta de servicio en la Consola de administración . El alcance de OAuth requerido es https://www.googleapis.com/auth/calendar.events .
Use google.auth.JWT para hacerse pasar por el usuario (de este problema de GitHub ):
const auth = google.auth.JWT({ subject: 'user@your-workspace-domain.com', keyFile: '/path/to/service-account-keyfile.json', scopes: ['https://www.googleapis.com/auth/calendar.events'] }) const calendar = google.calendar({ version: 'v3', auth }) const { data } = await calendar.events.list({ ... })