使ってみよう! Windows Live SDK/API

第46回Hotmailカレンダーと連携するアプリの開発

はじめに

Windows Liveサービスと統合したアプリ開発を可能にするLive Connectを利用して、今回はHotmailカレンダーにアクセスしてみましょう。サンプルとして簡単なツールを作成します。また、プレリリース版のLive Connectには、よりHotmailカレンダーと連携できる内容が含まれていますので、こちらも併せて紹介します。

Live Connectについては、第42回から紹介しています[1]⁠。必要に応じて参照をお願いします。

Live HotmailカレンダーとLive Connect

Hotmailカレンダー図1は、Windows LiveサービスのWebアプリです。特徴のひとつは、カレンダーの共有機能です。個人や友だち、公開されているカレンダーを共有・購読でき、まとめて表示できます。カレンダーには異なるアクセス権限を設定でき、家族間で読み書きできるカレンダーなども作成可能です。

図1 Hotmailカレンダー 図1 Hotmailカレンダー

カレンダーは、Webサイト以外に、Windows LiveメールやOutlook、スマートフォンなどからもアクセスでき、予定やタスクを同期できます。追加した予定やタスクを、メールやLive Messengerで通知も行えます。

Live Connectを利用すると、ユーザーに代わりHotmailカレンダーへアクセスし、Windows Liveサービスと連携したアプリが作れます。たとえば、イベント情報などをユーザーのカレンダーに追加できます。

現在のLive Connectでは、ユーザーの予定を追加することしか許可されていませんが、今後のアップデートではカレンダーのアクセスなども予定されています。これにより、SNSでユーザーのカレンダーと統合したり、情報の取り込みといったことも可能になります。

予定の追加

それでは、さっそくHotmailカレンダーとの連携をみていきましょう。これまでの連載と同じくJavaScript APIREST APIを利用します。

REST APIを利用して予定(イベント)をカレンダーに追加します。JSON形式でEventオブジェクトを表し、HTTP POSTメソッドで https://apis.live.net/v5.0/me/events にアクセスします。JSON形式の値は次のような値です。

{
    "name": "SQLWorld★大阪#7", 
    "description": "初心者から中級者対象にSQLServerについて勉強",
    "start_time": "2011-10-15T13:00:00+0900", 
    "end_time": "2011-10-15T17:00:00+0900", 
    "location": "大阪市立市民交流センターよどがわ", 
    "is_all_day_event": false, 
    "availability": "busy", 
    "visibility": "public"
}

予定を追加するためにユーザーに要求する許可Scopeの値は、wl.events_createです。

Eventオブジェクトの内容は次の通りです。

プロパティ 説明
name string 予定の件名(255文字まで)
作成時必須
description string 説明(32768文字まで)
作成時必須
start_time string 開始日時(ISO 8601形式)
例: 2011-10-15T13:00:00+0900
作成時必須
end_time string 終了日時(ISO 8601形式)
location string 場所(1000文字まで)
is_all_day_event true/false 終日の予定かどうか
true または false
availability string 予定の公開方法
以下の4種類
free:空き時間
busy:予定あり
tentative:仮の予定
out_of_office:外出中
visibility string 公開範囲
public:公開(規定値)
private:非公開
updated_time string 予定の作成日時(ISO 8601形式)
読み取り専用で追加が成功したときにこの値が返ってきます。

作成時に指定する必要がある値は、name、description、start_timeです。それ以外の項目はオプションです。

サーバーからのレスポンスは、予定の追加に成功した場合JSON形式でEventオブジェクトが返ってきます。このとき予定が作成された日時(updated_time)が含まれています。

{
    "name": "SQLWorld★大阪#7", 
    "description": "初心者から中級者対象にSQLServerについて勉強", 
    "start_time": "2011-10-15T13:00:00+0900", 
    "end_time": "2011-10-15T17:00:00+0900", 
    "location": "大阪市立市民交流センターよどがわ", 
    "is_all_day_event": false, 
    "availability": "busy", 
    "visibility": "public",
    "updated_time":"2011-10-10T16:00:00+0000"
}

JavaScript APIで予定の追加

ここまでの内容をJavaScript APIを利用してコードで描いてみましょう。JavaScript APIについては第43回で詳しく説明しています。まず、フォームをHTMLで記述します。

日付と時刻の入力、ISO 8601形式の日付の変換に下記のライブラリーを使用しています。それぞれダウンロードして、参照して使用してください。

