OfficeスクリプトでのDateオブジェクトを徹底解説!日付取得、計算、JST/UTC変換まで

当ページのリンクには広告が含まれています。
officeスクリプト時間操作について

「Officeスクリプトで日付や時間を操作したいけれど、Dateオブジェクトはどうやって使うの…」
そんな悩みを抱えていませんか?


・Dateオブジェクトの使い方が分からない。

Officeスクリプトで日付や時間を取得したら、なぜか時間がズレる。

「UTC」と「JST」の違いが分からない。

日時をどのように表示・計算すればよいか分からない。

その場合は、Officeスクリプトの「Dateオブジェクト」を
使用すると解決します!


この記事では、OfficeスクリプトのDateオブジェクトを詳しく解説します。

OfficeスクリプトのDateオブジェクトを使うと、今日の日付や現在の時刻を簡単に取得したり、未来や過去の日付を計算して表示することができます。
また、UTCとJSTのタイムゾーン変換も可能なため、異なる時差を意識した正確な時間表示ができるのも魅力です。

日付の取得や計算方法、UTCからJSTへの変換のやり方まで、実務で役立つ内容を網羅しています。
最後まで読めば、今日の日付や特定の日付の取得、JST/UTC形式の違いまで初心者でも理解できます。

初めてOfficeスクリプトを学ぶ方でもすぐに使えるように、実際に動作するコード例もご紹介しますので、ぜひ参考にしてみてください!


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度
目次

この記事を読むと「できるようになる」こと

この記事を見てできるようになること。

Officeスクリプトで日付を取得する「Dateオブジェクト」は何ができる?

Officeスクリプトの「Dateオブジェクト」を使えば、日付や時刻の取得・計算・表示が簡単に行えます。

以下のような便利な操作ができるため、日々の業務や自動化処理で役立つ場面が増えるはずです!

Dateオブジェクトで「できること」
  • 今日の日付を取得
    • 簡単なコードで、現在の日付や時刻を取得できます。
      例えば、Excelシートに自動的に今日の日付を記載する、といった処理が可能です。
  • 日付や時間の計算
    • Dateオブジェクトを使えば、1週間後、1か月後など未来の日付や、過去の日付の計算も簡単に行えます。
  • UTCとJSTの変換
    • 日本標準時(JST)と協定世界時(UTC)の違いを簡単に変換できるため、異なるタイムゾーンでの日時処理もスムーズに行えます。

では、Dateオブジェクトの基本的な構成と使い方を確認していきましょう。

Officeスクリプトの「Dateオブジェクト」の基本構成

OfficeスクリプトのDateオブジェクトは、日付や時刻を取得する際の基本となるオブジェクトです。

ここでは、Dateオブジェクトを構成する要素や基本的な使い方を見ていきましょう。

Dateオブジェクトの基本構成

Officeスクリプトで日時を取得する際には、Dateオブジェクトを使います。

このDateオブジェクトは、「newキーワード」を使って生成します。

この「生成する」ことを「インスタンス化」と呼び、Dateオブジェクトの「インスタンス」(具体的なデータが入ったもの)を新しく作る操作です。

ここでは、現在の日時の取得特定の日付の取得について、基本的な使い方を見ていきましょう。


Dateオブジェクトの基本構成
設定解説

現在の日時を取得する

  • let 日付変数 : Date = new Date();
    • Dateオブジェクトの引数を指定しないと、現在の日時を取得することができます。
      このコードを使うと、実行時の「年」「月」「日」「時間」「分」「秒」などがすべて取得されます。

      このコードの出力は「UTC形式」となるため、9時間前が返されます。

      ⇒ 次項の「Officeスクリプトで扱う「UTC形式」と「JST形式」の違い」を見る。

特定の日付を取得する

  • let 特定の日付 : Date = new Date(2024, 0, 1);
    • Dateオブジェクトの引数に「年月日」を指定すると、特定の日時を取得することができます。
      なお、月の指定は0から始まるため、「1月」は0、「12月」は11と指定します。

      このコードの出力は「UTC形式」となるため、9時間前である「2023-12-31T15:00:00.000Z」が返されます。

      ⇒ 次項の「Officeスクリプトで扱う「UTC形式」と「JST形式」の違い」を見る。

Dateオブジェクトの処理結果

Dateオブジェクトの処理結果

