ADVERTISEMENT

【Power Automate】ファイル名に日時を付けたい時の式の考え方

【Power Automate】ファイル名に日時を付けたい時の式の考え方
🛡️ 超解決

Power Automateでファイルを生成・保存する際、ファイル名に日時を含めたいケースは非常に多いです。例えば、毎日実行されるフローで「レポート_20250315_1430.csv」のようなファイル名を自動生成したい場合、式(expression)を正しく理解しておかないと、期待とは異なるファイル名になったりエラーが発生したりします。本記事では、Power Automateでファイル名に日時を付けるための式の基本的な考え方から、具体的な実装例、よくある失敗パターンまでを解説します。

【要点】この記事で確認すること

  • 最初に見る場所: Power Automateの式エディタで使用できる日時関数の一覧と書式指定子
  • 切り分けの軸: フローがクラウドで動くかオンプレミスゲートウェイ経由か、タイムゾーンの設定、動的コンテンツと式の使い分け
  • 注意点: ファイル名に使えない文字(/ : * ? ” < > |)を含めない、UTCのまま使うと日本時間とずれる、ミリ秒を含めると長くなりすぎる場合がある

ADVERTISEMENT

日時をファイル名に含める基本的な式

Power Automateで現在日時を取得するには、主にutcNow()関数とformatDateTime()関数を組み合わせます。utcNow()はUTC時刻を返すため、日本時間(JST)でファイル名に使いたい場合は+9時間の調整が必要です。ただし、formatDateTime()の第二引数にタイムゾーン情報を指定することも可能です。具体的には次のような式が基本になります。

  1. Power Automateで「ファイルを作成」または「ファイルのリネーム」アクションを選択します。
  2. ファイル名のフィールドで「動的なコンテンツの追加」をクリックし、「式」タブを選択します。
  3. 以下の式を入力します:formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 'yyyyMMdd_HHmmss')
  4. これにより、例えば「20250315_143000」のような文字列が生成されます。
  5. 必要に応じてファイル名の接頭辞や拡張子を連結します:concat('レポート_', formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 'yyyyMMdd_HHmmss'), '.csv')

ここではconvertTimeZone()関数を使ってタイムゾーンを変換している点がポイントです。この関数は最初に変換元の時刻、次に元のタイムゾーン、最後に変換先のタイムゾーンを指定します。タイムゾーン名は「Tokyo Standard Time」「Pacific Standard Time」などの標準名を使用します。

式のバリエーションと使い分け

ファイル名に日時を含めるシチュエーションは多岐にわたります。以下に代表的なパターンを表にまとめました。

目的 式例 出力例
日付のみ(YYYYMMDD) formatDateTime(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time'),'yyyyMMdd') 20250315
日付+時刻(YYYYMMDD_HHmmss) formatDateTime(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time'),'yyyyMMdd_HHmmss') 20250315_143000
UTCのままシンプルに formatDateTime(utcNow(),'yyyyMMddTHHmmssZ') 20250315T053000Z
ミリ秒を含めて一意性を向上 formatDateTime(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time'),'yyyyMMdd_HHmmss_fff') 20250315_143000_123

特にファイル名の重複を避けたい場合はミリ秒(fff)を含めると効果的です。ただし、ファイル名が長くなりすぎる場合には注意が必要です。また、ファイル名に使えない文字(\ / : * ? " < > |)が含まれないように書式指定子を選んでください。yyyyMMdd_HHmmssのようにアンダースコアやハイフンなどの安全な区切り文字を使うとよいでしょう。

よくある失敗パターンと対策

日時をファイル名に付ける際、以下のようなミスが頻発します。それぞれの原因と対策を確認しておきましょう。

タイムゾーンを考慮していない

utcNow()は常にUTC時刻を返します。日本の日中にフローを実行しても、ファイル名には現在の日本時刻より9時間前の時刻が記録されることになります。これを避けるにはconvertTimeZone()で日本時間に変換するか、formatDateTime()内で'o'などの書式と共にタイムゾーンオフセットを指定する方法もありますが、convertTimeZone()が最も確実です。

ファイル名に使えない文字の混入

例えば'yyyy/MM/dd HH:mm:ss'のような書式を使うと、スラッシュやコロンが含まれてしまい、WindowsやSharePoint Onlineでファイルを作成する際にエラーになります。必ず区切り文字にはアンダースコア_やハイフン-を使用してください。

式の構文エラー

Power Automateの式エディタでは、括弧や引用符の対応が正しくないとエラーになります。また、関数名の大文字小文字も区別されます(formatdatetimeではなくformatDateTime)。式を入力したら、空のテキストを出力してみるなどして事前に結果を確認すると安心です。

管理者へ確認すべき情報

組織でPower Automateを利用する場合、以下の点を管理者に確認しておくとスムーズです。

  • 環境のデフォルトタイムゾーン: フローが実行される環境(クラウドまたはオンプレミスデータゲートウェイ)で使用されるタイムゾーン設定。特にData Gateway経由のフローでは、ゲートウェイサーバーのローカル時刻が影響する場合があります。
  • コンプライアンス要件: ファイル名に日時を含める際、ログ保持期間や監査の観点からUTCを推奨する場合もあります。社内ポリシーに従ってタイムゾーンを選択してください。
  • 式の利用制限: 一部の環境ではカスタムコネクタやプレミアムライセンスが必要な関数がありますが、utcNow()formatDateTime()convertTimeZone()は標準関数のため追加ライセンス不要です。

よくある質問

Q: ファイル名に日時を追加するアクションはどこにありますか?
A: 例えばSharePoint Onlineの「ファイルを作成」アクションや、OneDrive for Businessの「ファイルを作成」アクションなど、ファイルを生成するほとんどのアクションでファイル名フィールドに直接式を入力できます。また、「ファイルの名前を変更」アクションでも同様に設定可能です。

Q: ミリ秒(fff)を使うとファイル名が長くなりすぎることはありませんか?
A: 通常はそこまで気にする必要はありませんが、OSやファイルシステムによってはファイル名全体の長さに制限があります(Windowsで255文字)。日時部分はミリ秒を追加しても20文字程度で収まるため、問題になることは稀です。ただし、接頭辞や拡張子を合わせて長くなりすぎないよう注意してください。

Q: ファイル名に使う日時を固定値にしたい場合はどうすればよいですか?
A: フローの開始時刻や完了時刻など、特定の時点の日時を保持したい場合は、変数に格納してから使い回す方法があります。例えば「変数を初期化する」アクションでformatDateTime(...)を代入し、その変数をファイル名に利用すると、フロー中で複数ファイルを作る場合でもすべて同じ日時を参照できます。

まとめ

Power Automateでファイル名に日時を付ける際は、utcNow()formatDateTime()およびconvertTimeZone()を組み合わせて目的の書式を生成します。タイムゾーン変換を忘れずに行い、ファイル名に使用できない文字を含まないようにすることが重要です。ミリ秒の追加などで一意性を高める工夫も有効です。式の構文や書式指定子に慣れることで、柔軟なファイル命名が可能になります。Power Automateの式エディタでは、実際にテスト実行して結果を確認しながら調整すると効率的です。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT