Power Automateを動画で学ぼう!Udemyキャンペーン中

Power Automateで時間を扱うときに知っておくべきこと。時間のズレと変換について。

目次

Power Automateでは「時間」の取り扱いには注意!

▼過去記事で「Outlookで取得した時間を日本時間に修正する方法」についてご紹介しました。

こちらの記事では、Power AutomateからOutlookの時間を取得すると実際の時間よりズレてしまうとお伝えしました。Power AutomateではOutlook以外でも時間がズレてしまうケースが多いです。この記事ではどのようなケースで時間がズレてしまうのか、時間の変換方法について検証していきます!

じょじお

Power Automateでは、フローで取得した時間がマイナス9時間ズレるんでしたね。

そもそも何故、時間がズレてしまうのか。

Power Automateは、日時設定が UTC(世界標準時) となっています。一方、日本時間は UTC+9時間です。この時差があるのでPower Automate が日本時間を取得するときに勝手に-9時間してUTC時刻に変換してしまうのです。

じょじお

このため わたしたち日本人は、もう一度+9時間して日本時間に戻す必要がある、ということですね。

Power Automateでは、どのケースで時間のズレが発生するのか?

どのケースで時間のズレが発生するのか、下記のアクションで検証してみました。

  • Outlook「予定の取得」アクション
  • Teams「メッセージの取得」アクション
  • 日時「現在時刻の取得」アクション
  • Excel「行の取得」アクション

Outlook「予定の取得」アクションの検証

Outlook下記の記事でも紹介しましたが、結果として時間はズレました。

Teams「メッセージの取得」アクションの検証

▼Teamsで、図の「2021年08月12日03:23」のメッセージを取得します。

teams時間検証

▼結果、「2021年08月11日18:23」となっています。ズレていますね。

            {
                "id": "***************",
                "etag": "***************",
                "messageType": "message",
                "createdDateTime": "2021-08-11T18:23:30.638Z",
                "lastModifiedDateTime": "2021-08-11T18:23:30.638Z",
                "importance": "normal",
                "locale": "en-us",

日時「現在時刻の取得」アクションの検証

▼日時コネクタの「現在時刻の取得」を試してみましたが、こちらもマイナス9時間で取得されました。

PowerAutomate時間の取得

Excel「行の取得」アクションの検証

▼下図のExcelの5行目のデータをとってみます。

Excxelテストデータ

▼取得結果


body": {
"ItemInternalId": "k-0005",
"key": "k-0005",
"name": "仕事B",
"start/dateTime": "44421.3333333333", ←シリアル値になってる・・
"end/dateTime": "44421.6875",
"かかった時間": "0.354166666664241"
}

▼シリアル値になっていて良くわからないので取得データを、同じエクセル内に追記してみます。

Excelの時間取得

下がPAで追記した行です。Excelは時間がズレないようです。

時間の取得の検証結果

▼こんな結果となりました。

  •  Outlookから取得した時間は、マイナス9時間で取得される。
  •  Teamsから取得した時間は、マイナス9時間で取得される。
  •  Power Automateの「現在時刻の取得」アクションで取得した時間は、マイナス9時間で取得される。
  •  Excelから取得した時間は、ズレない。
じょじお

各アプリケーションの設定にもよりますので、テスト取得して、変換が必要かどうか確かめたほうが良さそうですね。

時間の確認するためにログを確認する方法

Power Automateで取得した時間を確認するには、フローの実行ログを確認します。Teamsアクションを例にログの確認方法を紹介します。

▼時間を取得したいアクションを追加します。

時間の確認方法

▼フローを選択して右上の「テスト」をクリックします。

PowerAutomateフローのテスト方法

▼「手動」を選択して「テスト」をクリックします。

Power Automateのテスト方法2

▼ログを確認したいアクションをクリックして中身を展開し、出力セクションにある「未加工出力の表示」をクリックします。

ログの確認方法

▼JSON形式のログを確認し、時間を探しましょう。

JPower Automateで取得した時間

Power Automateで取得した時間

日本時間に変換する方法

▼日本時間に変換する方法は、3つあります。

  1. Power Automateで取得した時間に「時間への追加」アクションで「9」を足す方法
  2. Power Automateで取得した時間に関数で「9」を足す方法
  3. 「タイムゾーンの変換」アクションを使用する方法

Power Automateで取得した時間に「時間への追加」アクションで「9」を足す方法

