MoreBeerMorePower

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

Power Automate Excelコネクターの新しいオプション "DateTime Format"

2021年になってすぐにTwitterで話題になっていた、Power Automate の Excelコネクターに関して、正式なアップデートが確認できたので紹介します。

これまでの動作

Excelコネクターを利用してExcel内のテーブルデータを取得した際、日付・日時型の列はExcelのシリアル値で返却されていました。

Excelのシリアル値とは、1900年1月1日を「1」とした連番で、時間を含む場合には小数点になります。 例えば2020年12月25日は「44190」となります。

Power Automate でこのようなデータを扱う場合には、

addSeconds('1899/12/30T00:00:00',int(string(mul( ここに日付列 ,86400.0))))

このような式を挿入して Power Automate で利用可能な日時型に変換していました。

※問題になったのは、1月11日に突然この日付型の列がISO 8601形式 (YYYY-MM-DDTHH:mm:ssZ) を返すようになったため、既存のフローがエラーになったということです。1月21日にリバートされました。

新しいオプション : DateTime Format

アナウンス通り、上記の問題に対する修正として、新しいオプション "DateTime Format" が追加されました。 (2021/1/26 時点ではPreview環境のみ)

f:id:mofumofu_dance:20210126143857p:plain
新しいDateTime Formatオプション

既存のフローでは何も設定されていない状態になります。この場合にはこれまで通りシリアル値が返却されます。

一方で、オプションを有効にすると ( = 選択肢のいずれかを選択すると)、ISO 8601で返却されるように設定することができます。

f:id:mofumofu_dance:20210126144617p:plain
ISO 8601を選択した場合

確認した範囲ではExcelの日付・日時型でフォーマットされた列であれば、Excel側での表示形式によらず、DateTime Formatの対象になっていました。(つまり13:30でも、2020年1月1日13:30でも、どちらも 2020-01-01T13:30:00Zを返す)

これまでの不要な計算がなくなるのは非常にありがたいですね。まあ、UTCで返されるので少し気を付ける必要がありますが(後述)

注意事項

今後の一般環境へのリリースで変更があれば修正しますが、お気づきのとおり、Excelで入力した日付・時刻は、UTCとして返却されます。

SharePointのような「UI上はユーザーのタイムゾーンに揃うけど、データとしてはUTCで管理している」ではなく、入力した値をUTCの情報として返す点が特徴的です。

通常であれば、UTCでとれたものは"タイムゾーンの変換"アクションで自分たちのローカルタイムに合わせますが、Excelの場合にはローカルの日時としてデータを扱いたい場合には、"タイムゾーンの変換"アクションで、UTC→UTCに変換してフォーマットを指定するとよいでしょう。

f:id:mofumofu_dance:20210126150125p:plain
時刻フォーマットを指定する場合の違い

※セルに入力された値が、どのタイムゾーンで入力されたかによらずUTCと認識されるので、UTCとしてフォーマットだけを変えている。

以上、うれしいアップデートと注意事項についてでした。

f:id:mofumofu_dance:20210126151056p:plain