より詳しい情報は、Microsoft公式のJavaScript Date サンプルを参照してください。

Officeスクリプトで扱う「UTC形式」と「JST形式」の違い

Officeスクリプトでは、日時はデフォルトで「UTC形式:協定世界時」で扱われます。

そのためDateオブジェクトで日時を扱う際は、「UTC形式(協定世界時)」と「JST形式(日本標準時)」の違いを理解することが重要です。

以下に、これら2つの形式の違いについてと、「UTC」から「JST」へ変換する方法について解説します。

UTC形式とJST形式の違い

スクロールできます
形式説明
UTC形式協定世界時(Coordinated Universal Time)の略。
タイムゾーンによるズレがない、世界基準の時刻です。
UTCで午前0時は「00:00」と
表示されます。
JST形式日本標準時(Japan Standard Time)の略。
UTCに9時間を加えた時刻で、日本国内の標準時間です。
JSTで午前9時はUTCの午前0時(00:00)
と同じです。

たとえば、UTCで午前0時(00:00)は、日本標準時(JST)では午前9時(09:00)として表示されます。

このように、Officeスクリプトで日時を扱う際は、この形式による時間差を考慮する必要があります。

「UTC」から「JST」に変換の際の注意ポイント

単純に9時間を足したらダメ

「UTC形式」から「JST形式」に変換する際、サマータイムの影響も考慮しないといけないため、単純に9時間を足す方法では正確な時間が取得できない場合があります。

計算や処理は基本的にUTCで行い、表示する際にJSTへ変換するという手順を守ることで、時間のズレを防ぐことができます。

⇒ 具体的な変換方法については事項「Dateオブジェクトの基本表示と、UTCからJST形式に変換」を参照ください。

console.logで出力の際は注意が必要

console.log(date)で、日付を出力するとUTC形式になりますが、console.log(`JST: ${date}`) のように、文字列と結合して出力すると、JST形式に自動的に変換されます。

これは、文字列と日付が結合された際に、ローカルタイムゾーン(日本ではJST)が自動的に適用されるためです。

console.log(date)で、日付を出力するとUTC形式、文字列で結合するとJSTになります。

Dateオブジェクトの基本メソッド | Officeスクリプトで日付・時刻の要素を取得する方法

OfficeスクリプトのDateオブジェクトとメソッドを使用すると、「年」「月」「日」「時間」「分」といった各要素を簡単に取得できます。

特に、ローカル時間(JST)とUTC形式の両方で日時を取得・切り替えできるため、Officeスクリプトでの日付操作が非常に便利になります。

まず、以下のように現在の日時を取得してみましょう。

let currentDate = new Date(); // 現在の日時を取得

それでは、currentDateから年や月の要素を取得する方法を確認してみます。

基本メソッド一覧をご紹介

JSTで取得する場合(ローカル時間)

メソッド説明使用例
getFullYear()年を取得currentDate.getFullYear()
getMonth()月を取得(0~11で表す)
月は0から始まるため、注意が必要です
currentDate.getMonth() + 1
getDate()日を取得currentDate.getDate()
getHours()時間を取得(ローカル時間)currentDate.getHours()
getMinutes()分を取得(ローカル時間)currentDate.getMinutes()
JSTで取得する場合(ローカル時間)

UTCで取得する場合

メソッド説明使用例
getUTCFullYear()年を取得currentDate.getUTCFullYear()
getUTCMonth()月を取得(0~11で表す)
月は0から始まるため、注意が必要です
currentDate.getUTCMonth() + 1
getUTCDate()日を取得currentDate.getUTCDate()
getUTCHours()時間を取得(UTC時間)currentDate.getUTCHours()
getUTCMinutes()分を取得(UTC時間)currentDate.getUTCMinutes()
UTCで取得する場合

JSTとUTCを合わせて表示

以下のコードを実行すると、それぞれの日時要素が取得され、具体的な出力が確認できます。

この結果から「JST」と「UTC」を合わせて表示すると、9時間ずれていることが分かります。

