GASの日付を文字列フォーマットに変換する方法(formatDateメソッド)

2020年8月18日

Google Apps Script(GAS)で日付のデータをそのまま表示しようとすると、本来表示したい日付の形式で表示されない場合があります。

日付を表示したい形式にして、文字列として表示できるように変換するメソッド「Utilities.formatDate」の使い方とサンプルコードを解説します。

Google Apps Scriptの日付はDateクラス

Google Apps Script(GAS)で日付情報を扱う場合は、Dateクラスを用いて表現します。

let (変数名) = new date(年, 月, 日);

Dateクラスを変数として扱えるようにするために、newでオブジェクトを宣言します。

Dateオブジェクトの宣言の際には引数で設定したい年/月/日の情報を指定します。

let today = new date();

引数を指定しない場合は、実行した当日の日時が設定されます。

上記の1行のスクリプトでは実行した当日の日付をtodayという名前の変数に格納します。

Date型は文字列になると特殊な表示形式に

しかし、Date型のオブジェクトをログ出力などで文字列として表示しようとすると、見慣れぬ日付形式で表示されます。

Google Apps Script(GAS)でDateオブジェクトの変数をそのままログ出力すると、特殊な形式で表示される

ログ出力結果:Tue Aug 18 22:18:58 GMT+09:00 2020

プログラム内部で保持している日付の形式であるため、人間が見たときには見づらい形式で表示されるのがネックです。

Utilities.formatDateで日付を表示したい形式の文字列に変換

日付を我々が馴染みのある「yyyy/MM/dd」や「yyyy年MM月dd日」といった形式したい場合にはどうすればよいのでしょうか。

Google Apps Script(GAS)では日付の表示形式を設定するUtilities.formatDateメソッドが用意されています。

Utilities.formatDate(date, timeZone, format)

例えば、先程のDateオブジェクトのtoday変数の表示を「yyyy年MM月dd日」に変換する場合は以下のようにコードを記述します。

today = Utilities.formatDate(today,"JST", “yyyy年MM月dd");

Utilities.formatDateによって、表示したい形式の文字列に変換することができます。

さらに時刻も含めた形で変換したい場合は、以下のように記述します。

today = Utilities.formatDate(today,"JST", “yyyy/MM/dd hh:mm:ss");

月を表すMonthの場合は大文字のM、分を表すMinutesの場合は小文字mにする必要があります。

GASのformatDateメソッドの使い方とサンプルコード

実際にGoogle Apps Script(GAS)でUtilities.formatDateを使い、日付を表示したい形式の文字列に変換するサンプルコードを紹介したいと思います。

Google Apps Script(GAS)で日付を文字列として様々な表示形式で出力するサンプルコード
function myFunction() {
  //実行した日付のオブジェクトをtoday変数に格納する
  let today = new Date();
  //Dateオブジェクトのtoday変数をログ出力する
  Logger.log(today);
  //formatDateメソッドで日付の表示形式を変換する
  today = Utilities.formatDate(today, "JST", "yyyy/MM/dd");
  //formatDateメソッドで変換後をログ出力する
  Logger.log(today);
}

※サンプルコードの画像ではYYYY/MM/ddですが、実際のコードはyyyy/MM/ddをお使いください。

このスクリプトを実行すると、「2020/08/18」という表示したかった日付形式の文字列としてログ出力できます。

Utilities.formatDateメソッドでDateオブジェクトの日付形式を変換し文字列出力させるサンプルスクリプトの実行結果

このようにすれば、スプレッドシートに日付を出力した際にも、利用者にも見やすいフォーマットになります。

まとめ・終わりに

今回、Google Apps Script(GAS)で日付を文字列として表示する方法を解説しました。

日付情報はDateクラスから生成しますが、そのままログ出力すると見慣れない日付形式で表示されてしまいます。

そこで、Utilities.formatDateメソッドを使うことで「yyyy/MM/dd」や「yyyy年MM月dd日」といった表示したい日付形式に変換した上で文字列として出力可能になります。

GASで日付情報を出力する場合には、formatDateメソッドを活用して見せたい形式に変換し、文字列として出力しましょう。

※Google App Scriptでの文字列の各種処理・操作方法は以下の記事でまとめています。