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'))
コメント