PowerAppsとAutomateそれぞれでOutlookの予定表に追加する方法

概要

  • Outlookコネクタを使用すると、カレンダーからOutlookの予定を取得したり、登録したりすることができます。
  • Power Apps/Power Automateそれぞれの使い方について備忘録的にまとめてみます。

Power Appsの場合

Outlookコネクタの、
Office365Outlook.V4CalendarPostItem()を使用します。 f:id:RamboPy:20210902010503p:plain

以下のように呼び出し、戻り値は登録されたアイテムのレコードとなります。
Office365Outlook.V4CalendarPostItem(table,subject,start ,end,timezone,{その他のオプション...})

引数の解説

table:カレンダーid
Subject:予定表タイトル
Start time:開始時間、PowerAppsの書き方でOK
End time:終了時間、PowerAppsの書き方でOK
Time zone:タイムゾーンを文字列で
その他のオプションは下のPowerAutomateを参考に

V4CalendarPostItemの使用例

まずはカレンダーIDの取得が必要です。
以下のような関数はアプリのOnStartなどで記入します。
カレンダーはテーブルとして取得されるのでFirstで一つ目を取り出し、基本1つめがメインの予定表です。 f:id:RamboPy:20210902010019p:plain

以下のように呼び出します。
bodyに特定の文字列を入れ、アプリから登録した予定を後で識別できるようにしています。

    Office365Outlook.V4CalendarPostItem(
        __MyCalendar.id,
        ThisRecord.Dropdown1.Selected.Value & "(アプリから)",
        (ThisRecord.Date) + Time(8,0,0) ,//ネイティブ記法でOK
        (ThisRecord.Date) + Time(17,0,0) ,
        "(UTC+09:00) Osaka, Sapporo, Tokyo",
        {showAs:"Oof",Body:"PowerApps"}
    );

アプリ作成例

空のアプリを作成し、Outlookコネクタを追加します。
f:id:RamboPy:20210902002343p:plain

一例として以下のような画面のアプリを作成します。
今回は日付ごとに勤務予定を選択し、保存ボタンで一気に一週間分登録します。 f:id:RamboPy:20210903001754p:plain

同じようなギャラリーの作成方法はこちら
Qiitaもよろしくお願いします。

qiita.com

保存ボタンの中身はこんな感じ f:id:RamboPy:20210902235944p:plain

予定表に登録された例

f:id:RamboPy:20210903001014p:plain

Power Automateの場合

イベントの作成V4 アクションでやれば簡単と思うけどここで落とし穴。
予定表IDを選択できるものの、フローを作った人のIDが埋め込まれるだけなので、他人がフローを実行するとうまくいきません。
f:id:RamboPy:20210902011230p:plain また、トリガーはPowerAppsボタンなどの実行者の接続情報を使用できるインスタントフローである必要があります。

対応方法としてはアプリの場合と同じです。
まずカレンダーの取得でユーザーごとのカレンダーIDを取得して、 そちらをカレンダーIDに指定します。 カレンダーはオブジェクト配列なので、nameをもとに取り出しフィルターしてidを取り出します。
イベントの作成アクションのパラメータは、PowerAppsより分かりやすいですね。 f:id:RamboPy:20210902011450p:plain f:id:RamboPy:20210902011533p:plain

参考

https://docs.microsoft.com/en-us/connectors/office365/#create-event-(v4) https://qiita.com/yamad365/items/fc8e7f76771570aba660