uniface.hub

uniface.hub

ユニフェイスの開発者ブログ


Title GraphAPIでOutlookからスケジュールを取得してみた
  • 2022年8月1日
  • 澤田諒
GraphAPIでOutlookからスケジュールを取得してみた

こんにちは。澤田です。
今回Outlookからスケジュールを取得し、表示するアプリケーションの検証を行ったので共有します。

事前準備

実際にAzure上からアプリの登録を行います。

1. [アプリの登録]をクリック

2. [新規登録]をクリック

3. [登録]をクリック

4. 追加したアプリを選択します。

5. 作成したアプリクライアントID, テナントIDを控えます。

6. [新しいクライアントシークレット]からクライアントシークレットを作成し、値を控えます。

7. [APIのアクセス許可]をクリックし、[アクセス許可の追加]から下記の権限を付与します。

これで事前準備はOKです。

実装サンプル

今まで控えた認証情報をコードに記述することで、直近の予定を取得することができます。
日付範囲での検索なども可能ですが、また別の機会で説明することにします。

using Azure.Identity;
using Microsoft.Graph;

var scopes = new[] { "https://graph.microsoft.com/.default" };

// いままで取得した認証情報を記載する
var tenantId = "";
var clientId = "";
var clientSecret = "";
var email = "";

var options = new TokenCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};

var clientSecretCredential = new ClientSecretCredential(
    tenantId, clientId, clientSecret, options);

var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

var events = await graphClient.Users[email].Events.Request().GetAsync();

foreach (var item in events)
{
    var subject = item.Subject;
    var time = DateTime.Parse(item.Start.DateTime);

    Console.WriteLine($"{time.ToString("yyyy/MM/dd")}: {subject}");
}

さいごに

Azureの設定やGraphAPIの使い方など詰まるところはありましたが、意外と簡単にカレンダー情報を取得することができました。
GraphAPIには闇が深い部分もあるそうですが、今回は触れずにすみました。。。