Power Automateの繰り返し実行が設定時刻通りに動かない?「Z」とタイムゾーンの罠

Power Automateの「Recurrence(繰り返し)」トリガーは、フローを定期的に自動実行させたい場合に非常に便利です。しかし、「毎月1日の朝9時に実行」と設定したつもりが、なぜか夕方の18時に実行されてしまう、といった経験はありませんでしょうか。

これは、Power Automateの時刻設定における「タイムゾーン」と、ある特定の「記号」の扱いに起因する、よくある落とし穴です。

この記事では、なぜそのような時間のずれが発生するのか、そしてどうすれば意図した時刻に正しく実行できるのかを、丁寧にご説明します。


目次

🕞 なぜ9時間のずれが起きたのか?

例えば、以下のように設定したとします。

  • 頻度: 1カ月
  • タイムゾーン: (UTC+09:00) 大阪、札幌、東京
  • 開始時刻: 2025-11-01T09:00:00.000Z

日本のタイムゾーンを選び、「09:00」と指定したにもかかわらず、このフローは日本時間の18時に実行されます。

原因は、開始時刻の末尾にある「Z」という文字です。

「Z」が意味するもの=UTC(協定世界時)

この「Z」は、日付と時刻の国際規格(ISO 8601)において、「その時刻がUTC(協定世界時)である」ことを示す記号です。

  • 2025-11-01T09:00:00.000Z は、「UTCの2025年11月1日 午前9時0分0秒」を意味します。
  • 日本標準時(JST)は、UTCよりも9時間進んでいます(UTC+09:00)。
  • したがって、「UTCの午前9時」は、「日本時間の午後18時(9 + 9 = 18)」に相当します。

Power Automateの仕様として、timeZoneで「東京」を選んでいたとしても、startTime(開始時刻)の文字列に「Z」が含まれていると、「Z」(UTC)の指定が最優先されます

これが、朝9時のつもりが夕方18時に実行された理由です。


🕕 意図した時刻(例:朝6時)に実行する正しい設定

では、日本時間の毎月1日「朝6時」に正しく実行させるには、どう設定すればよいのでしょうか。最も推奨される分かりやすい方法は以下の通りです。

方法A:日本時間(JST)で指定する(推奨)

これが最も直感的で、管理しやすい方法です。

  1. タイムゾーン (Time zone):(UTC+09:00) 大阪、札幌、東京」を選択します。
  2. 開始時刻 (Start time): 実行したい日本時間をそのまま入力し、末尾の「Z」を付けません
    • 例: 2025-11-01T06:00:00
  3. (推奨)詳細オプションの設定: 「詳細オプションを表示する」を開き、時刻を明示します。これにより、意図しないずれを確実に防げます。
    • At these hours (これらの時間): 6
    • At these minutes (これらの分): 0

コードビュー(”…” > “コード ビュー”)で確認すると、以下のようになります。timeZoneTokyo Standard Time(JST)に設定され、startTimeの末尾にZがないことが重要です。

{
    "recurrence": {
        "frequency": "Month",
        "interval": 1,
        "timeZone": "Tokyo Standard Time",
        "startTime": "2025-11-01T06:00:00.000",
        "schedule": {
            "hours": [
                6
            ],
            "minutes": [
                0
            ],
            "monthDays": [
                1
            ]
        }
    }
}

🤔 よくあるご質問(Q&A)

この設定に関してよく寄せられる疑問についてお答えします。

Q1. なぜ「Z」を外すだけでなく、「タイムゾーン」も設定しなければいけないのですか?

「タイムゾーンを設定しているのだから、Zが付いていても東京時間として解釈してほしい」と思われるかもしれません。

これは、Power Automate(および多くのシステム)が、時刻の解釈を厳密に行うために、以下の2つの役割を明確に分けているためです。

  1. startTime(開始時刻): 「いつ」という時刻の文字列そのもの。
  2. timeZone(タイムゾーン):startTime」に時差情報(Z+09:00など)が含まれていない場合に、それをどの地域の時刻として解釈するかの「基準」。

startTimeに「Z」が付いていると、それは「この時刻はUTCです」という明確な指示(時差情報)がすでにある状態です。この場合、システムはtimeZoneの設定を参照するまでもなく、「UTCの9時」として解釈します。

もしtimeZoneが「東京」で、startTimeの「Z」も「東京」として解釈してしまうと、「東京タイムゾーンのUTC 9時」といった二重基準になり、混乱を招きます。

したがって、システムは**「Z」(UTC指定)を最優先する**という厳格なルールを適用し、曖昧さを排除しています。

Q2. そもそも「Z」とは、何かの略語なのですか?

「Z」は略語ではなく、NATOフォネティックコード(無線通信などで聞き間違いを防ぐために使われるアルファベットの読み方)の「Zulu(ズールー)」に由来しています。

軍事や航空の分野では、世界共通の基準時であるUTCを「Zulu Time」と呼ぶ慣習がありました。これが、日付と時刻の国際規格(ISO 8601)に取り入れられ、「Z」がUTC(時差±0)を表す記号として広く使われるようになりました。


✅ まとめ

Power Automateで日本の特定の時刻にフローを実行したい場合、以下の2点を必ず確認してください。

  1. タイムゾーンを「(UTC+09:00) 大阪、札幌、東京」に設定する。
  2. 開始時刻の末尾に「Z」を付けない(例: 2025-11-01T06:00:00)。

設定を保存した後、トリガーの詳細画面に表示される「次回の実行」の日時が、ご自身の意図した日本時間になっているかを最後に確認する習慣をつけると、時刻設定のミスを確実に防ぐことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次