HTMLファイルの内容は次の通りです。

<!DOCTYPE html>

<html lang="ja">
    <head>
        <meta charset="utf-8" />
        <title>予定の追加</title>
        <!-- jQuery UI の CSS 参照 -->
        <link type="text/css" href="./css/ui-lightness/jquery-ui-1.8.16.custom.css" rel="stylesheet" />
        <!-- jQuery UI Timepicker の CSS 参照 -->
        <link type="text/css" href="./css/jquery.ui.timepicker.css" rel="stylesheet" />
        <!-- 必要に応じてこのサイト用の CSS を作成し参照します。内容はサンプルサイトを参照してください。 -->
        <link type="text/css" href="./css/main.css" rel="stylesheet" />

        <!-- JavaScript API ライブラリーの参照 -->
        <script src="https://js.live.net/v5.0/ja/wl.js"></script>
        <!-- jQuery, jQuery UI の参照 -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
        <!-- jQuery UI Timepicker と iso8601.js の参照 -->
        <script src="./jquery.ui.timepicker.js"></script>
        <script src="./iso8601.js"></script>
        <!-- このサイト用の JavaScript コードを  main.js に記述します。 -->
        <script src="./main.js"></script>
    </head>
    <body>
        <div>予定の追加</div>
        <table>
            <tr>
                <td class="cap txt">件名:</td>
                <td><input type="text" id="name" class="box txt" /></td>
            </tr>
            <tr>
                <td class="cap txt">場所:</td>
                <td><input type="text" id="loc" class="box txt" /></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="checkbox" id="all_day" /><label for="all_day" class="txt">終日</label></td>
            </tr>
            <tr>
                <td class="cap txt">開始:</td>
                <td>
                    <input type="text" id="from_date" class="date txt" />
                    <input type="text" id="from_time" class="time txt" />
                </td>
            </tr>
            <tr>
                <td class="cap txt">終了:</td>
                <td>
                    <input type="text" id="to_date" class="date txt" />
                    <input type="text" id="to_time" class="time txt" />
                </td>
            </tr>
            <tr>
                <td class="cap txt">説明:</td>
                <td>
                    <div>
                        <textarea id="desc" rows="4" class="box txt"></textarea>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="cap txt">公開方法:</td>
                <td>
                    <select id="availability" class="box txt">
                        <option value="busy">予定あり</option>
                        <option value="tentative">仮の予定</option>
                        <option value="free">空き時間</option>
                        <option value="out_of_office">外出中</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="2"><input type="checkbox" id="visibility" /><label for="visibility" class="txt">非公開</label></td>
            </tr>
            <tr>
                <td colspan="2">
                    <div id="signInButton"></div>
                    <div>
                        <input type="button" id="addButton" value="追加" />
                    </div>
                </td>
            </tr>
        </table>
        <div id="msg"></div>
    </body>
</html>

main.jsにUIの操作部分と、JavaScript APIを利用したコードを記述します。

main.js
$(function() {
    // picker の設定
    $('.date').datepicker({
        dateFormat: "yy/mm/dd"
    });
    $('.time').timepicker();

    // 終日をチェックした場合は時間の入力を無効にする
    $("#all_day").click(function() {
        if (this.checked) {
            $(".time").attr("disabled", "disabled");
        } else {
            $(".time").removeAttr("disabled");
        }
    });

    // サインイン・サインアウト状態によって追加ボタンの表示・非表示を切り替える
    WL.Event.subscribe("auth.login", function () {
        $("#addButton").show();
    });
    WL.Event.subscribe("auth.logout", function () {
        $("#addButton").hide();
    });

    // JavaScript API 初期処理
    WL.init({
        client_id: "ClientID" // Client ID を指定してください
    });

    // Sign-in ボタンの描画
    WL.ui({
        name: "signin",
        element: "signInButton",
        scope: ["wl.signin", "wl.events_create"],
        brand: "hotmail",
        theme: "white"
    });

    // 追加ボタン処理
    $("#addButton").click(function () {
        // 予定の開始・終了日時の設定        
        var from_date = $("#from_date");
        var from_time = $("#from_time");
        var to_date = $("#to_date")
        var to_time = $("#to_time");

        var start_time = from_date.datepicker("getDate");
        var end_time = to_date.datepicker("getDate");

        if (!start_time) {
            start_time = new Date();
        }
        if (start_time && from_time.val()) {            
            start_time.setHours(from_time.timepicker("getHour"), from_time.timepicker("getMinute"), 0);
        }
        if (!end_time && to_time.val()) {
            end_time = new Date();
        }
        if (end_time && to_time.val()) {
            end_time.setHours(to_time.timepicker("getHour"), to_time.timepicker("getMinute"), 0);
        }

        // REST API へ送信する内容の作成
        var body = {
            name: $("#name").val(),
            description: $("#desc").val(),
            is_all_day_event: true,
            start_time: isodate.format(start_time),
            location: $("#loc").val(),
            is_all_day_event: ($("#all_day").attr('checked')) ? true : false,
            availability: $("#availability").val(),
            visibility: ($("#visibility").attr('checked')) ? "private" : "public"
        };
        if (end_time) {
            body.end_time = isodate.format(end_time);
        }

        $("#msg").html("処理中です...");

        // REST API 呼出し
        WL.api({
            path: "me/events",
            method: "POST",
            body: body
        }, function (r) {
            if (r.error) {
                $("#msg").html("エラー: " + r.error.message);
            } else {
                $("#msg").html("予定を追加しました");
            }
        });
    });
});

以上で完了です。特に難しいことはしていません。JavaScript APIを利用すると簡単にWindows Liveサービスにアクセスできることがわかります。ここまでを実行してみましょう図2⁠。

図2 実行画面 図2 実行画面

サインイン時に表示される認可画面は図3のようになります。

図3 認可画面 図3 認可画面

追加ボタンをクリックすると、問題がなければ予定が追加されているはずです。Hotmailカレンダーで確認してみましょう。

Internet Explorer アクセラレータの作成

さて、ここまでで作成したものは、ユーザーが予定を入力してカレンダーに追加しているだけですので、ユーザー視点からみるとHotmailカレンダーを利用するのと変わりありません。そこで、Live Connectの内容とは少し離れますが、Internet Explorerのアクセラレータから使えるように改良してみます。

ユーザーがIT勉強会などのイベントページを表示しているとき、日時などのテキスト部分を選択し、アクセラレータから予定を追加するというような使い方を想定しています。ユーザーが能動的に予定を追加するのには変わりありませんが、ユーザーに代わって、Webサイトのタイトルや選択されたテキストから予定の項目を記入します。

ASP.NET Webページ

先ほどのHTMLファイルを編集して、HTMLファイルからASP.NET Webページに変更します。ASP.NET Webページのコードの記述は、Visual Studioや無償のWebMatrixで行えます。今回は、ASP.NET Webページを利用していますが、URLのクエリーからパラメーターを受け取り日付などの情報を抽出できればよいだけですので、JavaScriptやPHPなど言語や方法はASP.NET Webページだけに限りません。

ここではASP.NET Webページの詳細についてはふれませんので、必要に応じて、Razor 構文と ASP.NET Web ページなどのドキュメントを参照してください。

HTMLファイルから.vbhtmlファイルに変更します。次のようなコードを記述します。次のようなコードをファイルの先頭(<DOCTYPE html>の前)に記述します。

