Power Automate Excelの時刻(時間)列を今日の日付の時刻に変換する方法|formatDateValue

Power AutomateからExcelを扱う際、「時刻」のみが書いてある列を、現在の日付の時刻に変更する方法について質問されたので、メモ。

スポンサーリンク

やりたいこと

例えばこんなExcelがあったとき、
これをPower Automateで取得すると
日付が1899年になってしまう。

例えばExcelに「毎日この時間に処理を行いたい」みたいな「時間」のみが書かれていた場合、このままだと扱いずらいので、この日付を本日の日付に変換してみる

方法:formatDateTimeで時間のみを抽出

まずは選択アクションを追加し、Excelの各列の情報を変換する。

その際、formatDateTimeを使い時間の部分のみを抽出し、現在の日付と「T」とを連結し、本日の日付の該当時間のタイムスタンプを作成する。
// 日付部分
addHours(utcNow(),9,'yyyy-MM-dd')
// 時間部分(この2つを「T」で連結する)
formatDateTime(item()?['Time'],'HH:mm:ss')

// ※タイムゾーンを加味する場合は末尾に「+09:00」をつける。
addHours(utcNow(),9,'yyyy-MM-dd') T formatDateTime(item()?['Time'],'HH:mm:ss') +09:00
「選択」アクションの結果はこんな感じで、時間はそのままに日付が今日に変わる。
もちろん以下のように式を一つにまとめてもOK。
// 日時のみ
formatDateTime(item()?['Time'],concat(addHours(utcNow(),9,'yyyy-MM-ddT'),'HH:mm:ss'))

// タイムゾーンを指定した日時
formatDateTime(item()?['Time'],concat(addHours(utcNow(),9,'yyyy-MM-ddT'),'HH:mm:ss+09:00'))

コメント

タイトルとURLをコピーしました