memomoji | nanamoji

Microsoft365周辺、Power Appsの勉強、備忘録

他の人の予定を確認するアプリを作りたい(残課題あり)

電話をとったが宛先人が席にいないとき楽にその人の予定を確認できないか、という要望がありましたので、Power Appsで実現できないか試してみました。
結論としては、ある程度までは簡単にできるけど、他の人に使ってもらうには足りないものになりました。
現状のメモを残しておきます。

テンプレートを使うだけで簡単にできる

新しい画面 > テンプレート >カレンダー を選ぶだけで、こんなカレンダーアプリが出来上がります。

カレンダーアプリ

予定表の選択

予定表を選択すると、イベントが読み込まれます。

選択肢として表示されている予定表は、Outlook モバイルアプリで共有予定表として追加されたものです。Outlook on the web やWindowsのアプリで予定表を追加したものは選択肢に出てきません。

モバイルアプリの予定表
Outlook on the web の予定表
※課題1:予定を見たい人を、各自がモバイルアプリで登録しなければならない。

テンプレートのエラー修正

DateAdd関数のエラー

テンプレートを読み込むとエラーがいくつか出ています。

テンプレート読み込み時
このエラーはDateAdd関数の第3引数が"Days"のようになっているのを"TimeUnit.Days"に変えてやると消えます。

※ dropdownCalendarSelection1 の Items に設定されている Office365Outlook.CalendarGetTables は非推奨なので Office365Outlook.CalendarGetTablesV2 に変えないといけないのですが、OnSelectの Office365Outlook.GetEventsCalendarViewV2 を V3 に直しきれていないので省略します。 ※課題2:非推奨関数の修正

モバイルアプリで登録しなくても予定を見られるようにならないものか

無理でした。
ひょうっとしてGetEventsCalendarView で 直接カレンダーIDを指定してやれば、CalendarGetTables で使用可能なカレンダーを取得しなくてもイベント情報が取れるのではないか。そう考えましたがIDを埋め込んだアプリを他の人が開いても予定表は表示されず、エラーになりました。 カレンダーIDは、「あるユーザーの予定表」として固定のものではなく、登録する側が変わると異なるようです。 ちなみにカレンダーIDはPower Automateで取得しました。

カレンダーIDを取得するフロー

結論

という訳で、不特定な他の人の予定を見ることのできるアプリをサクッと作りたい、というのはこの方法では難しいことがわかりました。
ですが、このテンプレートを使って面白い遊びができそうな気がしています。イベントカレンダーとか、終日予定に色を付けるとか。簡単に見栄えのよいアプリが作れるのは嬉しいです。

最後に

ヤマンさんに、スマホ側で登録した人が表示されると教えていただくまで、どうして選択肢に現れない人がいるのかあちこち調べてもまったくわかりませんでした。
おいしみさんからも、Graph APIでも読取権限が必要な点教えていただきました。ここも押さえておかないと深みにはまるところでした。
Twitterの呟きに反応してくれる人がいること、とてもありがたいです。自分が悩んだところはどこかで誰かがいつか悩むところかもしれないので、できるだけ書き残しておきたいと思います。

ここは私が先につまづいておいたから、みんなは私を踏んづけて先に進んでね!(そしていい結果が出たら教えてください)。

2023-04-10 追記

追記が遅くなりました。Twitterで、Akira_365 Microsoft MVPのマグロさんとやまさんから、自分の予定表に追加していない他人の予定の取得は、 Logic Apps が推奨と教えていただきました。
そう簡単にはいかないようで、残念。
Logic Apps で頑張るか、スマホで予定表に追加して使うか、別の手段を考えるかですね。