function main(workbook: ExcelScript.Workbook) {
  let currentDate:Date = new Date();  // 現在の日時を取得

  // JST形式での取得
  console.log(`(JST)
    年  : ${currentDate.getFullYear()}
    月  : ${currentDate.getMonth() + 1}
    日  : ${currentDate.getDate()}
    時間: ${currentDate.getHours()}
    分  : ${currentDate.getMinutes()}    
    `);

  // UTC形式での取得
  console.log(`(UTC)
    年  : ${currentDate.getUTCFullYear()}
    月  : ${currentDate.getUTCMonth() + 1}
    日  : ${currentDate.getUTCDate()}
    時間: ${currentDate.getUTCHours()}
    分  : ${currentDate.getUTCMinutes()}
    `);

}
JSTとUTCを合わせて表示

Dateオブジェクトの基本表示と、UTCからJST形式に変換

Officeスクリプトでは、日時は基本的にUTC形式で扱われますが、console.logで表示する際に文字列と結合した場合、ローカル環境のタイムゾーンが適用され、日本ではJST(日本標準時)で表示されます。

UTC形式が必要な場合は、getUTCFullYearなどのUTC専用メソッドを使用し、JST形式で表示したい場合はtoLocaleStringメソッドでタイムゾーンを指定するのが推奨されます。

