見出し画像

【Officeスクリプト】日付形式でデータを取得したい

こんにちは。aliceです。

「日付形式でデータを取得したい」。完全に備忘録です。


例えばA1セルに「2021/10/1」という日付が入っていたとして、それをExcelVBAでデバッグ出力すると「2021/10/01」と日付形式で出力されますよね。

Sub mySub()
   Debug.Print Range("A1").Value
End Sub
画像9


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

画像2

アップ。

画像3


ということで、日付形式で取得してみました。


やり方は公式サイトから

画像4
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);
}
画像5

アップ。

画像6

日付データになりました。


では最後に表示形式を変更します。

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);
}
画像7

アップ。

画像8

できました!

画像9

これで、多分、大丈夫かな?

違ったらやり直そう。

Officeスクリプト記事まとめ📝


『Officeスクリプト入門講座』を書きました📝


この記事が気に入ったらサポートをしてみませんか?