Travailler avec les calendriers Gmail

Ajouter, modifier et supprimer un calendrier

Aspose.Email permet aux applications de gérer les calendriers Gmail en utilisant IGmailClient qui offre des fonctionnalités telles que l’ajout, la suppression et la mise à jour des calendriers Gmail. Cette classe client renvoie une liste d’objets de type ExtendedCalendar contenant des informations sur les éléments de calendrier Gmail. IGmailClient la classe expose les fonctions suivantes pour les calendriers :

Obtenir la liste de tous les calendriers d’un client

  • deleteCalendar Elle peut être utilisée pour supprimer un calendrier
  • fetchCalendar Elle peut être utilisée pour récupérer un calendrier particulier d’un client
  • updateCalendar Cette fonction est utilisée pour réinsérer un calendrier modifié d’un client

Pour accéder aux calendriers, GoogleTestUser est initialisé avec les identifiants d’un compte Gmail. GoogleOAuthHelper est utilisé pour obtenir le jeton d’accès de l’utilisateur, qui est ensuite utilisé pour initialiser IGmailClient.

Insérer, récupérer et mettre à jour

Pour insérer un calendrier, initialisez un Calendar objet de type et l’insérer en utilisant createCalendar fonction. createCalendar renvoie l’ID du calendrier nouvellement inséré. Cet ID peut être utilisé pour récupérer le calendrier depuis le serveur. L’extrait de code suivant montre comment insérer, récupérer et mettre à jour le calendrier.

try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
    // Insert, get and update calendar
    Calendar calendar = new Calendar("Summary", "Description", "Location", "America/Los_Angeles");

    // Insert calendar and Retrieve same calendar using id
    String id = client.createCalendar(calendar);
    Calendar cal = client.fetchCalendar(id);

    // Change information in the fetched calendar and Update calendar
    cal.setDescription("New Description");
    cal.setLocation("New Location");
    client.updateCalendar(cal);
}

Supprimer un calendrier particulier

Pour supprimer un calendrier particulier, nous devons obtenir la liste de tous les calendriers d’un client, puis le supprimer selon les besoins. listCalendars renvoie la liste de ExtendedCalendar qui contient les calendriers Gmail. L’extrait de code suivant montre comment supprimer un calendrier particulier.

try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
    // Access and delete calendar with summary starting from "Calendar summary"
    String summary = "Calendar summary";

    // Get calendars list
    ExtendedCalendar[] lst = client.listCalendars();

    for (ExtendedCalendar extCal : lst) {
        // Delete selected calendars
        if (extCal.getSummary().startsWith(summary))
            client.deleteCalendar(extCal.getId());
    }
}

Travailler avec le contrôle d’accès au calendrier

Aspose.Email offre un contrôle total sur le contrôle d’accès aux éléments du calendrier. listAccessRules fonction est exposée par IGmailClient qui renvoie la liste de AccessControlRule. Les informations d’une règle individuelle peuvent être récupérées, modifiées et sauvegardées à nouveau pour le calendrier d’un client. IGmailClient contient les fonctions suivantes pour gérer les règles de contrôle d’accès.

L’extrait de code suivant montre comment les fonctions sont utilisées pour gérer les règles d’accès :

try (IGmailClient client = GmailClient.getInstance(accessToken, 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].getId();
    AccessControlRule[] roles1 = client.listAccessRules(calendarId);

    // Create a local access control rule and Set rule properties
    AccessControlRule rule = new AccessControlRule();
    rule.setRole(AccessRole.reader);
    rule.setScope(new AclScope(AclScopeType.user, email2));

    // Insert new rule for the calendar. It returns the newly created rule
    AccessControlRule createdRule = client.createAccessRule(calendarId, rule);

    // 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) {
        System.out.println("List lengths are ok");
    } else {
        System.out.println("List lengths are not ok");
        return;
    }

    // Change rule and Update the rule for the selected calendar
    createdRule.setRole(AccessRole.writer);
    AccessControlRule updatedRule = client.updateAccessRule(calendarId, createdRule);

    // Retrieve individaul rule against a calendar
    AccessControlRule fetchedRule = client.fetchAccessRule(calendarId, createdRule.getId());

    // Delete particular rule against a given calendar and Retrieve the all rules list for the same calendar
    client.deleteAccessRule(calendarId, createdRule.getId());
    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) {
        System.out.println("List lengths are same");
    } else {
        System.out.println("List lengths are not equal");
        return;
    }
}

Travailler avec les paramètres du client et les informations de couleur

Aspose.Email prend en charge l’accès aux paramètres du client en utilisant IGmailClient.getSettings. Elle renvoie la liste des paramètres comme indiqué ci-dessous :

  1. dateFieldOrder
  2. displayAllTimezones
  3. hideInvitations
  4. format24HourTime
  5. defaultCalendarMode
  6. defaultEventLength
  7. locale
  8. remindOnRespondedEventsOnly
  9. alternateCalendar
  10. userLocation
  11. hideWeekends
  12. showDeclinedEvents
  13. weekStart
  14. weather
  15. customCalendarMode
  16. timezoneLabel
  17. timezone
  18. useKeyboardShortcuts
  19. country

De même, les informations de couleur pour les clients peuvent également être récupérées en utilisant IGmailClient.getColors. Cet objet d’information de couleur renvoie la liste des couleurs de premier plan, des couleurs d’arrière-plan ainsi que la date et l’heure de mise à jour.

Accéder aux paramètres du client

L’extrait de code suivant montre comment les fonctions sont utilisées pour accéder aux paramètres du client :