// JST形式で表示する例
console.log(currentDate.toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' }));

// UTC形式で表示する例
console.log(`年 (UTC): ${currentDate.getUTCFullYear()}`);
注意ポイント
  • console.log(currentDate)の表示
    • console.logでDateオブジェクトを直接出力した場合、UTC形式で表示されます。
      ただし、console.log("日付は " + currentDate)のように文字列と結合すると、ローカルタイムゾーンが適用され、日本ではJST形式で表示される点に注意してください。

「Dateオブジェクト」のポイントまとめ

「Dateオブジェクト」のポイントまとめ
  • Dateオブジェクトの生成方法
    • 日時を扱うためのDateオブジェクトは、newキーワードを使って「インスタンス化」します。
  • 現在の日時や特定の日付を簡単に取得
    • Dateオブジェクトを使うと、現在の日時を自動的に取得できるほか、年や月、日付を指定して特定の日付を生成することもできます。
      特に、日時の取得や計算が簡単に行えるため、日付に関する操作が必要なスクリプトには欠かせないオブジェクトです。
  • JST(日本標準時)とUTC(協定世界時)の切り替えも可能
    • Dateオブジェクトを使えば、JST(ローカル時間)とUTC(世界標準時間)の両方で日時を取得・表示できます。
      これにより、正確な日時操作が可能です。
  • getMonth()の注意点
    • 月を取得するgetMonth()メソッドでは、月は0から始まるため、「1月」は0、「12月」は11と表されます
      通常の月に合わせて「+1」するように注意しましょう。
スポンサーリンク

OfficeスクリプトでDateオブジェクトの使用例をご紹介

それでは、Dateオブジェクトを使用した日付と時間の使用例について紹介します。

以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。

Officeスクリプトの基礎から応用までを効率よくしっかり学習したい方には、UdemyのOfficeスクリプト講座もおすすめです。

特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。

使用例1: 現在の日付と時間を取得する

この例では、Officeスクリプトで現在のUTCとJSTの日付と時間を取得する方法を紹介します。

Dateオブジェクトと変換メソッドを使用することで、JST(日本標準時)に変換し、必要なタイムゾーンでの日時を表示することが可能です。

コード例 | 現在の日付と時間を取得する

function main(workbook: ExcelScript.Workbook) {

  // 現在の日付と時間 (UTC) を取得
  let currentDate: Date = new Date();

  console.log(currentDate);  // UTCで表示

  console.log("現在の日付と時間 (JST): " + currentDate);  // JSTで表示

  // JSTに変換して現在の日付と時間を取得
  console.log("現在の日付と時間 (JST): " + currentDate.toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' }));

}

処理結果

使用例1の処理結果

コードの動作概要

STEP
Dateオブジェクトを使って現在の日時を取得

まず、new Date()Dateオブジェクトを生成し、現在の日時をUTC形式で取得します。
この時点で取得される日時は、OfficeスクリプトのデフォルトであるUTC形式です。

STEP
JST形式での日時表示

次に、console.log("現在の日付と時間 (JST): " + currentDate);のように文字列と結合して表示することで、JST(日本標準時)に自動変換されて表示されます。

STEP
toLocaleStringメソッドでJST形式に変換

最後に、toLocaleStringメソッドを使い、JST(日本標準時)のタイムゾーンを指定して、正確にJST形式で日時を表示します。toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' })は、指定したタイムゾーンでの日時を日本語形式で出力するために便利です。

このコードで使用している機能

  • let (変数)
  • console.log (値の出力)
    • 指定した内容をコンソールに表示します。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook)
    • Officeスクリプトのメイン関数を定義しています。
      「workbook」はExcelのワークブックを操作する引数です。
  2. let currentDate: Date = new Date();
    • Dateオブジェクトを生成し、現在の日時を「UTC形式」で取得しています。
  3. console.log(currentDate);
    • Dateオブジェクトを「UTC形式」で表示します。
      ここでは「UTC形式」で出力されます。
  4. console.log(“現在の日付と時間 (JST): ” + currentDate);
    • Dateオブジェクトと文字列を結合することで、ローカルのタイムゾーン(日本の場合JST)に自動変換されて表示されます。
  5. console.log(“現在の日付と時間 (JST): ” + currentDate.toLocaleString(‘ja-JP’, { timeZone: ‘Asia/Tokyo’ }));
    • 「toLocaleStringメソッド」でタイムゾーンを「JST」に指定し、日本標準時で現在の日付と時間を正確に表示しています。
  6. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、OfficeスクリプトでDateオブジェクトを活用し、現在の日時をUTCとJST形式で取得する方法を解説しました。

UTC形式のデータをtoLocaleStringメソッドでJST形式に変換することで、日本時間での表示が可能になります。
このメソッドは、特定のタイムゾーン(ここでは ‘Asia/Tokyo’)を指定して、その地域の時間に合わせた形式で日時を表示します。

⇒ 「Dateオブジェクトの基本表示と、UTCからJST形式に変換」をもう一度見る

使用例2: 現在の年、月、日、時間、分を「JST形式」で取得する

この例では、Officeスクリプトで「JST形式」で現在の年、月、日付、時間、分を個別に取得する方法を紹介します。

各日時要素をDateオブジェクトのメソッドで取得し、日付や時間の処理に役立てることができます。

コード例 | JST形式で現在の年、月、日、時間、分を取得する

function main(workbook: ExcelScript.Workbook) {

  // JSTで、現在の年、月、日、時間、分をそれぞれ取得
  let year: number = new Date().getFullYear();
  let month: number = new Date().getMonth() + 1; // 月は0から始まるので+1
  let day: number = new Date().getDate();
  let hour: number = new Date().getHours();
  let minute: number = new Date().getMinutes();

  console.log(year);
  console.log(month);
  console.log(day);
  console.log(hour);
  console.log(minute);

}

処理結果

使用例2の処理結果

コードの動作概要

STEP
Dateオブジェクトの生成

Dateオブジェクトのインスタンスを生成し、現在の日時を取得します。
このインスタンスを通じて、各メソッドを使用して日時要素を取得できます。

STEP
各要素を個別に取得

getFullYear()getMonth()getDate()getHours()getMinutes()メソッドを使って、現在の「年」「月」「日」「時間」「分」をそれぞれ取得します。
これにより、JST形式での日時要素を個別に扱えるようになります。

このコードで使用している機能

  • let (変数)
  • console.log (値の出力)
    • 指定した内容をコンソールに表示します。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook)
    • Officeスクリプトのメイン関数を定義しています。
      「workbook」はExcelのワークブックを操作する引数です。
  2. let year: number = new Date().getFullYear();
    • DateオブジェクトのgetFullYear()メソッドを使用して、現在の「年」を取得し、変数「year」に格納します。
      例: 2024年なら「2024」が取得されます。
  3. let month: number = new Date().getMonth() + 1;
    • getMonth()メソッドを使って現在の「月」を取得します。
      月は「0」から始まるため、通常の1月~12月に合わせるには「+1」が必要です。
      例: 1月なら「1」となります。
  4. let day: number = new Date().getDate();
    • getDate()メソッドを使って現在の日付を取得し、変数「day」に格納します。
      例: 15日なら「15」が取得されます。
  5. let hour: number = new Date().getHours();
    • getHours()メソッドで現在の「時間」を取得し、変数「hour」に格納します。
      ローカル時間(JST)での時間が返されます。
      例: 午前9時なら「9」が取得されます。
  6. let minute: number = new Date().getMinutes();
    • getMinutes()メソッドで現在の「分」を取得し、変数「minute」に格納します。
      例: 30分なら「30」が取得されます。
  7. console.log(year);
    • 「year」変数の内容をコンソールに出力します。
      取得された「年」が表示され、正しく格納されているか確認できます。
  8. console.log(month);
    • 「month」変数の内容をコンソールに出力し、取得した「月」が正しく表示されているか確認します。
  9. console.log(day);
    • 「day」変数の内容をコンソールに出力し、取得した「日」が表示されることを確認します。
  10. console.log(hour);
    • 「hour」変数の内容をコンソールに出力します。
      JSTで取得した「時間」が正しく表示されているか確認します。
  11. console.log(minute);
    • 「minute」変数の内容をコンソールに出力し、取得した「分」が正しく表示されているか確認します。
  12. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、OfficeスクリプトのDateオブジェクトを使い、現在の年・月・日・時間・分を「JST形式」で個別に取得する方法を解説しました。

