
【Officeスクリプト】日付形式でデータを取得したい
こんにちは。aliceです。
「日付形式でデータを取得したい」。完全に備忘録です。
例えばA1セルに「2021/10/1」という日付が入っていたとして、それをExcelVBAでデバッグ出力すると「2021/10/01」と日付形式で出力されますよね。
Sub mySub()
Debug.Print Range("A1").Value
End Sub

これをOfficeスクリプトでやりたいと思ってやってみると「44470」とシリアル値が出力されます。

アップ。

ということで、日付形式で取得してみました。
やり方は公式サイトから

function main(workbook: ExcelScript.Workbook) {
// Read a date at cell A1 from Excel.
let dateRange = workbook.getActiveWorksheet().getRange("A1");
// Convert the Excel date to a JavaScript Date object.
let excelDateValue = dateRange.getValue() as number;
let javaScriptDate = new Date(Math.round((excelDateValue - 25569) * 86400 * 1000));
console.log(javaScriptDate);
}
順番としては
1 Excelの日付データを読み取る
2 読み取った日付データをシリアル値にする
3 JavaScriptの日付に変換する
といったところでしょうか。
コピペして実行してみます。(コメントは変えています)
function main(workbook: ExcelScript.Workbook) {
// 1 Excelの日付データを読み取る
let dateRange = workbook.getActiveWorksheet().getRange("A1");
// 2 読み取った日付データをシリアル値にする
let excelDateValue = dateRange.getValue() as number;
// 3 JavaScriptの日付に変換する
let javaScriptDate = new Date(Math.round((excelDateValue - 25569) * 86400 * 1000));
console.log(javaScriptDate);
}

アップ。

日付データになりました。
では最後に表示形式を変更します。
toLocaleDateString()メソッドを使って変更します。
「4 表示形式を変更する」以降を追加して実行。
function main(workbook: ExcelScript.Workbook) {
// 1 Excelの日付データを読み取る
let dateRange = workbook.getActiveWorksheet().getRange("A1");
// 2 読み取った日付データをシリアル値にする
let excelDateValue = dateRange.getValue() as number;
// 3 JavaScriptの日付に変換する
let javaScriptDate = new Date(Math.round((excelDateValue - 25569) * 86400 * 1000));
// 4 表示形式を変更する
let date = javaScriptDate.toLocaleDateString();
console.log(date);
}

アップ。

できました!

これで、多分、大丈夫かな?
違ったらやり直そう。
Officeスクリプト記事まとめ📝
『Officeスクリプト入門講座』を書きました📝