@Code
    Dim title = If(Request("title"), "")
    Dim text = If(Request("text"), "")

    ' 日付を表す正規表現のパターンを作成
    Dim w1 = "(\(([月火水木金土日](曜日|曜)?|(sun|mon|tue|wed|thu|fri|sat)\.?)\))?[\p{Po}\p{Z}]*"
    Dim d1 = "((?<year{0}>20([0-9]{2}))\s*[年/])?\s*(?<month{0}>[0-1]?[0-9])\s*[月/]\s*(?<day{0}>[0-9]{1,2})\s*日?[\p{Po}\p{Z}]*" & w1
    Dim t1 = "(AM|PM|午前|午後)?\s*(?<hour{0}>[0-2]?[0-9])\s*:\s*(?<min{0}>[0-5]?[0-9])"
    Dim dash = "\s*(\-|to|~|\s)\s*"
    Dim patterns = New List(Of String)
    patterns.Add((d1 & t1).Replace("{0}", "0") & dash & (d1 & t1).Replace("{0}", "1"))
    patterns.Add((d1 & t1).Replace("{0}", "0") & dash & t1.Replace("{0}", "1"))
    patterns.Add((d1 & t1).Replace("{0}", "0"))
    patterns.Add(d1.Replace("{0}", "0"))

    Dim fromDate = ""
    Dim fromTime = ""
    Dim toDate = ""
    Dim toTime = ""
    Dim input = text.Replace("(", "(").Replace(")", ")")

    ' 正規表現と一致する箇所を抽出し、開始・終了時間の値を作成
    For Each p In patterns        
        Dim m = Regex.Match(input, p, RegexOptions.IgnoreCase Or RegexOptions.Singleline)

        Dim md As String
        If m.Success Then
            ' Start Time

            md = m.Groups("month0").Value.PadLeft(2, "0"c) & "/" & m.Groups("day0").Value.PadLeft(2, "0"c)
            If m.Groups("year0").Success Then
                fromDate = m.Groups("year0").Value & "/" & md
            Else
                fromDate = Now.ToString("yyyy") & "/" & md
            End If
            If m.Groups("hour0").Success Then
                fromTime = m.Groups("hour0").Value.PadLeft(2, "0"c) & ":" & m.Groups("min0").Value.PadLeft(2, "0"c)
            End If

            ' End Time
            If m.Groups("month1").Success Then
                md = m.Groups("month1").Value.PadLeft(2, "0"c) & "/" & m.Groups("day1").Value.PadLeft(2, "0"c)
                If m.Groups("year1").Success Then
                    toDate = m.Groups("year1").Value & "/" & md
                Else
                    toDate = Now.ToString("yyyy") & "/" & md
                End If
            ElseIf m.Groups("hour1").Success Then
                toDate = fromDate
            End If
            If m.Groups("hour1").Success Then
                toTime = m.Groups("hour1").Value.PadLeft(2, "0"c) & ":" & m.Groups("min1").Value.PadLeft(2, "0"c)
            End If
            Exit For
        End If
    Next
End Code

コードのほとんどの内容が、URLのクエリーで受け取ったテキストから日付の部分を探し、DatepickerとTimepickerで使用する形式を生成しているだけです。厳密にチェックしていませんので不正な値になる可能性もありますが、とりあえずはこれでよしとします。

続いてHTMLコード部分を編集します。作成した値をvalue属性に指定します。下記のコードを参考に、該当部分を編集してください。

<tr>
    <td class="cap txt">件名:</td>
    <td><input type="text" id="name" class="box txt" value="@title" /></td>
</tr>

<tr>
    <td class="cap txt">開始:</td>
    <td>
        <input type="text" id="from_date" class="date txt" value="@fromDate" />
        <input type="text" id="from_time" class="time txt" value="@fromTime" />
    </td>
</tr>
<tr>
    <td class="cap txt">終了:</td>
    <td>
        <input type="text" id="to_date" class="date txt" value="@toDate" />
        <input type="text" id="to_time" class="time txt" value="@toTime" />
    </td>
</tr>

Internet Explorerアクセラレータ

作成したASP.NET Webページへアクセラレータからアクセスできるようにします。アクセラレータの開発についても、詳細は紹介できませんが簡単ですのですぐに理解できるかと思います。技術的な内容は、IEデベロッパーセンターも参照するとよいでしょう。

OpenService アクセラレータフォーマットと呼ばれるXML形式で、アクセラレータの情報を記述します。次のようなXMLファイルを用意します。

<?xml version="1.0" encoding="UTF-8"?>
<openServiceDescription xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0">
    <homepageUrl>http://example.jp</homepageUrl>
    <display>
        <name>Hotmail カレンダーへ予定を追加</name>
        <icon>http://example.jp/favicon.ico</icon>
    </display>
    <activity category="Add">
        <activityAction context="selection" >
            <execute action="http://example.jp/event.vbhtml">
                <parameter name="title" value="{documentTitle}" type="text" /> 
                <parameter name="text" value="{selection}" type="text" /> 
            </execute>
        </activityAction>
    </activity>
</openServiceDescription>

内容は、⁠追加」カテゴリのアクセラレータで、クリックしたときにWebサイトのタイトルと選択しているテキストの内容を送信するよう記述しています。<execute>要素のaction属性値は、ASP.NET WebページへのURLを指定します。

さらに別途、Webページを用意して、次のコードを使ってアクセラレータのインストールを行います。

<!DOCTYPE html>

<html lang="ja">
    <head>
        <meta charset="utf-8" />
        <title>アクセラレータの追加</title>
        <script>
            function addService() {
                // OpenServiceアクセラレータフォーマットの XML ファイルの URL を指定すること
                window.external.AddService("./event.xml");
            }
        </script>
    </head>
    <body>
        <input type="button" value="アクセラレータの追加" onclick="addService();" />
    </body>
