Trabajando con Calendarios de Gmail
Agregar, Editar y Eliminar un Calendario
Aspose.Email permite a las aplicaciones gestionar los calendarios de Gmail utilizando IGmailClient que proporciona características como agregar, eliminar y actualizar calendarios de Gmail. Esta clase cliente retorna una lista de objetos de tipo ExtendedCalendar que contienen información sobre los elementos del calendario de Gmail. La clase IGmailClient expone las siguientes funciones para calendarios:
- CreateCalendar Se puede usar para insertar un nuevo calendario.
- ListCalendars Se puede usar para obtener la lista de todos los calendarios de un cliente.
- DeleteCalendar Se puede usar para eliminar un calendario.
- FetchCalendar Se puede usar para obtener un calendario particular de un cliente.
- UpdateCalendar Esta función se usa para reintegrar un calendario modificado de un cliente.
Para acceder a los calendarios, GoogleTestUser se inicializa utilizando las credenciales de la cuenta de Gmail. GoogleOAuthHelper se usa para obtener el token de acceso para el usuario que se utiliza posteriormente para inicializar IGmailClient.
Insertar, Obtener y Actualizar
Para insertar un calendario, inicialice un objeto de tipo Calendar e insértelo utilizando la función CreateCalendar(). CreateCalendar() devuelve el Id del calendario recién insertado. Este Id se puede usar para obtener el calendario del servidor. El siguiente fragmento de código muestra cómo insertar, obtener y actualizar un calendario.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Get access token | |
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret"); | |
string accessToken; | |
string refreshToken; | |
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken); | |
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail)) | |
{ | |
// Insert, get and update calendar | |
Aspose.Email.Clients.Google.Calendar calendar = new Aspose.Email.Clients.Google.Calendar("summary - " + Guid.NewGuid().ToString(), null, null, "America/Los_Angeles"); | |
// Insert calendar and Retrieve same calendar using id | |
string id = client.CreateCalendar(calendar); | |
Aspose.Email.Clients.Google.Calendar cal = client.FetchCalendar(id); | |
//Match the retrieved calendar info with local calendar | |
if ((calendar.Summary == cal.Summary) && (calendar.TimeZone == cal.TimeZone)) | |
{ | |
Console.WriteLine("fetched calendar information matches"); | |
} | |
else | |
{ | |
Console.WriteLine("fetched calendar information does not match"); | |
} | |
// Change information in the fetched calendar and Update calendar | |
cal.Description = "Description - " + Guid.NewGuid().ToString(); | |
cal.Location = "Location - " + Guid.NewGuid().ToString(); | |
client.UpdateCalendar(cal); | |
} | |
Eliminar un calendario particular
Para eliminar un calendario particular, necesitamos obtener la lista de todos los calendarios de un cliente y luego eliminar según sea necesario. ListCalendars() devuelve la lista de ExtendedCalendar que contiene calendarios de Gmail. El siguiente fragmento de código muestra cómo eliminar un calendario particular.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Get access token | |
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret"); | |
string accessToken; | |
string refreshToken; | |
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken); | |
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail)) | |
{ | |
// Access and delete calendar with summary starting from "Calendar summary - " | |
string summary = "Calendar summary - "; | |
// Get calendars list | |
ExtendedCalendar[] lst0 = client.ListCalendars(); | |
foreach (ExtendedCalendar extCal in lst0) | |
{ | |
// Delete selected calendars | |
if (extCal.Summary.StartsWith(summary)) | |
client.DeleteCalendar(extCal.Id); | |
} | |
} |
Trabajando con Control de Acceso al Calendario
Aspose.Email proporciona control total sobre el acceso a los elementos del calendario. La función ListAccessRules() es expuesta por IGmailClient que devuelve la lista de AccessControlRule. La información de cada regla puede ser recuperada, modificada y guardada nuevamente para el calendario de un cliente. IGmailClient contiene las siguientes funciones para gestionar las reglas de control de acceso.
- ListAccessRules Esta función proporciona la lista de AccessControlRule.
- CreateAccessRule Esta función crea una nueva regla de acceso para un calendario.
- UpdateAccessRule Esta función se usa para actualizar una regla de acceso.
- FetchAccessRule Se puede usar para obtener una regla de acceso particular para el calendario de un cliente.
- DeleteAccessRule Esta función se usa para eliminar una regla de acceso.
El siguiente fragmento de código muestra cómo usar las funciones para gestionar las reglas de acceso:
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret"); | |
string accessToken; | |
string refreshToken; | |
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken); | |
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail)) | |
{ | |
// Retrieve list of calendars for the current client | |
ExtendedCalendar[] calendarList = client.ListCalendars(); | |
// Get first calendar id and retrieve list of AccessControlRule for the first calendar | |
string calendarId = calendarList[0].Id; | |
AccessControlRule[] roles1 = client.ListAccessRules(calendarId); | |
// Create a local access control rule and Set rule properties | |
AccessControlRule rule = new AccessControlRule(); | |
rule.Role = AccessRole.reader; | |
rule.Scope = new AclScope(AclScopeType.user, User2.EMail); | |
// Insert new rule for the calendar. It returns the newly created rule | |
AccessControlRule createdRule = client.CreateAccessRule(calendarId, rule); | |
// Confirm if local created rule and returned rule are equal | |
if ((rule.Role == createdRule.Role) && (rule.Scope.Type == createdRule.Scope.Type) && (rule.Scope.Value.ToLower() == createdRule.Scope.Value.ToLower())) | |
{ | |
Console.WriteLine("local rule and returned rule after creation are equal"); | |
} | |
else | |
{ | |
Console.WriteLine("Rule could not be created successfully"); | |
return; | |
} | |
// Get list of rules | |
AccessControlRule[] roles2 = client.ListAccessRules(calendarId); | |
// Current list length should be 1 more than the earlier one | |
if (roles1.Length + 1 == roles2.Length) | |
{ | |
Console.WriteLine("List lengths are ok"); | |
} | |
else | |
{ | |
Console.WriteLine("List lengths are not ok"); | |
return; | |
} | |
// Change rule and Update the rule for the selected calendar | |
createdRule.Role = AccessRole.writer; | |
AccessControlRule updatedRule = client.UpdateAccessRule(calendarId, createdRule); | |
// Check if returned access control rule after update is ok | |
if ((createdRule.Role == updatedRule.Role) && (createdRule.Id == updatedRule.Id)) | |
{ | |
Console.WriteLine("Rule is updated successfully"); | |
} | |
else | |
{ | |
Console.WriteLine("Rule is not updated"); | |
return; | |
} | |
// Retrieve individaul rule against a calendar | |
AccessControlRule fetchedRule = client.FetchAccessRule(calendarId, createdRule.Id); | |
//Check if rule parameters are ok | |
if ((updatedRule.Id == fetchedRule.Id) && (updatedRule.Role == fetchedRule.Role) && (updatedRule.Scope.Type == fetchedRule.Scope.Type) && (updatedRule.Scope.Value.ToLower() == fetchedRule.Scope.Value.ToLower())) | |
{ | |
Console.WriteLine("Rule parameters are ok"); | |
} | |
else | |
{ | |
Console.WriteLine("Rule parameters are not ok"); | |
} | |
// Delete particular rule against a given calendar and Retrieve the all rules list for the same calendar | |
client.DeleteAccessRule(calendarId, createdRule.Id); | |
AccessControlRule[] roles3 = client.ListAccessRules(calendarId); | |
// Check that current rules list length should be equal to the original list length before adding and deleting the rule | |
if (roles1.Length == roles3.Length) | |
{ | |
Console.WriteLine("List lengths are same"); | |
} | |
else | |
{ | |
Console.WriteLine("List lengths are not equal"); | |
return; | |
} | |
} |
Trabajando con Configuraciones del Cliente y Información de Color
Aspose.Email admite el acceso a la configuración del Cliente mediante IGmailClient.GetSettings(). Devuelve la lista de configuraciones como se indica a continuación:
- dateFieldOrder
- displayAllTimezones
- hideInvitations
- format24HourTime
- defaultCalendarMode
- defaultEventLength
- locale
- remindOnRespondedEventsOnly
- alternateCalendar
- userLocation
- hideWeekends
- showDeclinedEvents
- weekStart
- weather
- customCalendarMode
- timezoneLabel
- timezone
- useKeyboardShortcuts
- country
De manera similar, la información de color para los clientes también se puede recuperar utilizando IGmailClient.GetColors(). Este objeto de información de color devuelve la lista de colores de primer plano, colores de fondo y fecha y hora de actualización.
Acceder a la configuración del cliente
El siguiente fragmento de código muestra cómo se pueden usar las funciones para acceder a la configuración del cliente:
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret"); | |
string accessToken; | |
string refreshToken; | |
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken); | |
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail)) | |
{ | |
// Retrieve client settings | |
Dictionary<string, string> settings = client.GetSettings(); | |
if (settings.Count < 1) | |
{ | |
Console.WriteLine("No settings are available."); | |
return; | |
} | |
// Traverse the settings list | |
foreach (KeyValuePair<string, string> pair in settings) | |
{ | |
// Get the setting value and test if settings are ok | |
string value = client.GetSetting(pair.Key); | |
if (pair.Value == value) | |
{ | |
Console.WriteLine("Key = " + pair.Key + ", Value = " + pair.Value); | |
} | |
else | |
{ | |
Console.WriteLine("Settings could not be retrieved"); | |
} | |
} | |
} |
Acceder a la información de color
El siguiente fragmento de código muestra cómo se pueden usar las funciones para acceder a la configuración de color del cliente.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret"); | |
string accessToken; | |
string refreshToken; | |
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken); | |
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail)) | |
{ | |
ColorsInfo colors = client.GetColors(); | |
Dictionary<string, Colors> palettes = colors.Calendar; | |
// Traverse the settings list | |
foreach (KeyValuePair<string, Colors> pair in palettes) | |
{ | |
Console.WriteLine("Key = " + pair.Key + ", Color = " + pair.Value); | |
} | |
Console.WriteLine("Update Date = " + colors.Updated); | |
} |
Trabajando con Citas
Aspose.Email proporciona características para trabajar con Citas en calendarios de Google. A continuación se presenta la lista de tareas que se pueden realizar en citas en el calendario de Google:
- Agregar citas.
- Recuperar la lista de citas.
- Recuperar una cita particular.
- Actualizar una cita.
- Mover una cita de un calendario a otro.
- Eliminar una cita.
IGmailClient proporciona funciones como CreateAppointment, FetchAppointment, UpdateAppointment, ListAppointments, MoveAppointment y DeleteAppointment.
Agregando una cita
El siguiente ejemplo de código demuestra la característica de agregar una cita en un calendario. Para lograr esto, siga los pasos:
- Crear e insertar un calendario.
- Recuperar la lista de citas de un nuevo calendario.
- Crear una cita.
- Insertar una cita.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret"); | |
string accessToken; | |
string refreshToken; | |
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken); | |
// Get IGmailclient | |
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail)) | |
{ | |
// Create local calendar | |
Aspose.Email.Clients.Google.Calendar calendar1 = new Aspose.Email.Clients.Google.Calendar("summary - " + Guid.NewGuid().ToString(), null, null, "Europe/Kiev"); | |
// Insert calendar and get id of inserted calendar and Get back calendar using an id | |
string id = client.CreateCalendar(calendar1); | |
Aspose.Email.Clients.Google.Calendar cal1 = client.FetchCalendar(id); | |
string calendarId1 = cal1.Id; | |
try | |
{ | |
// Retrieve list of appointments from the first calendar | |
Appointment[] appointments = client.ListAppointments(calendarId1); | |
if (appointments.Length > 0) | |
{ | |
Console.WriteLine("Wrong number of appointments"); | |
return; | |
} | |
// Get current time and Calculate time after an hour from now | |
DateTime startDate = DateTime.Now; | |
DateTime endDate = startDate.AddHours(1); | |
// Initialize a mail address collection and set attendees mail address | |
MailAddressCollection attendees = new MailAddressCollection(); | |
attendees.Add("User1.EMail@domain.com"); | |
attendees.Add("User3.EMail@domain.com"); | |
// Create an appointment with above attendees | |
Appointment app1 = new Appointment("Location - " + Guid.NewGuid().ToString(), startDate, endDate, User2.EMail, attendees); | |
// Set appointment summary, description, start/end time zone | |
app1.Summary = "Summary - " + Guid.NewGuid().ToString(); | |
app1.Description = "Description - " + Guid.NewGuid().ToString(); | |
app1.StartTimeZone = "Europe/Kiev"; | |
app1.EndTimeZone = "Europe/Kiev"; | |
// Insert appointment in the first calendar inserted above and get back inserted appointment | |
Appointment app2 = client.CreateAppointment(calendarId1, app1); | |
// Retrieve appointment using unique id | |
Appointment app3 = client.FetchAppointment(calendarId1, app2.UniqueId); | |
} | |
catch (Exception ex) | |
{ | |
Console.WriteLine(ex.Message); | |
} | |
} |
Recuperar y actualizar una cita
Aquí se demuestra la recuperación y actualización del calendario de la siguiente manera:
- Recuperar una cita particular.
- Modificar la cita.
- Actualizar la cita en el calendario.
Se asume que un calendario con el Id “calendarId” y el Id único de la cita “AppointmentUniqueId” ya están extraídos. El siguiente fragmento de código muestra cómo recuperar y actualizar una cita.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret"); | |
string accessToken; | |
string refreshToken; | |
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken); | |
// Get IGmailclient | |
using (IGmailClient client = GmailClient.GetInstance(accessToken, User2.EMail)) | |
{ | |
string calendarId = client.ListCalendars()[0].Id; | |
string AppointmentUniqueId = client.ListAppointments(calendarId)[0].UniqueId; | |
// Retrieve Appointment | |
Appointment app3 = client.FetchAppointment(calendarId, AppointmentUniqueId); | |
// Change the appointment information | |
app3.Summary = "New Summary - " + Guid.NewGuid().ToString(); | |
app3.Description = "New Description - " + Guid.NewGuid().ToString(); | |
app3.Location = "New Location - " + Guid.NewGuid().ToString(); | |
app3.Flags = AppointmentFlags.AllDayEvent; | |
app3.StartDate = DateTime.Now.AddHours(2); | |
app3.EndDate = app3.StartDate.AddHours(1); | |
app3.StartTimeZone = "Europe/Kiev"; | |
app3.EndTimeZone = "Europe/Kiev"; | |
// Update the appointment and get back updated appointment | |
Appointment app4 = client.UpdateAppointment(calendarId, app3); | |
} |
Mover y Eliminar una cita
La cita se puede mover proporcionando el calendario de origen, el calendario de destino y el Id único de una cita en el calendario de origen. El siguiente fragmento de código muestra cómo mover y eliminar una cita.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
GoogleTestUser User2 = new GoogleTestUser("user", "email address", "password", "clientId", "client secret"); | |
string accessToken; | |
string refreshToken; | |
GoogleOAuthHelper.GetAccessToken(User2, out accessToken, out refreshToken); | |
// Get IGmailclient | |
using (IGmailClient client = Aspose.Email.Clients.Google.GmailClient.GetInstance(accessToken, User2.EMail)) | |
{ | |
string SourceCalendarId = client.ListCalendars()[0].Id; | |
string DestinationCalendarId = client.ListCalendars()[1].Id; | |
string TargetAppUniqueId = client.ListAppointments(SourceCalendarId)[0].UniqueId; | |
// Retrieve the list of appointments in the destination calendar before moving the appointment | |
Appointment[] appointments = client.ListAppointments(DestinationCalendarId); | |
Console.WriteLine("Before moving count = " + appointments.Length); | |
Appointment Movedapp = client.MoveAppointment(SourceCalendarId, DestinationCalendarId, TargetAppUniqueId); | |
// Retrieve the list of appointments in the destination calendar after moving the appointment | |
appointments = client.ListAppointments(DestinationCalendarId); | |
Console.WriteLine("After moving count = " + appointments.Length); | |
// Delete particular appointment from a calendar using unique id | |
client.DeleteAppointment(DestinationCalendarId, Movedapp.UniqueId); | |
// Retrieve the list of appointments. It should be one less than the earlier appointments in the destination calendar | |
appointments = client.ListAppointments(DestinationCalendarId); | |
Console.WriteLine("After deleting count = " + appointments.Length); | |
} | |