Power Automate で SharePoint Online のリストに日時を書き込むときのタイムゾーン注意点
この記事の内容
- Power Automate から SharePoint Online のリストに日時を書き込む際のタイムゾーンの挙動を解説します
- SharePoint Online の日時表示はサイトのタイムゾーン設定に依存することを確認します
- Power Automate 内部では UTC(協定世界時)で日時を扱う必要があることを説明します
- 「タイムゾーンの変換」アクションを使って正しく日時を登録する方法を紹介します
- ユーザー個人のタイムゾーン設定は SharePoint リストには影響しないことも確認します
はじめに
今回は視聴者の方からいただいた質問にお答えします。質問の内容は次のとおりです。
Power Automate で JSON から取得した UTC の日時を SharePoint Online のリストに投稿する際、サイトのタイムゾーンが日本の場合は
convertTimeZone関数などで東京時間に変換して渡すべきでしょうか?また、別のタイムゾーンに住む人が見た場合、現地時間で表示されますか?
日付・時刻・タイムゾーンの扱いは実務でもつまずきやすいポイントです。実際に SharePoint Online のサイトやリスト、Power Automate のフローを作成して動作を確認していきます。
SharePoint Online のリストにおける日時表示の仕組み
サイトのタイムゾーン設定が基準になる
まず、SharePoint Online のリストに手動で日時を入力して動作を確認してみます。
サイトのタイムゾーンを UTC+9(日本標準時) に設定した状態で 2022年4月1日 00:00 と入力して保存すると、リストには 2022年4月1日 00:00 がそのまま表示されます。
サイトのタイムゾーン設定は以下の場所で確認・変更できます。
- サイト設定を開く
- 「すべてのサイト設定を表示」を選択
- 「地域の設定」からタイムゾーンを変更する
タイムゾーンを変更すると表示が変わる
ここで同じリストの状態で、サイトのタイムゾーンを UTC±0(協定世界時) に変更してみます。すると、先ほど入力した 2022年4月1日 00:00 という日時が 2022年3月31日 15:00 に変わって表示されます。
これは正しい動作です。日本時間の 4月1日 00:00 は UTC では 3月31日 15:00(9時間戻った値)に相当するためです。SharePoint Online はデータとして正しい時刻情報を保持しており、サイトのタイムゾーン設定に合わせて表示を変換しています。
ユーザー個人のタイムゾーン設定は影響しない
ユーザープロファイルにもタイムゾーン設定がありますが、SharePoint Online のリストや Power Automate にはこの設定は効いてきません。ユーザーのタイムゾーン設定が影響するのは Outlook のカレンダーなどに限られます。SharePoint Online のリスト表示はあくまで サイトのタイムゾーン設定 が基準となります。
Power Automate から日時を書き込む場合の注意点
Power Automate 内部は UTC で統一されている
Power Automate から SharePoint Online のリストに新しいアイテムを作成する際、日時のフィールドに値を渡す書式を確認します。
たとえば次のような日本語表記の書式で渡そうとすると、エラーになります。
Power Automate 内部で使用できる書式は ISO 8601 形式です。
このように記述することで保存が成功します。
UTC±0 の状態では値がそのまま表示される
サイトのタイムゾーンが UTC±0 の状態で、上記の形式で 2022-04-01T00:00:00Z を書き込むと、リストには 2022年4月1日 00:00 と表示されます。これは Power Automate で入れた値がそのまま出ているように見えます。
しかしここで注意が必要です。サイトのタイムゾーンを UTC+9(日本標準時) に変更すると、同じデータが 2022年4月1日 09:00 と表示されてしまいます。
つまり、Power Automate で渡す日時は UTC として扱われます。そのため、日本時間の 4月1日 00:00 を正しくリストに登録したい場合は、UTC 換算した 3月31日 15:00 として渡す必要があります。
解決策:「タイムゾーンの変換」アクションを使う
アクションの使い方
9時間を手動で引き算するのは面倒ですし、ミスのもとにもなります。Power Automate には 「タイムゾーンの変換」 という専用のアクションがあるので、これを活用します。
設定内容は以下のとおりです。
| 項目 | 設定値 |
|---|---|
| 基準時間 | 登録したい日本時間の日時 |
| 変換元のタイムゾーン | (UTC+09:00) 大阪、札幌、東京 |
| 変換先のタイムゾーン | (UTC) 協定世界時 |
| 書式設定文字列 | yyyy-MM-ddTHH:mm:ssZ(任意) |
このアクションを使うことで、入力した日本時間を自動的に UTC に変換してくれます。変換後の値を SharePoint リストの日時フィールドに渡すようにします。
フローの構成例
動作確認
このフローを実行すると、サイトのタイムゾーンが日本(UTC+9)に設定されている状態でリストを確認すると、2022年4月1日 00:00 と正しく表示されます。
同様に 2022年4月3日 10:00 など別の日時で試しても、入力した通りの時間がリストに表示されることが確認できます。
まとめ
Power Automate と SharePoint Online における日時・タイムゾーンの扱いについて、以下のポイントを確認しました。
- SharePoint Online のリストの日時表示はサイトのタイムゾーン設定に依存します。ユーザー個人のタイムゾーン設定は影響しません。
- Power Automate で渡す日時は UTC(協定世界時)として扱われます。日本時間をそのまま渡すと、UTC+9 のサイトでは 9 時間ずれて表示されます。
- 「タイムゾーンの変換」アクションを使うことで、日本時間から UTC への変換を自動化でき、手動での計算が不要になります。
- 日本時間で日時を登録したい場合は、変換元を
(UTC+09:00) 大阪、札幌、東京、変換先を(UTC) 協定世界時として変換した結果を SharePoint に渡すようにしましょう。