Googleスプレッドシートに入力された以下のような時間データを、Google Apps Script(GAS)で取得すると、違った形式でしか取得できない問題に遭遇した。
![](https://i0.wp.com/chusotsu-program.com/wp-content/uploads/2021/11/image-13.png?resize=528%2C148&ssl=1)
function getTime() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
let time = sheet.getRange(2, 2).getValue();
console.log(time);
}
![](https://i0.wp.com/chusotsu-program.com/wp-content/uploads/2021/11/image-14.png?resize=1024%2C298&ssl=1)
GASではgetValue
関数で日付や時間データを取得すると、自動的にDateオブジェクトに変換されるためこのような結果となる。
formatDate
関数を使うことで、日付の表示形式を自由に変更することができるので、以下のようにフォーマットすると良い。
time = Utilities.formatDate(time, "JST", "H:mm");
formatDate
関数は第一引数にDateオブジェクト、第二引数にタイムゾーン、第三引数にフォーマットを取るため、タイムゾーンに日本標準時を表すJST
を、フォーマットにH:mm
を指定する。
先ほどのコードに、フォーマット用のコードを追加して実行した結果がこちら。
![](https://i0.wp.com/chusotsu-program.com/wp-content/uploads/2021/11/image-15.png?resize=1024%2C294&ssl=1)
取得した時刻データが正しくフォーマットされていることが確認できる。