🤖
【PowerAutomate】日付と時刻のシリアル値をMicrosoft Listsに日時形式で登録する方法
はじめに
PowerAutomate上でExcel(OneDrive or Sharepoint)のテーブルから取得した日付と時刻のシリアル値[1]の形を整え、Microsoft Listsに登録する方法について解説します。
結論
以下の関数を③Microsoft Listsの入力値として代入すると正しく日本時間の日時がListsに表示されるようになります。
addSeconds('1899-12-30',int(sub(mul(add(float(outputs('行の取得')?['body/時間']),float(outputs('行の取得')?['body/日付'])),86400),32400)))
詳細解説
-
outputs('行の取得')?['body/時間']、outputs('行の取得')?['body/日付']:
行取得の際の値をそれぞれ「時間」「日付」として取得します。実態に合わせて文言は書き換えてください。 -
float(...):
エクセルから取得した際はString型となっています。この後の計算実行のためにfloat型に変換します。 -
mul(add(float(...),float(...)),86400):
シリアル値の日数部分と小数部分(時間)をそれぞれ秒に変換して合計します。(1日は86400秒)つまり、1899年12月30日から何秒経った日時である必要があるかを計算します。 -
int(sub(...,32400)):
(UTC+09:00)大阪、札幌、東京のタイムゾーンに変換します。この後の計算実行のためにint型に変換します。 -
addSeconds('1899-12-30', ...):
1899年12月30日から秒単位で時間を追加します。
-
Excelのシリアル値とは、1900/1/1を「1」とした連番であり、通常行の取得で得られる値はシリアル値となる。
・日付シリアル値
日付シリアル値は、1900年1月1日を1としてカウントしている。1日は1.0に相当して、次の日は2.0、そしてその次の日は3.0という形でどんどん計算されていく。(例:45525 は 1900年1月1日から 45525 日後、つまり 2024年8月21日を指している。)
・時間シリアル値
時間シリアル値は、1日(24時間)を1.0としてカウントしている。具体的には、1時間は約0.04167(1/24 ≈ 0.04167)になる。(例:0.458333333333333 は 24時間のうちの45.8333333% を示している。) ↩︎
Discussion