日時要素を個別に扱うことで、さらに柔軟な日時操作が可能です。

特に、getMonth()メソッドは月が0から始まる点に注意し、通常の月に合わせて+1する必要があります。

⇒ 「JSTで取得する場合(ローカル時間)」をもう一度見る

使用例3: 年、月、日、時間、分を「UTC形式」で取得する

次に年、月、日付、時間、分を「UTC形式」で個別に取得する方法を紹介します。

コード例 | 年、月、日、時間、分を「UTC形式」で取得する

function main(workbook: ExcelScript.Workbook) {

  // 現在のUTC日時を取得
  let currentDate: Date = new Date();

  // UTCで、現在の年、月、日、時間、分をそれぞれ取得
  let year: number = currentDate.getUTCFullYear();
  let month: number = currentDate.getUTCMonth() + 1;
  let day: number = currentDate.getUTCDate();
  let hour: number = currentDate.getUTCHours();
  let minute: number = currentDate.getUTCMinutes();
 
  console.log(year);
  console.log(month);
  console.log(day);
  console.log(hour);
  console.log(minute);

}

処理結果

使用例3の処理結果

コードの動作概要

STEP
Dateオブジェクトの生成

new Date()を使用して、Dateオブジェクトを生成し、現在の日時を取得します。
この時点では、日時がUTC形式で格納されます。

STEP
各要素を個別に取得

UTC専用のメソッドを使用して、現在の「年」「月」「日」「時間」「分」をそれぞれ取得します。
これにより、UTC形式の日時要素を個別に取得することが可能です。

このコードで使用している機能

  • let (変数)
  • console.log (値の出力)
    • 指定した内容をコンソールに表示します。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook)
    • Officeスクリプトのメイン関数を定義しています。
      「workbook」はExcelのワークブックを操作する引数です。
  2. let currentDate: Date = new Date();
    • Dateオブジェクトを生成し、現在のUTC形式での日時を取得します。
  3. let year: number = currentDate.getUTCFullYear();
    • getUTCFullYear()メソッドを使用して、UTC形式の「年」を取得し、変数「year」に格納します。
      例: 2024年なら「2024」が取得されます。
  4. let month: number = currentDate.getUTCMonth() + 1;
    • getUTCMonth()メソッドを使用してUTC形式の「月」を取得します。
      月は「0」から始まるため、1月~12月に合わせるには「+1」が必要です。
  5. let day: number = currentDate.getUTCDate();
    • getUTCDate()メソッドでUTC形式の「日」を取得し、変数「day」に格納します。
      例: 15日なら「15」が取得されます。
  6. let hour: number = currentDate.getUTCHours();
    • getUTCHours()メソッドでUTC形式の「時間」を取得し、変数「hour」に格納します。
      例: 午後3時なら「15」が取得されます。
  7. let minute: number = currentDate.getUTCMinutes();
    • getUTCMinutes()メソッドでUTC形式の「分」を取得し、変数「minute」に格納します。
      例: 30分なら「30」が取得されます。
  8. console.log(year);
    • 「year」変数の内容をコンソールに出力します。
      取得された「年」が表示され、正しく格納されているか確認できます。
  9. console.log(month);
    • 「month」変数の内容をコンソールに出力し、取得した「月」が正しく表示されているか確認します。
  10. console.log(day);
    • 「day」変数の内容をコンソールに出力し、取得した「日」が表示されることを確認します。
  11. console.log(hour);
    • 「hour」変数の内容をコンソールに出力します。
      UTC形式で取得した「時間」が正しく表示されているか確認します。
  12. console.log(minute);
    • 「minute」変数の内容をコンソールに出力し、取得した「分」が正しく表示されているか確認します。
  13. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、OfficeスクリプトでDateオブジェクトを使用し、現在の年・月・日・時間・分を「UTC形式」で個別に取得する方法を解説しました。

