Googleスプレッドシートに入力された以下のような時間データを、Google Apps Script(GAS)で取得すると、違った形式でしか取得できない問題に遭遇した。

function getTime() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
let time = sheet.getRange(2, 2).getValue();
console.log(time);
}

GASではgetValue
関数で日付や時間データを取得すると、自動的にDateオブジェクトに変換されるためこのような結果となる。
formatDate
関数を使うことで、日付の表示形式を自由に変更することができるので、以下のようにフォーマットすると良い。
time = Utilities.formatDate(time, "JST", "H:mm");
formatDate
関数は第一引数にDateオブジェクト、第二引数にタイムゾーン、第三引数にフォーマットを取るため、タイムゾーンに日本標準時を表すJST
を、フォーマットにH:mm
を指定する。
先ほどのコードに、フォーマット用のコードを追加して実行した結果がこちら。

取得した時刻データが正しくフォーマットされていることが確認できる。