APP Flow Office365 PowerApps SharePoint

PowerApps & Flow あれこれ(Outlookカレンダーとの連携)

投稿日:

PowerAppsがおもしろい

今、仕事でPowerAppsを触っています。コード書けない僕みたいな素人でも簡単にモバイルアプリが作れてしまうという便利なアプリです。「素人でも簡単に」という触れ込みですが、実際はエクセルの関数やパワポ、アクセスやファイルメーカーあたりのデータベースソフトの経験がないとなかなかとっつきにくいです。しかも解説書も現在のところまともに使えるのは一冊だけです(始めるならこの本は必携です)。あとはマイクロソフトのサイトやネットに散らばるPowerAppsに関するページを漁って進めていく必要があります。ただ本職の方達のブログが多くて素人にはなかなか敷居が高い・・・

すでにPowerAppsとFlowで作ったスマホアプリで「出張申請」「有給休暇申請」「経費精算」といった業務を電子化していますが、ここでは実際に開発をしていくうえで困ったことや理解できない点、またちょっとしたTips(ほとんどはネットで拾ったものですが)を備忘録として書いていこうと思います。

タイムゾーンと終日イベントの問題

30人程度の部署で、出張や有給休暇をPowerAppsで作ったアプリから申請、承認後Outlookの共有カレンダーに登録するというFlowを動かしています。「出張」「有給休暇」はSharePointリストを作成しデータソースとしています。有給取得の日時は「日付のみ」の設定です。

Flowを使ってOutlookカレンダーにアイテムを登録する場合、問題になってくるのが「タイムゾーン」と「終日イベント」の取り扱いです。

Flowの構成自体は基本的には簡単です。しかし単純にSharePointリストの列を当てはめて「終日イベントですか?」を「はい」にしてしまうと、日数が2日以上の場合は問題ないのですが1日だけの場合は“Your request can't be completed. The duration of an event marked as All day must be at least 24 hours.”と怒られてエラーになります。

なので、終了時刻のフィールドにaddToTime関数を使って次の計算式を入れます。

"addToTime(終了,1,'Hour')"


終了」はSharePointリストの列名で日付と時刻の形式は「日付のみ」です。終日イベントと認識してもらえるよう1時間プラスする数式を使っています。これで日数が1日だけでもOutlookカレンダーに「終日イベント」として正常に登録されるようになりました。

PowerAppsの「カレンダー」画面

SharePointリストの項目をOutlookカレンダーに登録するFlowは解決したのですが、PowerAppsの「カレンダー」レイアウトでOutlookの予定表を表示させてみると色々と不具合が起きてしまいました。

Flowが吐き出す値を見ると「9時間」プラスされていました。FlowのタイムゾーンがUTCなので設定地域に応じて勝手に時間が操作されてしまうようです。しかも終了時刻が翌日になっています。Outlook側ではうまく調整してくれますが、PowerAppsでカレンダーを表示させようとするとこの辺りも問題となってきます。

PowerAppsカレンダーについてはまた次回書こうと思います。

FLOWで使える関数
https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference

PowerAppsの数式リファレンス
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/formula-reference

スポンサーリンク

-APP, Flow, Office365, PowerApps, SharePoint
-, , ,

Copyright© ラルフォン通信 , 2019 All Rights Reserved.