UTC形式で日時を取得する際は、getUTCから始まる各メソッドを使用することで、年・月・日などをUTC基準で取得できます。

特に、getUTCMonth()メソッドは月が0から始まる点に注意し、通常の月に合わせるには+1する必要があります。

⇒ 「UTCで取得する場合」をもう一度見る

使用例4: 日付や時間の演算を行う

日付や時間に対して演算を行い、特定の期間を追加または減算する方法を紹介します。

コード例 | 日付や時間に対して演算を行う

function main(workbook: ExcelScript.Workbook) {

  // 現在の日時を取得
  let currentDate: Date = new Date();
  console.log("現在の日時 (JST): " + currentDate);
  console.log(currentDate);

  // 7日後の日付を取得
  let nextWeek: Date = new Date(currentDate);
  nextWeek.setUTCDate(currentDate.getUTCDate() + 7);
  console.log("7日後の日時 (JST): " + nextWeek);
  console.log(nextWeek);

  // 1時間後の時間を取得
  let nextHour: Date = new Date(currentDate);
  nextHour.setUTCHours(currentDate.getUTCHours() + 1);
  console.log("1時間後の日時 (JST): " + nextHour);
  console.log(nextHour);

}

処理結果

使用例4の処理結果

コードの動作概要

STEP
Dateオブジェクトを使用して現在の日時を取得

new Date()を使用して現在の日時を取得し、変数currentDateに格納します。
この日時を基準として、日付や時間の演算を行います。

STEP
setUTCDateメソッドを使って7日後の日付を設定

currentDateのコピーであるnextWeekを生成し、setUTCDateメソッドを使用して現在の日時から7日後の日付を設定します。
これにより、元のcurrentDateは変更されず、nextWeekに7日後の日時が格納されます。

STEP
setUTCHoursメソッドを使って1時間後の時間を設定

currentDateのコピーであるnextHourを生成し、setUTCHoursメソッドを使って現在の時刻から1時間後の時間を設定します。
これも元のcurrentDateは変更されず、nextHourに1時間後の時刻が格納されます。

このコードで使用している機能

  • let (変数)
  • console.log (値の出力)
    • 指定した内容をコンソールに表示します。
  • setUTCDate()
    • 指定した日数をUTC形式の日付として設定します。
      現在の日付に特定の日数を加算したり減算したりする際に便利です。
  • setUTCHours()
    • 指定した時間をUTC形式の時刻として設定します。
      現在の時間に特定の時間数を加算したり減算したりする際に便利です。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook)
    • Officeスクリプトのメイン関数を定義しています。
      「workbook」はExcelのワークブックを操作する引数です。
  2. let currentDate: Date = new Date();
    • Dateオブジェクトを生成し、現在のUTC形式での日時を取得します。
  3. console.log(“現在の日時 (JST): ” + currentDate);
    • 変数「currentDate」を文字列と結合して出力することで、ローカル時間(JST)に自動的に変換された現在の日時が表示されます。
  4. console.log(currentDate);
    • Dateオブジェクト「currentDate」をそのまま出力し、UTC形式での現在の日時を確認します。
  5. let nextWeek: Date = new Date(currentDate);
    • 現在の日時「currentDate」を基に、新しいDateオブジェクト「nextWeek」を生成します。
      これにより、基準の日時は変更されません。
  6. nextWeek.setUTCDate(currentDate.getUTCDate() + 7);
    • 「currentDate」の「getUTCDate()」で日付を取得し、それに7を加算して「setUTCDate()」で「nextWeek」の日付を設定します。
      これにより、「nextWeek」は7日後の日付となります。
  7. console.log(“7日後の日時 (JST): ” + nextWeek);
    • nextWeekを文字列と結合して出力し、ローカル時間(JST)で7日後の日時を表示します。
  8. console.log(nextWeek);
    • Dateオブジェクト「nextWeek」をそのまま出力し、UTC形式での7日後の日時を確認します。
  9. let nextHour: Date = new Date(currentDate);
    • 「currentDate」を基に、新しいDateオブジェクト「nextHour」を生成します。
      この時点で「nextHour」は「currentDate」と同じ日時です。
  10. nextHour.setUTCHours(currentDate.getUTCHours() + 1);
    • 「currentDate」の「getUTCHours()」で時間を取得し、それに1を加算して「setUTCHours()」で「nextHour」の時間を設定します。
      これにより、「nextHour」は1時間後の時刻となります。
  11. console.log(“1時間後の日時 (JST): ” + nextHour);
    • 「hour」変数の内容をコンソールに出力します。
      「nextHour」を文字列と結合して出力し、ローカル時間(JST)で1時間後の日時を表示します。
  12. console.log(nextHour);
    • Dateオブジェクト「nextHour」をそのまま出力し、UTC形式での1時間後の日時を確認します。
  13. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、OfficeスクリプトのDateオブジェクトを使用し、日付や時間に対して「加算」や「減算」といった演算を行う方法を紹介しました。

