見出し画像

RFC3339形式の日付の取り扱いのコツ

今日も元気にノンプロ研でGAS(Google Apps Script)勉強中です。

ノンプロ研とは、「ノンプログラマーのためのスキルアップ研究会」の略称で、ノンプログラマー(プログラミングを本職にしない人)たちが集まって、プログラミングを武器にすべくスキルを磨いているコミュニティです。

このnoteは、自分がわからなくなって2度調べたことなどを備忘録的に綴っています。

APIから返ってきたRFC3339形式の日付

仕事の関連でPOSレジアプリのSquareを使用しています。SquareはAPIがあるので、商品情報や取引などのデータがAPIで取得できます。

そんななかで、SquareAPIから返ってくる日付が、見慣れない

2021-10-07T14:42:41Z

みたいな形式の文字列で返ってきました。これをGASでゴニョゴニョしてスプレッドシートに転記したいなと思ったときに、どうすればよいか悩みましたので、その顛末を記録。

そのままnew Date(RFC3339形式の日付)

結論から書いてしまうと、Dateオブジェクトをあらたに生成する際の引数()にそのまま指定するだけで、新しいDateオブジェクトが生成されます。

これで晴れてDateオブジェクトになってくれるのでそのままGASで扱えます。

function demo_01() {
  const dateRFC3339 = '2021-10-07T14:42:41Z';
  const dateFromAPI = new Date(dateRFC3339);
  console.log(dateFromAPI); // Thu Oct 07 2021 23:42:41 GMT+0900 (Japan Standard Time)
}

DateオブジェクトをRFC3339形式の日付文字列に変換

逆にAPIリクエストの検索クエリとして日時を指定したい場合もRFC3339形式にする必要があります。

function demo_02() {
  const date = new Date();
  const dateRFC3339 = Utilities.formatDate(date, 'JST', "yyyy-MM-dd'T'HH:mm:ssXXX");
  console.log(dateRFC3339) // 2021-10-07T14:42:41+09:00
}

GASで日付を文字列に変換するにはUtilities.formatDate( )を使うのが定番かと思いますが、このメソッドで引数に日付のフォーマットを指定する部分があり、そこに

"yyyy-MM-dd'T'HH:mm:ssXXX"

と指定してあげるとRFC3339形式の日付の文字列が返ってきます。

これで検索クエリやPOSTに使用できるようになりました。

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