Bekerja dengan Kalender Gmail

Menambah, Mengedit, dan Menghapus Kalender

Aspose.Email memungkinkan aplikasi mengelola kalender Gmail menggunakan IGmailClient yang menyediakan fitur seperti menambah, menghapus, dan memperbarui kalender Gmail. Kelas klien ini mengembalikan daftar objek tipe ExtendedCalendar yang berisi informasi tentang item kalender Gmail. IGmailClient kelas ini menyediakan fungsi-fungsi berikut untuk kalender:

Dapatkan daftar semua kalender milik klien

  • deleteCalendar Dapat digunakan untuk menghapus kalender
  • fetchCalendar Dapat digunakan untuk mengambil kalender tertentu milik klien
  • updateCalendar Fungsi ini digunakan untuk menyisipkan kembali kalender yang dimodifikasi milik klien

Untuk mengakses kalender, GoogleTestUser diinisialisasi menggunakan kredensial akun Gmail. GoogleOAuthHelper digunakan untuk mendapatkan token akses pengguna yang selanjutnya digunakan untuk menginisialisasi IGmailClient.

Sisipkan, Ambil, dan Perbarui

Untuk menyisipkan kalender, inisialisasi sebuah Calendar objek tipe dan menyisipkannya menggunakan createCalendar fungsi. createCalendar mengembalikan ID kalender yang baru dimasukkan. ID ini dapat digunakan untuk mengambil kalender dari server. Potongan kode berikut menunjukkan cara menyisipkan, mengambil, dan memperbarui kalender.

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);
}

Hapus Kalender Tertentu

Untuk menghapus kalender tertentu, kita harus mendapatkan daftar semua kalender klien dan kemudian menghapusnya sesuai kebutuhan. listCalendars mengembalikan daftar ExtendedCalendar yang berisi kalender Gmail. Potongan kode berikut menunjukkan cara menghapus kalender tertentu.

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());
    }
}

Bekerja dengan Kontrol Akses Kalender

Aspose.Email memberikan kontrol penuh atas kontrol akses ke item kalender. listAccessRules fungsi disediakan oleh IGmailClient yang mengembalikan daftar AccessControlRule. Informasi aturan individual dapat diambil, dimodifikasi, dan disimpan kembali untuk kalender klien. IGmailClient berisi fungsi-fungsi berikut untuk mengelola aturan kontrol akses.

Potongan kode berikut menunjukkan cara fungsi yang digunakan untuk mengelola aturan akses:

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;
    }
}

Bekerja dengan Pengaturan Klien dan Info Warna

Aspose.Email mendukung akses ke pengaturan Klien dengan menggunakan IGmailClient.getSettings. Mengembalikan daftar pengaturan seperti di bawah ini:

  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

Info warna untuk klien juga dapat diambil menggunakan IGmailClient.getColors. Objek info warna ini mengembalikan daftar warna Latar Depan, warna latar belakang serta tanggal dan waktu pembaruan.

Akses Pengaturan Klien

Potongan kode berikut menunjukkan cara fungsi yang digunakan untuk mengakses pengaturan klien:

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");
        }
    }
}

Akses Info Warna

Potongan kode berikut menunjukkan cara fungsi yang digunakan untuk mengakses pengaturan warna klien.

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());
}

Bekerja dengan Janji

Aspose.Email menyediakan fitur untuk bekerja dengan Janji di kalender Google. Berikut adalah daftar tugas yang dapat dilakukan pada janji di kalender Google:

  1. Tambahkan Janji - createAppointment, importAppointment
  2. Ambil daftar janji - listAppointments
  3. Ambil janji tertentu - fetchAppointment, listAppointmentInstances
  4. Perbarui sebuah janji - updateAppointment
  5. Pindahkan janji dari satu kalender ke kalender lain - moveAppointment
  6. Hapus janji - deleteAppointment

Menambahkan Janji

Contoh kode berikut menunjukkan fitur menambahkan janji dalam kalender. Dalam contoh ini langkah‑langkah berikut diikuti:

  1. Buat dan sisipkan kalender.
  2. Ambil daftar janji dari kalender baru.
  3. Buat sebuah janji.
  4. Sisipkan janji.
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);
    }
    
}

Ambil dan Perbarui Janji

Berikut ini demonstrasi pengambilan dan pembaruan kalender:

  1. Ambil janji tertentu.
  2. Ubah janji.
  3. Perbarui janji di kalender.

Diasumsikan bahwa kalender dengan id "calendarId" dan ID unik janji "AppointmentUniqueId" sudah diekstrak. Potongan kode berikut menunjukkan cara mengambil dan memperbarui janji.

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);
}

Pindah dan Hapus Janji

Appointment dapat dipindahkan dengan memberikan kalender sumber, kalender tujuan, dan ID unik janji di kalender sumber. Potongan kode berikut menunjukkan cara memindahkan dan menghapus janji.

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);
}