UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【GAS】Webスクレイピング(その3)- UNIXタイムをDateオブジェクトにする

前回に引き続いてGASでWebスクレイピングを行っていたが問題が発生

取得した項目の中に日付(YYYYMMDD)と時刻(HH:mm)があるのだが、ブラウザ上で確認したときはJSTであったが、GASから取得した場合はそれらのが一部UTCになっていて、出力結果がUTCの項目とJSTの項目が混ざっている状態になっていた

JSTにしたいという要望があったのでGASでJSTにする方法を考える

Utilities.formatDate(date, timeZone, format)を使う

結論、Dateオブジェクトを文字列に変換するユーティリティメソッドを使う

Utilities.formatDate(date, timeZone, format)
Parameters
・date: Dateオブジェクト
・timeZone: タイムゾーン (JST, UTC など)
・format: SimpleDateFormatに準じたフォーマット
Return
・フォーマットされた文字列にしたもの
developers.google.com

Dateオブジェクトが作れれば解決しそう

Dateオブジェクトをどう作るか

要素のテキスト部分の日付(YYYYMMDD)と時刻(HH:mm)をくっつけてからDateオブジェクト作るのは結構大変にみえたし、特にUTCの項目とJSTの項目が混ざっているためバグになりそうで怖い

何か他のよい方法がないかを探して要素をよく見てみると日付時刻に関する項目には全てカスタムdata属性でdata-timestampがついていた

data-timestamp="1590167582"

この属性の値はUNIXタイムなので項目毎にUTCJSTを気にする必要がなく扱うことができそう

UNIXタイムをDateオブジェクトにする

以下の方法でUNIXタイムをDateオブジェクトにする

Utilities.formatDate(new Date(+unixTime * 1000),"JST","HH:mm");

これで問題は解決したので、あとは取得した項目をセルにセットして終わり