Synchronizacja z kalendarzem Google-a

Chcę, aby aplikacja DesktopInfo pokazywała wydarzenia z kalendarza Google-a na moim pulpicie. Dzięki temu będę miał listę pod ręką. Jak przygotować odpowiedni kawałek kodu? Wykorzystamy tutaj oficjalne, przygotowane przez firmę Google biblioteki dla .net-a (do pobrania tutaj). To co będzie potrzebne do projektu to dodanie referencji:

Google.GData.AccessControl
Google.GData.Calendar
Google.GData.Client
Google.GData.Extensions

Tworzymy CalendarService – obiekt odpowiedzialny za połączenie (jako parametr konstruktora podajemy nazwę aplikacji – zupełna dowolność).

 

CalendarService calService = new CalendarService(„Calendar Reader”);

 

To co należy ustawić teraz to użytkownik, hasło i adres do usługi.

 

calService.Credentials = new GDataCredentials(„moje.konto@gmail.com”„moje.tajne.haslo”);
Uri postUri = new Uri(„http://www.google.com/calendar/feeds/default/private/full”);

 

oraz stworzyć zapytanie, które będzie wysłane do Google-a

 

EventQuery query = new EventQuery();
query.Uri = calendarUri;
query.StartTime = DateTime.Now.AddMonths(-1);
query.EndTime = DateTime.Now.AddMonths(12);

To co tutaj jest ciekawe, to możliwość ustawienia zakresu dat, jakie nas interesują. Im szerszy zakres, tym potencjalnie więcej wyników będzie trzeba przesłać przez sieć. Warto o tym pamiętać, bo aplikacja może być uruchamiana na powolnych połączeniach. Po ustawieniu parametrów pozostaje pobrać wyniki

EventFeed calFeed = calService.Query(query) as EventFeed;

I coś z nimi zrobić 🙂

foreach (EventEntry gcalEntry in calFeed.Entries) {
Console.WriteLine(gcalEntry.Times[0].StartTime);
Console.WriteLine(gcalEntry.Times[0].EndTime);
Console.WriteLine(gcalEntry.SelfUri.Content);

}

Jak wydać, przygotowana przez firmę Google udostępnia dane w sposób łatwy i przyjemny. Podobne API dostępne jest do innych usług jednak to czego mi brakuje to brak api do dostępu do listy zadań. Lista zadań dostępna jest w kalendarzu i poczcie Google-owej od dawna. Usługa ta powstała w ramach 20% wolnego czasu programistów i szybko okazało się, że jej lekkość i nieprzeładowana funkcjonalność zaskarbiła sobie wielu fanów – szkoda że nie doczekała się do dnia dzisiejszego swojego API.

Scroll to top