はじめに
扱う機会があったので記事にしてみました
Excelのシリアル値は厄介な存在で、何も考えずにAutomateから取得すると数値として表されてしまいます。
そのため、Automateで日付データとして扱い場合は、シリアル値 → 日付データ に変換する必要があります。
1.Excelのシリアル値
いろいろなところで解説されているので、今回は簡単に必要なところだけ記載します
Excelのシリアル値とは、「1900/1/1」 を 「1」 として日付を表す連番です。
ex)「1900/1/2」→「2」
ただこのシリアル値には「1900/02/29」という本来ありえない日付も連番として表されているため、変換を行う際にはこの点を考慮する必要があります。
2.実装
Excelからシリアル値を取得
Automateで日付(シリアル値)を取得
今回はofficescriptsで取得してみました
//取得したシリアル値を含むobject
{
"社員ID": 1,
"氏名": "ユーザーA",
"メールアドレス": "userA@sample.com",
"入社日": 45809
}
シリアル値から日付データに変換
取得したシリアル値に対して次の式で日付データ型に変換します
addDays('1899/12/30',int(outputs('json化')?['入社日']))
シリアル値は「1900/1/1」 を 「1」 として日付を表す連番なので、基準日から連番の数だけ日数を足してあげればよいというのが基本的な考え方です。
ただし上でも記載した通り、存在しない日付がシリアル値では1日余分にカウントされているため、「1900/1/1」の一日前である「1899/12/30」を基準日としています