こんにちは、マイクロソフトマンです。
今回は、Office365のOutlookの予定表データをExcelに出力する方法について解説します。
目先のスケジュールであれば、Outlookのカレンダーで確認すればよいですが、だいぶ先のスケジュールを確認するのはかなり手間です。
月表示にすると小さくて見えないですし、かといって週表示にすると、先の予定を見るときに、何回も次の週を表示するボタンをクリックしないといません。
そこで、Excelに現在予約されている全データを出力して先々の予定が確認できれば便利です。
他のサイトではマクロやスクリプトで紹介されていますが、そんな複雑なことをしなくても、Office365に用意されている機能で出力できます。
とても便利な機能ですが、不要なデータも大量に出力されるので、必要なデータのみを抽出する方法についても解説します。
Outlookの予定表をExcelにCSVデータで出力する方法
Exchange Onlineに接続するコマンド
次に以下のコマンドで、Exchange Onlineに接続します。
ユーザ名とパスワードの入力画面が表示されますので、自身のOffice365のアカウント、パスワードを入力しましょう。
$UserCredential = Get-Credential
次に以下のコマンドを実行します。
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
もし、リモートサーバoutlook.office365.comへの接続に失敗や、アクセスが拒否されましたというエラーが表示されたら、Exchangeオンラインへの接続がうまくできていませ。
先ほど入力したアカウントか、パスワードの入力ミスの可能性がありますので、もう一度最初のやり直してください。
次に以下のコマンドを実行すれば、準備が整います。
Import-PSSession $Session -DisableNameChecking
Outlookの予定表をExcelに出力するコマンド
では、いよいよExcelへのCSV出力になります。
以下のコマンドになりますが、sample@mail.comの部分には、予定表を出力したいメールアドレスを設定します。
自身の予定表を出力したい場合は、自身のメールアドレス、特定の会議室の予定表を出力したい場合は、会議室に設定されているメールアドレスになります。
末尾のファイルパスは、データを出力する場所になります。とりあえず、Cドライブの直下で設定していますが、変更できます。
Get-CalendarDiagnosticObjects -Identity sample@mail.com -ResultSize Unlimited | Export-Csv -NoTypeInformation -Encoding UTF8 -path C:\schedule.csv
出力したCSVデータで必要な情報のみ表示する
出力されたCSVデータを見ると、不要なデータが大量に出力されているのがわかると思います。
そこで、必要なデータのみを表示するようにしましょう。スケジュールで必要なデータは以下の4つです。
・会議のタイトル(NromalizedSubject)
・その会議に予約されているメンバー(DisplayAttendeesAll)
・開始日時(StartTime)
・終了日時(EndTime)
出力されたCSVデータをExcelで開いて、上記4つの列と、以下の1つの列だけを残して、他の列は全て削除するか非表示にします。
・ParentDisplayName
ParentDisplayNameで重複している予定表のデータを消す
列を削除しただけでは、同じ名前のスケジュールが重複して表示されていると思います。
重複データを消すために、ParentDisplayName の列が必要になります。
画像のように1列目にフィルターを設定し、ParentDisplayNameの列で「予定表」となっている行のみ抽出すればOKです。
あとは、StartTimeのフィルタのところで昇順に並べれば、開始日時順にソートすることができます。
StartTimeもEndTimeもGMT標準時間で出力されるので、日本時間にするには+9時間する必要がありますので注意してください。
DisplayAttendeesAll は出席者の表示名ですが、出席者が多い場合、すべては表示されませんので注意してください。
また、休暇の場合は、終日のスケジュールで予約するかと思います。その場合は自身の予定表にだけ予定を入れるので、出席者はNotFoundとなり、StartTimeは15:00、EndTimeは翌日の15:00で設定されます。丸一日分ですね。
ちなみに、GMT標準時間の15:00は日本時間の0:00のことです。(+9時間の時差を足すため)