Power Automate フローでのタイムゾーン操作
2022.09.22
プログラムで日時を扱うと「タイムゾーン」の考慮が必要になります。ローコードな Power Automate でもこれは変わりません。この投稿では、フローでタイムゾーンを変換する方法と、ありがちな落とし穴について紹介します。
基準は UTC
Power Automate のタイムゾーンは UTC(協定世界時)です。JST(日本標準時) とは時差が 9 時間あるため、フローで日本時間を扱い場合には、アクションや関数を利用してタイムゾーン変換を行う必要があります。
アクション「タイムゾーンの変換」
「日付」コネクタの「タイムゾーンの変換」アクションを利用します。
変換元、変換先を定義するだけなので、簡単です。
関数
関数で直接変換することもできます。
ConvertFromUtc :
UTC から別のタイムゾーンに変換します。
ConvertFromUtc(triggerOutputs()['headers']['x-ms-user-timestamp'],'Tokyo Standard Time')
ConvertTimeZone:
指定したタイムゾーンから別のタイムゾーンに変換する場合に利用します。
「タイムゾーンの変換」アクションと同じように指定できます。
ConvertTimeZone(triggerOutputs()['headers']['x-ms-user-timestamp'],'Pacific Standard Time','Tokyo Standard Time')
convertToUtc関数:
タイムゾーンをUTCに変換する場合に利用します。
convertToUtc(triggerOutputs()['headers']['x-ms-user-timestamp'],'Tokyo Standard Time')
よくあるミス@SharePoint Online
ただし、変換した日付や時刻を他サービスり利用する場合、そのサービスでのタイムゾーン設定との兼ね合いを考慮する必要があります。例えば、SharePoint Online ではサイトコレクション単位やユーザー単位でロケーション情報が設定されています。
試しに、SharePoint Online のカスタムリストに、日本時間に変換した日時を記録するシンプルなフローを設計して動かしてみます。
フローの実行履歴から、このフローはUTC 4:36 (JST 13:36) に実行されていることが分かります。
ところが、実際に SharePoint Online 上の値を確認すると…
「23:36」です。
これは、フローによる変換と、SharePoint Online のローケーション設定が二重になった為です。フローが+9:00し、さらに SharePoint Online が +9:00 した結果、UTC+18:00 で出力されてしまいました。このように、SharePoint Online では自動的にタイムゾーン変換が行われるため、フロー上での変換は不要です。
SharePoint Online に限らず、ロケーションにあわせたタイムゾーン変換を行なってくれるサービスは多いので「あれ?」とならないためにも、まず出力先のサービスでタイムゾーンがどのように扱われるかを確認したほうがいいですね。