前回はMSGraphAPIを使用するための準備をしました。今回は実際にC#やPowerShellで呼び出します
-
C#・PowerShellで会議室のイベントを取得(アプリケーション版)<準備編> - ナストンのまとめ
以前、業務で会議室の使用状況を取得するツールを作成する必要があり、その際に調べて実装したメモとなります API アクセス ...
続きを読む
アクセストークンを取得する
まず、アクセストークンを取得する際に使用するテナントIDは以下の値を使用します
アプリケーションのIDは以下の値を使用します
上記のそれぞれの値をセットし、アクセストークンを取得する方法は以下の通りになります
$tenantName = "前回の記事で作成したアプリのあるテナントID"
$clientAppid = "前回の記事で作成したアプリのID"
$clientAppSecret = "前回の記事で作成したアプリのクライアントシークレットキーの値"
# アクセストークン取得用データ
$ReqAppTokenBody = @{
Grant_Type = "client_credentials" # 今回の使用する認証の種類
Scope = "https://graph.microsoft.com/.default" # アプリケーション認証の場合はこのまま
client_Id = $clientAppid # アプリケーションのID
Client_Secret = $clientAppSecret # アプリのシークレットキーの値
}
# アクセストークンを取得
$TokenAppResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$tenantName/oauth2/v2.0/token" -Method POST -Body $ReqAppTokenBody
これで以下のようにアクセストークンを取得できます
実際に会議室の情報を取得する
startDateTime(取得開始日時)とendDateTime(取得終了日時)は必須の項目でフォーマットは【yyyy-MM-ddTHH:mm:ss】となります。また、今回は会議名、会議開始時間、会議終了時間、主催者、参加者のみのプロパティを取得するようにしています。
上位10件しかデータ取得できないので「@odata.nextLink」というプロパティがあれば、そのプロパティには次の10件の取得用URLが記載されているのでそこに再度Getリクエストを投げとデータ取得できます
$TargetRoom = "対象となる会議室のメールアドレス"
$apiUrl = 'https://graph.microsoft.com/v1.0/users/' + $TargetRoom + '/calendarView?startDateTime=2023-01-01T00:00:00&endDateTime=2023-05-31T23:59:59&$select=subject,start,end,organizer,attendees'
while ($true) {
$App_Data = Invoke-RestMethod -Headers @{Authorization = "Bearer $($TokenAppResponse.access_token)"} -Uri $apiUrl -Method Get
$App_Calendars = ($App_Data | select-object Value ).Value
$App_Calendars
$NextLink = $App_Data.'@odata.nextLink'
$apiUrl = $NextLink
if($null -eq $NextLink) {
break;
}
}
最後に
これで会議室の情報を取得できるようになりました。取得できる項目等を確認するために以下のサイトであらかじめテストができます。また、今回作成したコード(C#・PowerShell)をGitHubにアップしていますので参考にしてください
-
Graph Explorer | Try Microsoft Graph APIs - Microsoft Graph
Try the Graph Explorer developer tool to learn about Microso ...
続きを読む
-
BlogSampleCodeProjects/MicroSoftGraphAPI_App at main · nasuton/BlogSampleCodeProjects · GitHub
Project for sample code used in the blog.(Blogで記載しているサンプルコード ...
続きを読む