setUTCDate()setUTCHours()メソッドを使うことで、基準となる日時から特定の期間を追加・調整し、新しい日時を簡単に設定することが可能です。

メソッド説明
setUTCDate()Dateオブジェクトの日付を指定した日に設定します。
例: setUTCDate(15)とすると、UTC形式で15日に設定されます。
setUTCHours()Dateオブジェクトの時間を指定した時間に設定します。
例: setUTCHours(10)とすると、UTC形式で午前10時に設定されます。

特に、日付の「7日後」や時間の「1時間後」を計算しやすいため、スケジュール設定や通知など、特定の期間を扱うシナリオに役立ちます。

使用例5: 2つの日付・時間の差を計算する

この例では、Officeスクリプトで2つの異なる日時の差を計算し、その差を日数や時間、分といった単位で表す方法を紹介します。

日時の差を計算することで、期間を把握するためのスクリプトが作成可能です。

コード例 | 2つの日付・時間の差を計算する

function main(workbook: ExcelScript.Workbook) {
  
  // 2つの異なる日時を定義
  let date1: Date = new Date(2024, 7, 1, 0, 0);  // 2024年8月1日 0:00 (JST)
  let date2: Date = new Date(2024, 5, 1, 10, 0);  // 2024年6月1日 10:00 (JST)

  // 日数の差を計算
  let diffInMilliseconds: number = date1.getTime() - date2.getTime();
  let diffInDays: number = diffInMilliseconds / (1000 * 60 * 60 * 24);

  // 1. 日数の差を四捨五入して表示
  let roundedDays: number = Math.round(diffInDays);
  console.log("四捨五入した日数の差: " + roundedDays + "日");

  // 2. 日数・時間・分に分解して表示
  let fullDays: number = Math.floor(diffInMilliseconds / (1000 * 60 * 60 * 24));
  let remainingHours: number = Math.floor((diffInMilliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  let remainingMinutes: number = Math.floor((diffInMilliseconds % (1000 * 60 * 60)) / (1000 * 60));
  console.log(`差: ${fullDays}日 ${remainingHours}時間 ${remainingMinutes}分`);

  // 3. 同じ日の異なる時間での差を計算
  let date3: Date = new Date(2024, 7, 1, 10, 0);  // 2024年8月1日 10:00 (JST)
  let diffInMilliseconds2: number = date3.getTime() - date1.getTime();
  let diffInHours: number = Math.floor(diffInMilliseconds2 / (1000 * 60 * 60));
  let diffInMinutes2: number = Math.floor((diffInMilliseconds2 % (1000 * 60 * 60)) / (1000 * 60));
  console.log(`時間の差: ${diffInHours}時間 ${diffInMinutes2}分`);

}

処理結果

使用例5の処理結果

コードの動作概要

STEP
2つの異なる日時を定義

まず、基準となる2つの日時date1date2を定義します。
これらはそれぞれDateオブジェクトとして生成され、getTime()メソッドで日時の差を計算する基準となります。

STEP
日数の差を計算

getTime()メソッドでdate1date2のタイムスタンプ(ミリ秒)を取得し、その差を計算して日数に変換します。
その後、Math.roundを使って四捨五入した日数を表示します。

STEP
日数、時間、分に分解して表示

Math.floor()を使って、日数・時間・分に分解し、それぞれの差を計算します。

STEP
同じ日内での時間差を計算

3つ目の日時date3を定義し、date1date3の時間差を「時間」「分」で表示します。

このコードで使用している機能

  • let (変数)
  • console.log (値の出力)
    • 指定した内容をコンソールに表示します。
  • Math.round()
    • 計算した日数の差を四捨五入して整数値を返します。
  • Math.floor()
    • 計算した結果の小数点以下を切り捨て、最も近い整数を返します。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook)
    • Officeスクリプトのメイン関数を定義しています。
      「workbook」はExcelのワークブックを操作する引数です。
  2. let date1: Date = new Date(2024, 7, 1, 0, 0);
    • 2024年8月1日午前0時(JST)の日時を生成し、変数「date1」に格納します。
  3. let date2: Date = new Date(2024, 5, 1, 10, 0);
    • 2024年6月1日午前10時(JST)の日時を生成し、変数「date2」に格納します。
  4. let diffInMilliseconds: number = date1.getTime() – date2.getTime();
    • getTime()で「date1」と「date2」のタイムスタンプを取得し、その差をミリ秒で計算して格納します。
  5. let diffInDays: number = diffInMilliseconds / (1000 * 60 * 60 * 24);
    • ミリ秒で取得した差を日数に変換します。
  6. let roundedDays: number = Math.round(diffInDays);
    • Math.round()を使って日数の差を四捨五入し、「roundedDays」に格納します。
  7. console.log(“四捨五入した日数の差: ” + roundedDays + “日”);
    • 四捨五入した日数の差をコンソールに表示します。
  8. let fullDays: number = Math.floor(diffInMilliseconds / (1000 * 60 * 60 * 24));
    • Math.floor()で小数点以下を切り捨てた日数を取得し、「fullDays」に格納します。
  9. let remainingHours: number = Math.floor((diffInMilliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    • 残りの時間を切り捨てで取得し、「remainingHours」に格納します。
  10. let remainingMinutes: number = Math.floor((diffInMilliseconds % (1000 * 60 * 60)) / (1000 * 60));
    • 残りの分を切り捨てで取得し、「remainingMinutes」に格納します。
  11. console.log(差: ${fullDays}日 ${remainingHours}時間 ${remainingMinutes}分);
    • 日数・時間・分に分解した日時の差をコンソールに表示します。
  12. let date3: Date = new Date(2024, 7, 1, 10, 0);
    • 2024年8月1日午前10時(JST)の日時を生成し、変数「date3」に格納します。
  13. let diffInMilliseconds2: number = date3.getTime() – date1.getTime();
    • 「date1」と「date3」の差をミリ秒で計算します。
  14. let diffInHours: number = Math.floor(diffInMilliseconds2 / (1000 * 60 * 60));
    • ミリ秒で取得した差を時間に変換し、切り捨てで「diffInHours」に格納します。
  15. let diffInMinutes2: number = Math.floor((diffInMilliseconds2 % (1000 * 60 * 60)) / (1000 * 60));
    • 残りの分を切り捨てで取得し、「diffInMinutes2」に格納します。
  16. console.log(時間の差: ${diffInHours}時間 ${diffInMinutes2}分);
    • 時間と分の差をコンソールに表示します。
  17. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、2つの日時の差を計算し、日数や時間、分で表示する方法を解説しました。

getTime()を使い、まずミリ秒単位で計算してから、各単位に分解することで、日付や時間の差を詳細に知ることができます。

この記事のまとめ

この記事では、Officeスクリプトで日付や時間を操作する「Dateオブジェクト」の使い方について解説しました。

現在の日時の取得から、特定の日時の設定、UTCとJST形式の変換方法まで幅広く紹介しています。Officeスクリプトでの時間管理や計算を効率的に行いたい方にとって役立つ情報が満載です。

ポイントのおさらい

さらに学ぶために

Officeスクリプトでの日時操作は、プログラムの正確性において非常に重要です。

UTCとJSTの違いを把握し、適切な方法で日時を処理することで、信頼性の高いスクリプトを作成できます。

VBAとの違いを理解し、Officeスクリプトならではの日時管理方法をマスターすることで、業務の自動化がより効果的に進むでしょう。

あわせて読みたい
サイトマップ VBAOfficeスクリプトワークシート関数 VBA 基本設定 VBAとは? VBAの始め方 VBAのおすすめ設定 セル操作 RangeとCells CurrentRegion Offset Resize 最終行・最終列の取...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次