14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Apps で Outlook の予定表に予定を登録しよう

Last updated at Posted at 2023-02-24

はじめに

例えば、Power Apps でトレーニングを管理するアプリを作成したとします。
この際、トレーニングの管理者がアプリでトレーニングを作成して公開する際、トレーニング管理者の予定をおさえておくために、Outlook の予定表にもデータを登録しておきたいというニーズがあるとします。

image.png
image.png

今回は、こちらのシナリオをベースに、Power Apps で Outlook の予定表に予定を登録する方法を紹介します。

Outlook コネクタの利用

まず、Power Apps で Outlook コネクタに接続します。

image.png

Power Apps で自分の予定表の ID を取得する方法

少し癖があるのですが、Power Apps から自分の予定表の ID を取得する方法は以下のような感じになります。

Set(
    gblMyCalender,
    LookUp(
        Office365Outlook.CalendarGetTablesV2().value,
        name = "Calendar" Or name = "予定表"
    ).id
);

今回は、[App][OnStart]プロパティに上記処理を記載します。

image.png

Outlook (Exchange) の予定表について、内部的には ID で値を持っており、予定を登録する際などには、この ID を明示的に指定する必要があるため、上記のような方法で ID を取得します。

また、Outlook などで利用している予定表の名前について、基本的には日本語 (予定表) で取得できると考えますが、英語 (Calendar) で作成されている場合もあるため、念のため、上記のような方法で取得しています。

予定の登録

今回は、以下のようなコンポーネントに存在する、"公開" というトレーニングを公開する際に押すボタンに処理を書きたいと思います。

image.png

image.png

具体的な処理は以下のような感じです。

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 の "日付と時刻" 型のデータとなります。

image.png

また、requiredAttendees に記載している内容について、今回は、以下のような環境変数で設定した情報を利用しています。

image.png

こちらを利用するにあたって、あらかじめ以下のデータを追加しておきます。

image.png

Office365Outlook.V4CalendarPostItem の "requiredAttendees" とアプリの利用者が同じ場合は個人の予定となり、異なる場合は、会議の主催者がアプリの利用者となり、"requiredAttendees" に会議出席依頼が送信される動作となります。

実際に動かしたところ、以下のように、testuser1 (環境変数で指定したトレーニングの管理者) に対して会議出席依頼が送信されました。

image.png

Power Automate と連携して予定を作成する場合

一応、Power Automate と連携して予定を作成する場合の例も紹介します。

Power Automate フローの作成

まず、以下のような感じで、"Power Apps V2" トリガーのフローを作成します。

image.png
image.png

Power Apps から受け取る引数 (Power Apps から受け取る情報) は以下のような感じです。

image.png
image.png
image.png

続いて、Outlook コネクタで予定 (イベント) を作成します。
それぞれ、以下のような感じで引数を指定します。
予定表 ID がカスタム値となっていますが、こちらは、Power Apps から渡された、アプリ実行者の予定表の ID です。

image.png

日時の箇所は、以下のような感じで、formatDateTime 関数で変換しておきます。

formatDateTime(triggerBody()['text_1'])

一見難しそうですが、文字を直接入力する必要はなく、以下のような感じで該当する引数を選択してあげます。
image.png

今回は、必須出席者は環境変数にしておきます。

image.png

最後に、念のため、このフローが失敗した際に通知を飛ばすようにしておきます。

image.png
image.png

Power Apps からPower Automate フローの呼び出し

Power Apps 側では、まず、以下のように作成したフローを追加します。

image.png

その次に、フローを実行したい箇所に以下のような処理を書きます。

image.png

今回の場合は、以下のような感じで情報を渡してあげます。

トレーニング管理者日程仮押さえフロー.Run(
    gblSelectedClass.Title,
    gblSelectedClass.StartTime,
    gblSelectedClass.EndTime,
    gblMyCalender
)

まとめ

今回、トレーニングの管理アプリを例に、Power Apps で Outlook の予定表に予定を登録する方法を紹介しました。

何かの予約をするアプリ、勤務状況をシェアするアプリなど、ついでに Outlook の予定表にも予定を登録したいというニーズはあると思います。

特に、自分の予定表の ID を取得するところについて、少し癖があるので、参考にしていただき、様々なサービスと連携するアプリ作成時に参考にしていただけると幸いです。

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?