MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Excel Onlineコネクターを利用する際の改善アップデートが登場!

[2022/03/17追記]
既定の環境でAuthoring version 3.22031.27が利用可能になり、これに伴い本投稿のアップデートも利用可能になりました。


2022/02/25 時点でstudio-version=v3.22023.15.215006110 でExcel Onlineコネクターに関する Power Apps上のアップデートが確認できましたので、簡単にまとめます。

なお、これまでの改善点については過去の投稿をご覧ください。

mofumofupower.hatenablog.com

変更点概要

ExcelのテーブルをデータソースにしてPower Appsのアプリを作成した場合、Excelにおける日時型は Power Apps ではうまく表示されませんでした。

f:id:mofumofu_dance:20220225184929p:plain

f:id:mofumofu_dance:20220225185155p:plain

これが今回のアップデートで改善され、他のデータソースと同様の日時型データとして取り扱えるようになりました。

f:id:mofumofu_dance:20220225185627p:plain
追加されたプレビュー機能

アップデートを適用するためには、Power Apps Studioで設定からプレビュー機能を有効にします。

有効にするとすぐさまデータの表示が変更され、先ほどラベルコントロールに何も表示されなかったのが、通常期待するように日時型 (の文字列) として表示されます。

f:id:mofumofu_dance:20220225185844p:plain
プレビュー機能を有効にすると表示が改善される

ギャラリーだけでなく、フォームでも表示が改善されていることがわかります。

ということで Excel Onlineのテーブルをデータソースにしている方は今すぐ機能をONにしましょう!!!

注意事項

Power AutomateでExcel Onlineコネクターを利用する場合と同様に

Excel から取得された日時はUTCとして認識されます。

mofumofupower.hatenablog.com

例えば下図の例では、2022/2/25 15:00という値がセルに入っていますが、これをコネクターで取得すると 2022-02-25T15:00:00Zと解釈されます。

f:id:mofumofu_dance:20220225184929p:plain

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)

f:id:mofumofu_dance:20220225202623p:plain

このDateAdd(...)TimeZoneOffset()を組み合わせてあげることでExcel上の表示と一致させることができます。

また、フォームからの登録・更新の場合にはユーザーの入力した日時を、同じようにTimeZoneOffset()でずらしてあげます。

フォームコントロールの中で、日時型の列を更新するデータカードの Update プロパティを以下のように変更します。

DateAdd(
    DateValue1_1.SelectedDate + Time(Value(HourValue1_1.Selected.Value), Value(MinuteValue1_1.Selected.Value), 0),
    -1*TimeZoneOffset(),
    Minutes
)

f:id:mofumofu_dance:20220225204213p:plain

DateAddの最初のパラメータはもともとのUpdateプロパティです。先ほどと同様に、ユーザー入力をTimeZoneOffsetでずらしてあげることで、入力された日時をそのままExcelの値として登録することができます。

ただし今度はPower Apps (ユーザーのローカルタイムゾーン) → Excel (UTC) なので、オフセットにマイナス1がついている点に注意してください。

f:id:mofumofu_dance:20220225203939p:plain

とにかく原則は、

Excel → Power Apps の方向なら DateAdd( .... , TimeZoneOffset(), Minutes)

Power Apps → Excel の方向なら DateAdd( .... , -1*TimeZoneOffset(), Minutes) です!