Data API Developer’s Guide: .NET
How to Read the Google Calendar in C#
.NET Client Library Developer’s Guide(日本語訳 原文入り)
予定取得のサンプル
/* Google Calendarからデータを取得するためのサンプル。 (c) 2011 Tadahiro Ishisaka Source Code License : Apache License, Version 2.0 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using Google.GData.Client; using Google.GData.Calendar; using Google.GData.Extensions; using Google.GData.AccessControl; namespace GCal1 { class Program { static private Listevents; //予定のリスト static private List dates; //予定のある日付のリスト static void Main(string[] args) { events = new List (); dates = new List (); //ログインする CalendarService service = new CalendarService("Gcal1"); //認証設定 service.setUserCredentials("HOGE@gmail.com", "PASSWORD"); //カレンダーのリストを取得し、表示する。 CalendarQuery cQuery = new CalendarQuery(); cQuery.Uri = new Uri("https://www.google.com/calendar/feeds/default/allcalendars/full"); CalendarFeed cFeeds = service.Query(cQuery); Console.WriteLine("私のカレンダー"); foreach (var entry in cFeeds.Entries) { //カレンダーのタイトルを表示 Console.WriteLine(entry.Title.Text); //カレンダーのURIを表示 Console.WriteLine(entry.Content.Src.Content); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); EventQuery query = new EventQuery(); query.Uri = new Uri(entry.Content.Src.Content); query.StartTime = DateTime.Today; query.EndTime = DateTime.Today.AddMonths(3); query.SortOrder = CalendarSortOrder.ascending; //あんまり当てにならない //取得して表示 EventFeed feeds = service.Query(query) as EventFeed; //各カレンダーの予定を取得する。 foreach (EventEntry cEntry in feeds.Entries) { events.Add(cEntry); cEntry.Times.ToList().ForEach(d => { if (dates.Count() > 0) { //重複した日付は日付のリストに保存しない if (dates.FindIndex(day => { if (day.Date == d.StartTime.Date) return true; else return false; }) == -1) { dates.Add(d.StartTime.Date); } } else { dates.Add(d.StartTime.Date); } }); } } //予定の表示 Console.WriteLine("今後3ヶ月の予定\n\r"); dates.Sort(); dates.ForEach(d => { List dayEvents = events.FindAll(e => { if (d.Date == e.Times.First().StartTime.Date || d.Date == e.Times.First().EndTime.Date) return true; else return false; }); Console.WriteLine(d.Date.ToString()); Console.WriteLine(""); dayEvents.ForEach(e => { Console.WriteLine("日時:{0} - {1}", e.Times.First().StartTime, e.Times.First().EndTime); Console.WriteLine("件名:{0}", e.Title.Text); Console.WriteLine("場所:{0}", e.Locations.First().ValueString); Console.WriteLine(e.Content.Content); Console.WriteLine("--------------------------------------------------------------"); }); Console.WriteLine("=============================================================="); }); Console.Read(); } } }
コメント