前回に引き続いて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タイムなので項目毎にUTCやJSTを気にする必要がなく扱うことができそう
UNIXタイムをDateオブジェクトにする
以下の方法でUNIXタイムをDateオブジェクトにする
Utilities.formatDate(new Date(+unixTime * 1000),"JST","HH:mm");
これで問題は解決したので、あとは取得した項目をセルにセットして終わり