はじめに
例えば、Power Apps でトレーニングを管理するアプリを作成したとします。
この際、トレーニングの管理者がアプリでトレーニングを作成して公開する際、トレーニング管理者の予定をおさえておくために、Outlook の予定表にもデータを登録しておきたいというニーズがあるとします。
今回は、こちらのシナリオをベースに、Power Apps で Outlook の予定表に予定を登録する方法を紹介します。
Outlook コネクタの利用
まず、Power Apps で Outlook コネクタに接続します。
Power Apps で自分の予定表の ID を取得する方法
少し癖があるのですが、Power Apps から自分の予定表の ID を取得する方法は以下のような感じになります。
Set(
gblMyCalender,
LookUp(
Office365Outlook.CalendarGetTablesV2().value,
name = "Calendar" Or name = "予定表"
).id
);
今回は、[App]
の[OnStart]
プロパティに上記処理を記載します。
Outlook (Exchange) の予定表について、内部的には ID で値を持っており、予定を登録する際などには、この ID を明示的に指定する必要があるため、上記のような方法で ID を取得します。
また、Outlook などで利用している予定表の名前について、基本的には日本語 (予定表) で取得できると考えますが、英語 (Calendar) で作成されている場合もあるため、念のため、上記のような方法で取得しています。
予定の登録
今回は、以下のようなコンポーネントに存在する、"公開" というトレーニングを公開する際に押すボタンに処理を書きたいと思います。
具体的な処理は以下のような感じです。
Office365Outlook.V4CalendarPostItem(
gblMyCalender,
"【日程仮押さえ】" & gblSelectedClass.Title,
gblSelectedClass.StartTime,
gblSelectedClass.EndTime,
"(UTC+09:00) Osaka, Sapporo, Tokyo",
{
requiredAttendees: LookUp(
'Environment Variable Values',
'Schema Name' = "ms_TrainingAdminEmail"
).Value
}
)
gblSelectedClass は、このアプリで選択したトレーニングの情報が格納される変数のため、適宜置き換えてください。
一応、以下のようなデータが入っており、日時については、SharePoint の "日付と時刻" 型のデータとなります。
また、requiredAttendees に記載している内容について、今回は、以下のような環境変数で設定した情報を利用しています。
こちらを利用するにあたって、あらかじめ以下のデータを追加しておきます。
Office365Outlook.V4CalendarPostItem の "requiredAttendees" とアプリの利用者が同じ場合は個人の予定となり、異なる場合は、会議の主催者がアプリの利用者となり、"requiredAttendees" に会議出席依頼が送信される動作となります。
実際に動かしたところ、以下のように、testuser1 (環境変数で指定したトレーニングの管理者) に対して会議出席依頼が送信されました。
Power Automate と連携して予定を作成する場合
一応、Power Automate と連携して予定を作成する場合の例も紹介します。
Power Automate フローの作成
まず、以下のような感じで、"Power Apps V2" トリガーのフローを作成します。
Power Apps から受け取る引数 (Power Apps から受け取る情報) は以下のような感じです。
続いて、Outlook コネクタで予定 (イベント) を作成します。
それぞれ、以下のような感じで引数を指定します。
予定表 ID がカスタム値となっていますが、こちらは、Power Apps から渡された、アプリ実行者の予定表の ID です。
日時の箇所は、以下のような感じで、formatDateTime 関数で変換しておきます。
formatDateTime(triggerBody()['text_1'])
一見難しそうですが、文字を直接入力する必要はなく、以下のような感じで該当する引数を選択してあげます。
今回は、必須出席者は環境変数にしておきます。
最後に、念のため、このフローが失敗した際に通知を飛ばすようにしておきます。
Power Apps からPower Automate フローの呼び出し
Power Apps 側では、まず、以下のように作成したフローを追加します。
その次に、フローを実行したい箇所に以下のような処理を書きます。
今回の場合は、以下のような感じで情報を渡してあげます。
トレーニング管理者日程仮押さえフロー.Run(
gblSelectedClass.Title,
gblSelectedClass.StartTime,
gblSelectedClass.EndTime,
gblMyCalender
)
まとめ
今回、トレーニングの管理アプリを例に、Power Apps で Outlook の予定表に予定を登録する方法を紹介しました。
何かの予約をするアプリ、勤務状況をシェアするアプリなど、ついでに Outlook の予定表にも予定を登録したいというニーズはあると思います。
特に、自分の予定表の ID を取得するところについて、少し癖があるので、参考にしていただき、様々なサービスと連携するアプリ作成時に参考にしていただけると幸いです。