</html>

ASP.NET WebページとOpenServiceアクセラレータフォーマットのファイルは、同じドメインのURLに配置するようにします。上記コードよりインストールを行うと確認ダイアログ図4が表示されます。

図4 アクセラレータの追加
図4 アクセラレータの追加

インストール後、適当なWebページのテキストを選択しアクセラレータを使ってみましょう。簡単に予定の追加ができるようになりました図5⁠。

図5 アクセラレータで予定の追加
図5 アクセラレータで予定の追加

実用するにはまだまだ機能的に不足しているところもありますが、開発の参考にして頂けると幸いです。

プレリリース版のLive Connectの利用

ここからは、2011年11月にリリースが予定されている、プレリリース版のLive Connectについて少し紹介します。現在は、Technical PreviewとしてMicrosoft ConnectからLive SDKをダウンロードできます。以下の内容はまだ正式リリース前の内容であり、変更される可能性がありますので注意してください。

Hotmailカレンダーに関連した内容では、現在の予定の追加のみの操作から、ほぼすべての操作が可能になります。

  • カレンダーの作成・参照・更新・削除
  • 公開されているカレンダーの購読
  • 予定の作成・参照・更新・削除
  • 友だちの予定の参照

プレリリースの内容を試すには、現在のAPIで参照しているURLを、次のURLに置き換えます。

  • REST API:https://beta.apis.live.net/v5.0
  • JavaScript APIライブラリー:https://beta-js.live.net/v5.0/wl.js

ただし執筆時点では、JavaScript APIですべてのプレリリースの内容を利用できませんでした。動作確認にはREST APIを直接利用することも必要です。また、REST APIについても正しく動作しない可能性がありますので注意してください。

カレンダーの操作

それでは、新しい内容についてみていきましょう。現在のバージョンではユーザーのカレンダーに予定が追加されるのみですが、カレンダーのアクセスが可能になっています。それにともなって新しくCalendarオブジェクトを扱います。Calendarオブジェクトの内容は次の通りです。情報の読み書きができるようになるため、R/Wで読み取り(R)と書き込み(W)可能かも示しています。

プロパティ R/W 説明
id string R カレンダーのID
name string RW 名前
description string/null RW 説明
created_time string R 作成日時
updated_time string R 更新日時
from object R カレンダーの所有者を示すオブジェクト
name(fromオブジェクト) string R 所有者名
id(fromオブジェクト) string R 所有者のID
is_default true/false R デフォルトのカレンダーかどうか
true または false
subscription_location string RW カレンダーのURL
公開されているカレンダーを購読している場合に使用
permissions string R アクセス権限(共有時の設定)
以下のいずれか
free_busy:空き時間情報の表示
limited_details:詳細の表示
read:空き時間情報・タイトル・場所の表示
read_write:表示・編集・削除
co_owner:共同所有者
owner:所有者

カレンダーのアクセスに必要なScopeも追加されています。参照だけであればwl.calendars更新などの操作を行う場合はwl.calendars_updateのScopeを指定します。認可画面の表示は図6のようになります。プレリリース版は日本語に対応していません。

図6 カレンダー操作の認可画面
図6 カレンダー操作の認可画面

この後のカレンダー操作などを試す場合も、アクセストークンが必要です。下記の認可画面のURLへアクセスするなどして、プレリリース版のScopeに対して、アプリへの認可処理を行ってください。

  • https://oauth.live.com/authorize?client_id=CLIENT_ID&scope=wl.calendars+wl.calendars_update&response_type=token&redirect_uri=REDIRECT_URL&local=ja

