2011-07-07 35 views
1

GoogleカレンダーのWeb UIに、カレンダーの.icalバージョンをダウンロードするオプションがあることがわかります。私は自分のアプリケーションでこれをやりたいです。私は何かがある場合はインターネットとドキュメントを見ていますが、何も見つかりません... APIがこの機能を提供していますか?はいの場合、どうすればこの作業を開始できますか?GoogleカレンダーAPIの.icalのインポート/エクスポート

答えて

4

あなたの質問を理解するために、アプリケーションの特定のカレンダーイベントデータを動的に埋め込んだWebアプリケーションに「ダウンロード」ボタンを提供したいと考えていますか?

Mimeタイプが異なるが、文字ファイル(または正確には.icsファイル)を文字列として考える。以下は、iCalendar形式の基本について説明します。ASP.NETで

http://en.wikipedia.org/wiki/ICalendar

をあなたは必要としない場合には、より効率的であるので、私はハンドラ(代わりに.aspxのの.ashx)を作成お勧めします完全なウェブページを提供する。ハンドラでProcessRequestメソッドをこのようなものに置き換えてください(クレジットはhttp://webdevel.blogspot.com/2006/02/how-to-generate-icalendar-file-aspnetc.htmlになります)

private string DateFormat 
{ 
    get { return "yyyyMMddTHHmmssZ"; } // 20060215T092000Z 
} 

public void ProcessRequest(HttpContext context) 
{ 
    DateTime startDate = DateTime.Now.AddDays(5); 
    DateTime endDate = startDate.AddMinutes(35); 
    string organizer = "[email protected]"; 
    string location = "My House"; 
    string summary = "My Event"; 
    string description = "Please come to\\nMy House"; 

    context.Response.ContentType="text/calendar"; 
    context.Response.AddHeader("Content-disposition", "attachment; filename=appointment.ics"); 

    context.Response.Write("BEGIN:VCALENDAR"); 
    context.Response.Write("\nVERSION:2.0"); 
    context.Response.Write("\nMETHOD:PUBLISH"); 
    context.Response.Write("\nBEGIN:VEVENT"); 
    context.Response.Write("\nORGANIZER:MAILTO:" + organizer); 
    context.Response.Write("\nDTSTART:" + startDate.ToUniversalTime().ToString(DateFormat)); 
    context.Response.Write("\nDTEND:" + endDate.ToUniversalTime().ToString(DateFormat)); 
    context.Response.Write("\nLOCATION:" + location); 
    context.Response.Write("\nUID:" + DateTime.Now.ToUniversalTime().ToString(DateFormat) + "@mysite.com"); 
    context.Response.Write("\nDTSTAMP:" + DateTime.Now.ToUniversalTime().ToString(DateFormat)); 
    context.Response.Write("\nSUMMARY:" + summary); 
    context.Response.Write("\nDESCRIPTION:" + description); 
    context.Response.Write("\nPRIORITY:5"); 
    context.Response.Write("\nCLASS:PUBLIC"); 
    context.Response.Write("\nEND:VEVENT"); 
    context.Response.Write("\nEND:VCALENDAR"); 
    context.Response.End(); 
} 
+0

うわー、ありがとう! :-) しかし、私はASP.NETでそれをやっていないと私はそれを知っていないよ。これはC#で開発しているスタンドアロンアプリケーションです。 Googleカレンダーにはこのボタンがあり、それをクリックすると.icsファイルがダウンロードされます。 .icsファイルのアドレスを取得する場所と実装方法はわかりません。 大変ありがとうございます。 – DimitrisZli

+0

タグクラウドでC#と.NETが見えて、ASP.NETに飛びついた。あなたがしたいことは、特定のGoogleカレンダーの.icsファイルのURLを見つけて、そのURLをアプリケーション内で使用することだと思います。あれは正しいですか?カレンダーが公開カレンダーとして表示されている場合は、緑のICALボタンを右クリックしてそのURLをコピーするだけです。私はあなたが個人的なカレンダーにもっと動的な方法でアクセスする必要があると思っています。その場合は、.NET用GoogleカレンダーAPIを使用する必要があります:http://code.google.com/apis/calendar/data/2.0/developers_guide_dotnet.html –

関連する問題