▼「時間への追加」アクションは日時コネクタの中にあります。

時間への追加

▼「間隔」を9に、「時間単位」を時間にすると9時間プラスされた時間を取得できます。

時間への追加アクション

Power Automateで取得した時間に関数で「9」を足す方法

▼時間に9時間プラスするにはaddHours関数を使うこともできます。

各アクションの「動的なコンテンツ」をクリック→「addHours関数」

addHours関数

第3引数にフォーマット形式を指定すると、同時にフォーマット変換もできるので便利です。

詳細は、addHours関数公式ドキュメントをご覧ください

「タイムゾーンの変換」アクションを使用する方法

「タイムゾーンの変換」アクションは日時コネクタの中にあります。

タイムゾーンの変換

こちらも同時にフォーマット変換ができます。

じょじお

個人的には、まずはフォーマット変換ができる「タイムゾーンの変換」だけ覚えておけばいいかなぁ、と思います。

「タイムゾーンの変換」アクションのフォーマット(書式設定文字列)はどれを選べばいいのか?

▼下記は、Power Automateで取得した時間データをExcelに出力した結果です。

書式設定文字列(フォーマット)Power Automate
からの出力結果
Excel関数適用
MONTH()
Excel関数適用
DATEVALUE()
短い形式の時刻パターン – 午後 1:45 [t]1900/1/0 9:171#VALUE!
長い形式の時刻パターン – 午後 1:45:30 [T]1900/1/0 9:181#VALUE!
短い形式の日付パターン – 2009/6/15 [d]2021/8/19 0:008#VALUE!
一般の日時パターン (短い形式の時刻) – 2009/6/15 午後 1:45 [g]2021/8/19 9:058#VALUE!
一般的な日時パターン (長い形式の時刻) – 2009/6/15 午後 1:45:30 [G]2021/8/19 9:088#VALUE!
月日パターン – 6 月 15 日 [m]2021/8/19 0:008#VALUE!
年月パターン – 2009 年 6 月 [y]2021/8/1 0:008#VALUE!
長い形式の日付パターン – 2009 年 6 月 15 日 (月) [D]Thursday, August 19, 2021#VALUE!#VALUE!
完全な日時パターン (短い形式の時刻) – 2009 年 6 月 15 日 (月) 午後 Thursday, August 19, 2021 9:00 AM#VALUE!#VALUE!
完全な日時パターン (長い形式の時刻) – 2009 年 6 月 15 日 (月) 午後 1:45:30 [F]Thursday, August 19, 2021 9:03:34 AM#VALUE!#VALUE!
ラウンド トリップ日時パターン – 2009-06-15T13:45:30.0000000-07:00 [o]2021-08-19T09:11:49.3585360#VALUE!#VALUE!
RFC1123 パターン – 2009 年 6 月 15 日 (月) 20:45:30 GMT [r]Thu, 19 Aug 2021 09:14:14 GMT#VALUE!#VALUE!
並べ替え可能な日時パターン – 2009-06-15T13:45:30 [s]2021-08-19T09:16:09#VALUE!#VALUE!
世界共通の並べ替え可能な日時パターン – 2009-06-15 13:45:30Z [u]2021-08-19 09:20:18Z#VALUE!#VALUE!
汎用の完全な日時パターン – 2009 年 6 月 15 日 (月) 午後 8:45:30 [U]Thursday, August 19, 2021 9:21:54 AM#VALUE!#VALUE!

赤文字になっているフォーマットは、Excelの日付系の関数で扱えませんでした。Excelの表示形式の機能を使うこともできません。Excelで日付として認識してくれないようです。

どのフォーマットもDATEVALUE()関数で日付シリアル値は取得できませんでした。

じょじお

以上の理由からフォーマットを選ぶときは、上の表の青字のフォーマットがおすすめです。

フォーマットをカスタマイズする関数(formatDateTime関数)

フォーマットをカスタマイズするには formatDateTime 関数を使うことによっても可能です。

formatDateTime(’変換する時間’, ‘書式パターン’ )

まとめ

  • Power Automateで取得した時間は、マイナス9時間でズレてる可能性があるので要確認。
  • 変換方法は、基本は「タイムゾーンの変換」アクションを使い、フォーマットの調整を行うためにはaddHourやformatDatetimeなどの関数を使う。

ノンプログラマーでも自動化スキルを身につける。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
目次
閉じる