結論
- Outlookの「イベントの作成」やTeamsの「会議の作成」に失敗する場合・・
- まず、カレンダーの取得アクションでフロー実行者のカレンダー一覧を取得しておき、
そこから抽出したカレンダーIDをイベントの作成アクションの予定表IDに設定する。 - あとは実行者の接続情報を使って実行するとうまくいく。
問題
- イベントの作成アクションで他人の予定表に登録したいときがあります。
- 普通にドロップダウンからカレンダーを選択すると、フローの作成者本人が実行する場合は動きます。
ただしフローを他人に実行させ、他人の予定表に登録しようとするとエラーになります。
原因
ドロップダウンにはフロー作成者のカレンダーIDが設定されており、選択するとフローにそのIDが埋め込まれてしまうことが原因。
解説
前提
フロー実行者の接続情報を使用する必要があるため、インスタントフローである必要があります。
トリガーとしてはSharePointの選択アイテムから実行するものか、PowerAppsボタンなどから実行します。
PowerAppsV2を使用する場合はOutlookコネクタが実行者の接続を使用する設定か確認します。
フロー
カレンダーの取得アクションで実行者のカレンダー一覧を取得します。
その出力オブジェクト配列になるため、アレイのフィルター処理でnameがCalendarとなるものを抽出します。(ODataクエリ)
環境によっては「予定表」になっている場合もあるようです。
任意で、フィルターした配列の要素数をチェックしてエラー処理などを行います。
あとは配列の1要素目のidを抜き出し、
その出力をイベントの作成アクションの予定表IDにカスタム値としてセットします。
あとがき
うまくいかなくて困っている人を見かけたので共有しておきます。
PowerAppsだとカレンダーIDが選択できないので、先にIDを取得してセットしてって手順が当たり前なのですが、Automateだと躓いてしまいますね。
OutlookコネクタでPower Appsから直接呼び出す方法は以下の記事が分かりやすいです。