初心者でも安心!GASでタイムスタンプを取得・変換する方法

GASでタイムスタンプってどうやって取得するんだろう?形式もいろいろあるみたいで、何から始めていいのか…
猫男
猫男
catman
catman
よし、GASのタイムスタンプについて、catmanに任せるんだ!一緒にやってみよう。

GASでタイムスタンプを取得する方法

GAS(Google Apps Script)でタイムスタンプを取得するのは実は簡単だ。まずは基本を押さえておこう。

タイムスタンプの基本取得

GASでタイムスタンプを取得するためには、次のコードを使う。


function getCurrentTimestamp() {
  var now = new Date();
  Logger.log(now);
}

上記のスクリプトは現在の日付と時刻を取得し、ログに出力する。

たとえば、

Mon Jun 09 19:47:31 GMT+09:00 2025

のように出力されるはずだ。これは「2025年6月9日(月)午後7時47分31秒(日本時間)」を表している。

 

コードを解説しよう。

new Date() は現在の日時(ローカル時間)を表す Date オブジェクトを生成する。

そして、now という変数にその日時オブジェクトを代入しているんだ。その nowをLogger.logでログ出力するってわけよ。

 

フォーマットの変更

タイムスタンプは日付のみや特定のフォーマットに変換できるぞ。


function getFormattedTimestamp() {
  var now = new Date();
  var formattedDate = Utilities.formatDate(now, Session.getScriptTimeZone(), "yyyy-MM-dd");
  Logger.log(formattedDate);
}

このコードでは、単に現在時刻を出力するだけじゃない。

Utilities.formatDate()メソッドで特定のフォーマットに変換しているんだ。

Session.getScriptTimeZone() は、スクリプトのタイムゾーンを取得(例:Asia/Tokyo)し、”yyyy-MM-dd” は「2025-06-09」のような年-月-日のフォーマットを指定している。

GASの実行ボタンでタイムスタンプを取得してみよう

それでは、実行ボタンでタイムスタンプを取得してみよう。

まずはスプレッドシートにボタンを配置して、スクリプトは次のものを準備だ。


function insertTimestamp() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cell = sheet.getActiveCell();
  var now = new Date();
  cell.setValue(now);
}

この関数をスプレッドシートのボタンに割り当てることで、ボタンをクリックするだけでアクティブなセルにタイムスタンプが入力されるはずだ。

gas タイムスタンプ 取得

 

ここでは、SpreadsheetApp.getActiveSpreadsheet()で現在アクティブなスプレッドシートを取得し、アクティブなセルに値を設定している。

 

えっ、実行ボタンの設置方法がわからない?

そんなときは「GASでの実行ボタンの設定方法」を復習してみよう。

 

こんなに簡単にボタンでタイムスタンプが取得できるなんて驚きです!
猫男
猫男
catman
catman
GASは繰り返しのタスクを自動化するのに最適だ。これで効率的に業務を進められるさ!

練習問題:タイムスタンプをスプレッドシートに自動で記録しよう

GASを使って、特定の列にタイムスタンプを自動記録するスクリプトを作成してみましょう。

問題

次の要件を満たすスクリプトを作成してください。

  • スプレッドシートの最初のシートにタイムスタンプを記録する。
  • 行の更新が発生するたびに、別の列に現在のタイムスタンプを記録する。

練習問題の解答・解説

以下がタイムスタンプを自動記録するためのスクリプトです。


function onEdit(e){
  var timestampCol = 2; // タイムスタンプを記録する列(例:A列の次のB列)
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var range = e.range;

  if (range.getColumn() != timestampCol) {
    var row = range.getRow();
    var now = new Date();
    sheet.getRange(row, timestampCol).setValue(now);
  }
}

このスクリプトは、編集イベントを捉え、最初のシートの特定の列にタイムスタンプを記録します。

onEdit(e)は、ユーザーがスプレッドシートを編集したときに自動的に呼び出される関数。
e.rangeは、編集された範囲を示すオブジェクト。
range.getColumn()を使って、タイムスタンプ列が編集されていない場合にタイムスタンプを記録。

これで、スプレッドシートでのタイムスタンプ記録もバッチリですね!効率が上がりそうです。
猫男
猫男
catman
catman
その通りだ。GASを使いこなして、もっと自動化を極めるようにしよう。