![見出し画像](https://assets.st-note.com/production/uploads/images/63645715/rectangle_large_type_2_06e3c9c3b84f199c29b379b40956848d.png?width=1200)
【Officeスクリプト】日付形式でデータを取得したい
こんにちは。aliceです。
「日付形式でデータを取得したい」。完全に備忘録です。
例えばA1セルに「2021/10/1」という日付が入っていたとして、それをExcelVBAでデバッグ出力すると「2021/10/01」と日付形式で出力されますよね。
Sub mySub()
Debug.Print Range("A1").Value
End Sub
![画像9](https://assets.st-note.com/production/uploads/images/63646072/picture_pc_74951f78c1589e34619d3ce5fa8f96cf.png?width=1200)
これをOfficeスクリプトでやりたいと思ってやってみると「44470」とシリアル値が出力されます。
![画像2](https://assets.st-note.com/production/uploads/images/63641358/picture_pc_7591b6274fe884176e21ead515204376.png?width=1200)
アップ。
![画像3](https://assets.st-note.com/production/uploads/images/63641492/picture_pc_932e3245e989fb24eab48b691a54075d.png)
ということで、日付形式で取得してみました。
やり方は公式サイトから
![画像4](https://assets.st-note.com/production/uploads/images/63641893/picture_pc_3753ce53feeda50448bb7a1e59752b6b.png?width=1200)
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](https://assets.st-note.com/production/uploads/images/63642276/picture_pc_00a3f6452b52c6cd4ba50105c36d9406.png?width=1200)
アップ。
![画像6](https://assets.st-note.com/production/uploads/images/63642329/picture_pc_5575756658636e91c7e4fe656202ac69.png)
日付データになりました。
では最後に表示形式を変更します。
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](https://assets.st-note.com/production/uploads/images/63642936/picture_pc_4fd35a54bdcbabc75c3c46655dc4878f.png?width=1200)
アップ。
![画像8](https://assets.st-note.com/production/uploads/images/63642953/picture_pc_d2190e96a8e9ec5ce614dc98d244490d.png)
できました!
![画像9](https://assets.st-note.com/production/uploads/images/63643107/picture_pc_8c1959f75a816e6307a9469c966d0103.png)
これで、多分、大丈夫かな?
違ったらやり直そう。
Officeスクリプト記事まとめ📝
『Officeスクリプト入門講座』を書きました📝