OfficeScripts(オフィススクリプト)で日付データの操作方法をまとめて紹介します。
日付データの取得・計算・変換・フォーマット(書式変更)など日付操作に関するスクリプトを解説します。
スクリプト内の変数名や日時データは例が入っていますので状況に応じて変更して使用してください。
日付の取得
まず日付の取得方法について紹介します。現在時刻、今日の日付、曜日などの日付データの取得方法を紹介しています。
スクリプト内の変数名や日時データは例が入っていますので状況に応じて変更して使用してください。
現在の日時
function main(workbook: ExcelScript.Workbook) {
// 現在の日時を取得する
let now = new Date();
// 結果を出力する(確認用ですので削除してもOKです)
console.log(now);
}
上記のスクリプト例の結果はこうなります。
今日の日付
今日の日付はString型とDateTime型の2つの取得方法を紹介します。
文字列型(String型)
function main(workbook: ExcelScript.Workbook) {
// 今日の日付を取得する(String型)
let todayDate = new Date().toLocaleDateString();
// 結果を出力する(確認用ですので削除してもOKです)
console.log(todayDate);
}
上記のスクリプト例の結果はこうなります。
日付型(DateTime型)
function main(workbook: ExcelScript.Workbook) {
// 今日の日付を取得する(DateTime型)
let todayDate = new Date(new Date().toLocaleDateString());
// 結果を出力する(確認用ですので削除してもOKです)
console.log(todayDate);
}
上記のスクリプト例の結果はこうなります。
T15:00:00.000Zは協定世界時(UTC)の値です。日本時間はUTC+9時間なので24時となり、2024年12月11日0時です。
現在時刻
function main(workbook: ExcelScript.Workbook) {
// 現在の時刻を取得する
let currentTime = new Date().toLocaleTimeString();
// 結果を出力する(確認用ですので削除してもOKです)
console.log(currentTime);
}
上記のスクリプト例の結果はこうなります。
時間・分・秒をそれぞれ取得する
function main(workbook: ExcelScript.Workbook) {
// 現在の時刻を取得する
const hours = new Date().getHours();
const minutes = new Date().getMinutes();
const seconds = new Date().getSeconds();
// 結果を出力する(確認用ですので削除してもOKです)
console.log(hours,minutes,seconds);
}
上記のスクリプト例の結果はこうなります。
曜日
今日の曜日
function main(workbook: ExcelScript.Workbook) {
//曜日のリストを作成する
const daysOfWeek = ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"];
//今日の曜日を取得する
let todayDayOfWeek = daysOfWeek[new Date().getDay()];
// 結果を出力する(確認用ですので削除してもOKです)
console.log(todayDayOfWeek);
}
上記のスクリプト例の結果はこうなります。
指定した日付の曜日
function main(workbook: ExcelScript.Workbook) {
//曜日を取得したい日付を設定する
const day = new Date("2024-04-01"); //任意の日付に変更してください(例:2024年4月1日)
//曜日のリストを作成する
const daysOfWeek = ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"];
//今日の曜日を取得する
let todayDayOfWeek = daysOfWeek[day.getDay()];
// 結果を出力する(確認用ですので削除してもOKです)
console.log(todayDayOfWeek);
}
上記のスクリプト例の結果はこうなります。
Sponsored link
日付の計算|加算・減算
次に日付の計算について紹介します。
スクリプト内の変数名や日時データは例が入っていますので状況に応じて変更して使用してください。
日付に一定期間を足す・引く
Date型データに一定期間を足したり、引いたりする方法は以下の通りです。これにより数日前や数か月後などのDateデータを作成することができます。
年・月・日・時・分・秒のそれぞれに計算用のメソッドが用意されています。
こちらが使用例です。
function main(workbook: ExcelScript.Workbook) {
// 基準の日時を設定する
let day = new Date("2024-04-01"); //任意の日付に変更してください(例:2024年4月1日9時)
// 日時の加算・減算
day.setFullYear(day.getFullYear() + 1); // 年の計算(例:1年後)
day.setMonth(day.getMonth() + 1); // 月の計算(例:1月後)
day.setDate(day.getDate() + 1); // 日の計算(例:1日後)
day.setHours(day.getHours() - 1); // 時の計算(例:1時間前)
day.setMinutes(day.getMinutes() - 1); // 分の計算(例:1分前)
day.setSeconds(day.getSeconds() - 1); // 秒の計算(例:1秒前)
// 結果を出力する(確認用ですので削除してもOKです)
console.log(day.toLocaleDateString(), day.toLocaleTimeString());
}
上記のスクリプト例の結果はこうなります。
繰り上がり・繰り下がりは自動で修正されます。
例えば、分を追加して7時80分 になった場合は8 時20分と修正されます。
2つの日付の差を求める
ある2つの日時の差を計算する際には Dateデータをミリ秒に変換してから計算します(ミリ秒の基準は1970 年 1 月 1 日)
ミリ秒はDate.getTimeメソッドを使うことで取得することができます。計算順序は以下の通りです。
- Dateデータをミリ秒に変換
- 差を計算
- 差のミリ秒を日時に変換
こちらが計算例です。
function main(workbook: ExcelScript.Workbook) {
// 2つの日時を設定する
let day1 = new Date("2024-04-01"); //任意の日付に変更してください(例:2024年4月1日の9時)
let day2 = new Date("2024-05-01"); //任意の日付に変更してください(例:2024年5月1日の9時)
// 日時の差の計算
let difference = day2.getTime() - day1.getTime();
// ミリ秒を日時に変換
let differenceDays = Math.floor(difference / 1000 / 60 / 60 / 24); //日数に変換
let differenceHours = Math.floor(difference / 1000 / 60 / 60); //時間に変換
let differenceMinutes = Math.floor(difference / 1000 / 60); //分数に変換
// 結果を出力する(確認用ですので削除してもOKです)
console.log(differenceDays, differenceHours, differenceMinutes);
}
上記のスクリプト例の結果はこうなります。
Sponsored link
日付の比較
条件分岐などである日付比較により条件式を作成することがあると思います。
日時の比較は<
, <=
, >
, >=
, ===
, !==
を使って行います。
こちらが使用例です。
function main(workbook: ExcelScript.Workbook) {
// 2つの日時を設定する
let day1 = new Date("2024-04-01"); //任意の日付に変更してください(例:2024年4月1日の9時)
let day2 = new Date("2024-05-01"); //任意の日付に変更してください(例:2024年5月1日の9時)
// 日付を比較
if (day1 < day2) {
console.log("day1はdate2より前の日付です。");
} else if (day1 > day2) {
console.log("day1はdate2より後の日付です。");
} else {
console.log("day1はdate2は同じ日付です。");
}
}
上記のスクリプト例の結果はこうなります。
Sponsored link
日付の変換(文字列型・シリアル値)
次に日付データの型変換を紹介します。
よく使う文字列型への変換とExcelのシリアル値への変換方法を紹介します。
文字列への変換(DateTimeからString)
function main(workbook: ExcelScript.Workbook) {
// 基準の日時を設定する
let day = new Date("2024-04-01"); //任意の日付に変更してください(例:2024年4月1日9時)
// 文字列型に変換(String型)
let dayString = day.toLocaleDateString();
// 結果を出力する(確認用ですので削除してもOKです)
console.log(dayString);
}
上記のスクリプト例の結果はこうなります。
日付への変換(StringからDateTime)
function main(workbook: ExcelScript.Workbook) {
// 基準の日時を設定する
let day = "2024-04-01"; //任意の日付に変更してください(例:2024年4月1日9時)
// 日時型に変換(DateTime型)
let dayDateTime = new Date(day);
// 結果を出力する(確認用ですので削除してもOKです)
console.log(dayDateTime);
}
上記のスクリプト例の結果はこうなります。
シリアル値への変換
function main(workbook: ExcelScript.Workbook) {
// 日付を設定する
const day = new Date("2024-04-01"); //任意の日付に変更してください
// 1900年1月1日を基準としたシリアル値を計算
const baseDate = new Date("1899-12-30"); // Excelの基準日(1900/1/1が1なので、1日前の1899年12月30日を基準にする)
const serialValue = (day.getTime() - baseDate.getTime()) / (1000 * 60 * 60 * 24);
// 結果を出力する(確認用ですので削除してもOKです)
console.log(serialValue);
}
上記のスクリプト例の結果はこうなります。
シリアル値は1900年1月1日を1として そこからの経過日数を表します。
Sponsored link
日付のフォーマット変更(書式変更)
最後に日付データを文字列型で扱う場合にフォーマットに変更する方法を紹介します。
日本形式(地域設定)
function main(workbook: ExcelScript.Workbook) {
// 日付を設定する
const day = new Date("2024-04-01"); //任意の日付に変更してください
// ロケールに基づいた日付表記
const formattedDate = day.toLocaleDateString("ja-JP"); // 日本形式 (例: 2024/4/1)
// 結果を出力する(確認用ですので削除してもOKです)
console.log(formattedDate);
}
上記のスクリプト例の結果はこうなります。
ISO8601形式
function main(workbook: ExcelScript.Workbook) {
// 日付を設定する
const day = new Date("2024-04-01"); //任意の日付に変更してください(例:2024年4月1日9時)
// ISO 8601形式
const isoDate = day.toISOString();
// 結果を出力する(確認用ですので削除してもOKです)
console.log(isoDate);
}
上記のスクリプト例の結果はこうなります。
Sponsored link
オフィススクリプトを書籍で学習したいという方はコチラがオススメです。
コメント