earthpg:GAS専門のプログラミングスクール

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

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

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

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

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

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


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

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

Date()クラスを使って表すオブジェクトに現在の日時が自動的に格納される。

フォーマットの変更

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


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

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

🔍 日付フォーマット “yyyy-MM-dd” は、年-月-日の表示。

スマートに実装!ボタンでタイムスタンプを取得する

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

スプレッドシートにボタンを配置する

スプレッドシートにボタンを配置してみよう。まずはスクリプトでバックエンドの準備が必要だ。


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

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

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

ボタンの設定方法

スプレッドシートでボタンを作成し、右クリックしてスクリプトに関数を割り当てる方法を紹介する。

  1. 「挿入」メニューから「図形の描画」を選ぶ。
  2. 図形ツールでボタンを作成し、適当な場所に配置。
  3. ボタンを右クリックし、「スクリプトを割り当て」を選択。
  4. ダイアログボックスにinsertTimestampという関数名を入力してOK。
こんなに簡単にボタンでタイムスタンプが取得できるなんて驚きです!
猫男
猫男
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を使いこなして、もっと自動化を極めるようにしよう。