[2022/03/17追記]
既定の環境でAuthoring version 3.22031.27が利用可能になり、これに伴い本投稿のアップデートも利用可能になりました。
2022/02/25 時点でstudio-version=v3.22023.15.215006110 でExcel Onlineコネクターに関する Power Apps上のアップデートが確認できましたので、簡単にまとめます。
なお、これまでの改善点については過去の投稿をご覧ください。
変更点概要
ExcelのテーブルをデータソースにしてPower Appsのアプリを作成した場合、Excelにおける日時型は Power Apps ではうまく表示されませんでした。
これが今回のアップデートで改善され、他のデータソースと同様の日時型データとして取り扱えるようになりました。
アップデートを適用するためには、Power Apps Studioで設定からプレビュー機能を有効にします。
有効にするとすぐさまデータの表示が変更され、先ほどラベルコントロールに何も表示されなかったのが、通常期待するように日時型 (の文字列) として表示されます。
ギャラリーだけでなく、フォームでも表示が改善されていることがわかります。
ということで Excel Onlineのテーブルをデータソースにしている方は今すぐ機能をONにしましょう!!!
注意事項
Power AutomateでExcel Onlineコネクターを利用する場合と同様に
Excel から取得された日時はUTCとして認識されます。
例えば下図の例では、2022/2/25 15:00という値がセルに入っていますが、これをコネクターで取得すると 2022-02-25T15:00:00Zと解釈されます。
Power Appsでは自動的にUTCからユーザーのローカルタイムゾーンに変換してくれるので、日本の標準時 (UTC+9) では セル内の 2022/2/25 15:00 は 2022/2/26 0:00 (12:00 AM) と表示されます。
これは厄介ですね。特にPower Appsでデータを表示・更新するだけでなく、Excelをファイルとして再利用する場合には注意が必要になります。
(Power Appsから 2022/02/26 を登録したと思ったらExcelでは2022/2/25だった ということが起こる)
対応方法
ユーザーのタイムゾーンが1つだけであればPower Apps側の更新・表示を加工してあげることで対応可能です。
例えばギャラリーに表示する場合では、
DateAdd(ThisItem.DateTime,TimeZoneOffset(),Minutes)
このDateAdd(...)
とTimeZoneOffset()
を組み合わせてあげることでExcel上の表示と一致させることができます。
また、フォームからの登録・更新の場合にはユーザーの入力した日時を、同じようにTimeZoneOffset()でずらしてあげます。
フォームコントロールの中で、日時型の列を更新するデータカードの Update プロパティを以下のように変更します。
DateAdd( DateValue1_1.SelectedDate + Time(Value(HourValue1_1.Selected.Value), Value(MinuteValue1_1.Selected.Value), 0), -1*TimeZoneOffset(), Minutes )
DateAddの最初のパラメータはもともとのUpdateプロパティです。先ほどと同様に、ユーザー入力をTimeZoneOffsetでずらしてあげることで、入力された日時をそのままExcelの値として登録することができます。
ただし今度はPower Apps (ユーザーのローカルタイムゾーン) → Excel (UTC) なので、オフセットにマイナス1がついている点に注意してください。
とにかく原則は、
Excel → Power Apps の方向なら DateAdd( .... , TimeZoneOffset(), Minutes)
Power Apps → Excel の方向なら DateAdd( .... , -1*TimeZoneOffset(), Minutes) です!