10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power Automateで日時データを扱うのが難しかった話とその対応まとめ(初心者向け)

10
Last updated at Posted at 2025-12-02

目次

1. はじめに

Power Automateを使って各種タスクのリマインド通知自動化を実装しました。
その過程で一番苦労したのが日時データの扱いです。
Power Automateでは、現在の日付やExcelの日時を比較するために複数の変換が必要になります。
そこで、本記事では日時データを活用する方法をまとめ、その実践例として提出物締め切りリマインドフローを作成してみました。

筆者は今回の対応ではじめてPower Automateを扱いました。

2. 日時データを扱うためのポイント

Power Automateで日時を扱う際のTipsを5つご共有します。
具体的な用法は3章で実例を挙げてご説明します。

2-1.日本時間に変換する

Power AutomateのデフォルトはUTC形式で扱いずらいので以下のアクションを用いて処理します。
元のアクション名:タイムゾーンの変換
スクリーンショット 2025-11-09 213247.png

UTC形式とは世界の標準時刻であり、ISO 8601形式でYYYY-MM-DDThh:mm:ssZのように表記されます。末尾の「Z」はUTCを示します。(参考:https://zenn.dev/manase/scraps/1fc8c0b31d1802)

2-2. 日時データを加算・減算する

adddays()関数を用いることで日数を加算・減算できます。

addDays(<計算の基準となる日時(yyyy-MM-ddの形)>, <加算・減算したい日数>)

使用例として昨日の日付を取得する式を記載します。

昨日の日付を取得する
addDays(utcNow(), -1, 'yyyy/MM/dd')
  • utcNow()
    現在のUTC時刻を取得します。
  • -1
    1日前を意味します。つまり「昨日」の日付を計算します。
  • 'yyyy/MM/dd'
    結果を「年/月/日」形式で返すフォーマット指定です。

2-3.取得した日時データからyyyy-MM-ddのみ抽出する

「現在の時刻」アクションで取得した日時データはこんな感じです。

2025-11-13T19:54:13.2918484

ここから年月日のみ抜き出すにはformatDatatime()を利用します。
(2-2 のように計算結果をそのまま指定フォーマットで返してくれる関数では不要になります。)

formatDataTimeの基本構文
formatDateTime(<timestamp>, <format> )

現在の時刻アクションで取得した値をyyyy-MM-ddに抽出する式は以下になります。

formatDateTime(<現在の時刻アクションの出力>, yyyy-MM-dd )

2-4.Excelから取得したデータを変換する

Excelの日時データは1900年1月1日を「1」とするシリアル値なので、2-2と2-3の手法を活用した以下の式で変換します。

Excelの日時データを変換する
formatDateTime(addDays('1899-12-30', int(<Excelから取得した年月日データ>)), 'yyyy-MM-dd')

2-5.日時データを条件分岐に用いる際は数値化する

文字列型の日付は条件式で使えないので ticks()で数値化します。

ticksの基本構文
ticks(<timestamp>)

使用例

2025年1月1日を数値化する
ticks('2025-01-01')

出力は638712864000000000になります。

3.日時データを活用して締め切りリマインドフローを作成

日時データを活用したテストケースとして「締め切り1週間前にTeamsでリマインドするフロー」を作成しました。
PCローカルのExcelを利用できるフローになるので1SharePointやOneDrive上のExcelを利用できない方にも有効です。
契約書や各種申請書類の提出・更新期限をExcelで管理していれば自動でリマインドしてくれるようになり、提出忘れを防げます。

3-1.ゴール

・締め切り1週間前になると、提出物のタイトルと締め切りを知らせるチャットをTeamsに送信。
通知イメージ:
スクリーンショット 2025-11-09 205013.png

3-2.前提条件

・提出物名と締め切りをExcelで管理。
・SharePoint上のExcelを参照(Power Automate DesktopならローカルExcelも可)。

Excelのテーブル例:
スクリーンショット 2025-11-09 210229.png

3-3.完成フロー

スクリーンショット 2025-11-09 210827.png

フローの要点
・スケジュール済みクラウドフローで定期実行
・取得した現在の日時データを日本時間に変換
・Excelの行をループで取得し、締め切り日を変換
・条件式で「現在の日付が締め切り1週間前か」を判定
・Teamsにメッセージ送信(提出物名+締め切り日を動的に挿入)

現在の日付が締め切り1週間前かの判定

本記事で紹介したTipsをフル活用した条件式になります。
① 「現在の時刻」アクションで取得した現在の時刻を日本時間に変換する
スクリーンショット 2025-11-09 213247.png

② ①の出力から年月日のみ抽出する

value
formatDateTime(body('日本時間に変換'), 'yyyy-MM-dd' )

スクリーンショット 2025-11-14 102239.png

③ Excelシート内の「締め切り」列に含まれる日付データをyyyy-MM-ddの形に変換する

value
formatDateTime(addDays('1899-12-30', int(items('提出物情報取得ループ')?['締め切り'])), 'yyyy-MM-dd')

スクリーンショット 2025-11-14 102419.png

④ ②の現在の年月日と③の締め切りデータの7日前が同じか判定する

判定式部分のコードビュー
  "type": "If",
  "expression": {
    "and": [
      {
        "equals": [
          "@ticks(variables('今の年月日'))",
          "@ticks(addDays(outputs('締め切りを日付データに変換'), -7))"
        ]
      }
    ]
  }

image.png

何かの不具合でフローが止まってしまった際リマインドがとどかないことになってしまいます。
回避策として、締め切り1週間前から毎日リマインドを出すフローに変更することが挙げられます。その場合の条件式は以下になります。

締め切り1週間前
"greater": [
  "@variables('_年月日')",
  "@addDays(outputs('締め切りを日付データに変換'), -8)"
]

4.まとめ

Power Automateは便利ですが、日時データの扱いは初心者にとって最大のハードルでした。
UTC形式、Excelシリアル値、文字列型の比較など、複数の変換を理解する必要があります。
今回紹介した方法は、締め切りリマインドだけでなく、他のシナリオにも応用できます。
Excel管理をやめられない現場でも、こうした工夫で自動化できます。ぜひ試してみてください

We Are Hiring!

  1. Power Automateのセキュリティについては以下をご参考ください
    https://learn.microsoft.com/ja-jp/power-automate/guidance/desktop-flow-coding-guidelines/secure-your-data

10
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?