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 List events; //予定のリスト
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();
}
}
}
コメント