- 2022年8月1日
GraphAPIでOutlookからスケジュールを取得してみた
こんにちは。澤田です。
今回Outlookからスケジュールを取得し、表示するアプリケーションの検証を行ったので共有します。
事前準備
実際にAzure上からアプリの登録を行います。
1. [アプリの登録]をクリック

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

3. [登録]をクリック

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

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

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

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

実装サンプル
今まで控えた認証情報をコードに記述することで、直近の予定を取得することができます。
日付範囲での検索なども可能ですが、また別の機会で説明することにします。
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には闇が深い部分もあるそうですが、今回は触れずにすみました。。。