try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
    // Retrieve client settings
    Dictionary<String, String> settings = client.getSettings();
    if (settings.size() < 1) {
        System.out.println("No settings are available.");
        return;
    }

    // Traverse the settings list
    for (KeyValuePair<String, String> pair : settings) {
        // Get the setting value and test if settings are ok
        String value = client.getSetting(pair.getKey());
        if (pair.getValue().equals(value)) {
            System.out.println("Key = " + pair.getKey() + ", Value = " + pair.getValue());
        } else {
            System.out.println("Settings could not be retrieved");
        }
    }
}

Accéder aux informations de couleur

L’extrait de code suivant montre comment les fonctions sont utilisées pour accéder aux paramètres de couleur du client.

try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
    ColorsInfo colors = client.getColors();
    Dictionary<String, Colors> palettes = colors.getCalendar();

    // Traverse the settings list
    for (KeyValuePair<String, Colors> pair : palettes) {
        System.out.println("Key = " + pair.getKey() + ", Color = " + pair.getValue());
    }
    System.out.println("Update Date = " + colors.getUpdated());
}

Travailler avec les rendez-vous

Aspose.Email fournit des fonctionnalités pour travailler avec Rendez-vous dans les calendriers Google. Voici la liste des tâches pouvant être effectuées sur les rendez-vous dans Google Calendar :

  1. Ajouter des rendez-vous - createAppointment, importAppointment
  2. Récupérer la liste des rendez-vous - listAppointments
  3. Récupérer un rendez-vous particulier - fetchAppointment, listAppointmentInstances
  4. Mettre à jour un rendez-vous - updateAppointment
  5. Déplacer le rendez-vous d’un calendrier à un autre - moveAppointment
  6. Supprimer le rendez-vous - deleteAppointment

Ajout d’un Rendez‑vous

L’exemple de code suivant démontre la fonctionnalité d’ajout d’un rendez‑vous dans un calendrier. Dans cet exemple, les étapes suivantes sont suivies :

  1. Créer et insérer un calendrier.
  2. Récupérer la liste des rendez‑vous d’un nouveau calendrier.
  3. Créer un rendez‑vous.
  4. Insérer le rendez‑vous.
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
    // Create local calendar
    Calendar calendar1 = new Calendar("Summary", null, null, "Europe/Kiev");

    // Insert calendar and get id of inserted calendar and Get back calendar using an id
    String id = client.createCalendar(calendar1);
    Calendar cal1 = client.fetchCalendar(id);
    String calendarId1 = cal1.getId();

    try {
        // Retrieve list of appointments from the first calendar
        Appointment[] appointments = client.listAppointments(calendarId1);
        if (appointments.length > 0) {
            System.out.println("Wrong number of appointments");
            return;
        }

        // Get current time and Calculate time after an hour from now
        java.util.Calendar c = java.util.Calendar.getInstance();
        Date startDate = c.getTime();
        c.add(java.util.Calendar.HOUR_OF_DAY, 1);
        Date endDate = c.getTime();

        // 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", startDate, endDate, MailAddress.to_MailAddress(email2), attendees);

        // Set appointment summary, description, start/end time zone
        app1.setSummary("New Summary");
        app1.setDescription("New Description");
        app1.setStartTimeZone("Europe/Kiev");
        app1.setEndTimeZone("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.getUniqueId());
    } catch (Exception ex) {
        System.err.println(ex);
    }
    
}

Récupérer et Mettre à Jour le Rendez‑vous

Voici la récupération et la mise à jour du calendrier démontrées comme suit :

  1. Récupérer un rendez‑vous particulier.
  2. Modifier le rendez‑vous.
  3. Mettre à jour le rendez‑vous dans le calendrier.

On suppose qu’un calendrier avec l’ID "calendarId" et l’ID unique du rendez‑vous "AppointmentUniqueId" ont déjà été extraits. Le fragment de code suivant montre comment récupérer et mettre à jour le rendez‑vous.

try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
    String calendarId = client.listCalendars()[0].getId();
    String AppointmentUniqueId = client.listAppointments(calendarId)[0].getUniqueId();

    // Retrieve Appointment
    Appointment app3 = client.fetchAppointment(calendarId, AppointmentUniqueId);
    // Change the appointment information
    app3.setSummary("New Summary");
    app3.setDescription("New Description");
    app3.setLocation("New Location");
    app3.setFlags(AppointmentFlags.AllDayEvent);
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.add(java.util.Calendar.HOUR_OF_DAY, 2);
    app3.setStartDate(c.getTime());
    c.add(java.util.Calendar.HOUR_OF_DAY, 1);
    app3.setEndDate(c.getTime());
    app3.setStartTimeZone("Europe/Kiev");
    app3.setEndTimeZone("Europe/Kiev");
    // Update the appointment and get back updated appointment
    Appointment app4 = client.updateAppointment(calendarId, app3);
}

Déplacer et Supprimer le Rendez‑vous

Appointment peut être déplacé en fournissant le calendrier source, le calendrier de destination et l’identifiant unique du rendez-vous dans le calendrier source. Le fragment de code suivant montre comment déplacer et supprimer le rendez-vous.

try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
    String SourceCalendarId = client.listCalendars()[0].getId();
    String DestinationCalendarId = client.listCalendars()[1].getId();
    String TargetAppUniqueId = client.listAppointments(SourceCalendarId)[0].getUniqueId();

    // Retrieve the list of appointments in the destination calendar before moving the appointment
    Appointment[] appointments = client.listAppointments(DestinationCalendarId);
    System.out.println("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);
    System.out.println("After moving count = " + appointments.length);

    // Delete particular appointment from a calendar using unique id
    client.deleteAppointment(DestinationCalendarId, Movedapp.getUniqueId());

    // Retrieve the list of appointments. It should be one less than the earlier appointments in the destination calendar
    appointments = client.listAppointments(DestinationCalendarId);
    System.out.println("After deleting count = " + appointments.length);
}