ここからは、簡単にREST APIでのカレンダー操作について紹介します。今回は省略しますが、JavaScript APIからアクセスも可能です(プレリリース版では動作しない可能性あり⁠⁠。さらに、.NET Framework向けのライブラリーが提供され、C#などの言語からも簡単にアクセスできる予定です。

カレンダーの参照

サインインしているユーザーのカレンダー一覧を参照するには、REST APIでme/calendarsにHTTP GETメソッドでアクセスします。

  • https://beta.apis.live.net/v5.0/me/calendars?
      access_token=ACCESS_TOKEN

Webブラウザーを使用して直接参照した結果を図7に示します。

図7 カレンダー一覧の取得
図7 カレンダー一覧の取得

ユーザーのIDを直接、USER_ID/calendarsのように指定してアクセスもできます。me/calendars?limit=2&offset=3 のようにパラメーターを指定し、取得件数と取得位置の指定も可能です。

また、カレンダーのIDを使用して、ひとつのカレンダーの情報の参照も可能です。

  • https://beta.apis.live.net/v5.0/calendar.xxxx?
      access_token=ACCESS_TOKEN

カレンダーの削除

カレンダーの削除は、HTTP DELETEメソッドでカレンダーにアクセスします。

カレンダーの作成

カレンダーの作成は、HTTP POSTメソッドで、me/calendars、またはユーザーのIDを指定したUSER_ID/calendarsに、新しいカレンダーの情報(Calendarオブジェクト)をアップロードします。

カレンダーの更新

カレンダーの情報を更新するには、HTTP PUTメソッドでカレンダーにアクセスします。

カレンダーの購読

公開されているカレンダーを購読するには、HTTP POSTメソッドで、me/calendars、またはUSER_ID/calendarsに以下のようなsubscription_locationを指定したCalendarオブジェクトをアップロードします。

{
    name: "Anime/game character birthdays",
    subscription_location: "webcal://ical.mac.com/fredduck/Anime47Game32Birthdays.ics"
}

予定の操作

プレリリース版では、Eventオブジェクトの項目が追加されています。現在の内容に加え、次の項目が増えています。

プロパティ R/W 説明
id string R 予定のID
created_time string R 作成日時
calendar_id string RW 予定が含まれているカレンダーのID
from object R 予定の作成者を示すオブジェクト
id(fromオブジェクト) string R 作成者のID
is_recurrent true/false R 繰り返しありの予定かどうか
trueまたはfalse
recurrence string R 繰り返しパターンの説明
reminder_time number RW アラートする時間(予定の何分前かを指定)

予定の作成だけでは予定のIDは必要ありませんでしたが、参照や更新が可能になるため、ID情報が増えています。その他、繰り返しの予定の参照や、アラート設定などの情報が追加されています。

予定のアクセスに必要なScopeは、wl.events_createwl.calendarsです。友だちのカレンダーや予定の参照は、wl.contacts_calendarsを指定します。

予定の参照

サインインしているユーザーの予定一覧を参照するには、REST APIでme/eventsにHTTP GETメソッドでアクセスします。

  • https://beta.apis.live.net/v5.0/me/events?
      access_token=ACCESS_TOKEN

Webブラウザーを指定して直接参照した結果を図8に示します。

図8 予定一覧の取得
図8 予定一覧の取得

以下の指定で、取得する予定を選択できます。

  • 予定IDを指定して、特定の予定の取得
  • ユーザーIDを指定して、特定のユーザーの予定一覧を取得USER_ID/events)
  • カレンダーIDを指定して、特定のカレンダーの予定一覧を取得CALENDAR_ID/events)

さらに、events?start_time=2011-08-01T00:00:00Z&end_time=2011-08-03T00:00:00Z のようにパラメーターを指定し、特定の範囲の予定の取得も可能です。

予定の削除

予定の削除は、HTTP DELETEメソッドで予定にアクセスします。

予定の作成

予定の作成(追加)は、既に説明した通りです。ただし、指定できる項目が増えています。特定のカレンダーに予定を作成するには、カレンダーのpermissionsの値がowner、co-owner、read-writeのいずれかの場合にのみ可能です。繰り返しありの予定はLive Connectから作成できません。

予定の更新

予定の内容を更新するには、HTTP PUTメソッドで予定にアクセスします。内容の更新も、カレンダーのpermissionsの値がowner、co-owner、read-writeのいずれかの場合にのみ可能です。

おわりに

以上のように、プレリリース版の内容をみると、Hotmailカレンダーの多くの機能をアプリから利用可能になる予定です。現在は予定の追加のみですが、今後はカレンダー操作も可能になりますので、各種Webサービスを利用してイベント情報を収取し、ユーザーの興味のあるカレンダーをプログラムから作成するといったこともできそうですね。今のうちにおもしろい使い方を考えておくと良いかもしれません。

また、Live Connectのプレリリースの内容は今回で紹介しただけではありません。その他の情報については、今後の連載で紹介していきたいと思います。

おすすめ記事

記事・ニュース一覧