Amazonで商品を見るセール会場へ

Googleスプレッドシート│タイムスタンプを入れる方法とNOW関数の注意点

スプレッドシートに日時を入れる方法は、目的によって3つに分かれます。

日時を値として残すならショートカット、現在の日時を表示するなら関数を使います。

メニュー打刻や編集時の自動記録にはGAS(Google Apps Script)を使う例を載せています。

GASはGoogleサービスを操作するスクリプトです。

いずれも後からの編集を防ぐ監査ログではありません。

やりたいこと方法あとで変わる?
いまの日時を打ち込むショートカット再計算では変わらない
常に今日の日時を表示=NOW() =TODAY()変わる
メニュー打刻・編集時の記録GAS再実行や対象セルの編集で更新
目次

ショートカットで打ち込む

空いているセルを選び、必要な日時のショートカットを押します。

入れたいものWindowsMac
日付Ctrl+;⌘+;
時刻Ctrl+Shift+;⌘+Shift+;
日付と時刻Ctrl+Alt+Shift+;⌘+Option+Shift+;

押した瞬間の日時が、ただの値としてセルに入ります。

関数ではないので、あとから開いても変わりません。

日付・時刻のキーはGoogle公式のショートカット一覧で確認できます。

反応しない場合は、キーボード配列とブラウザーの違いを確認してください。

スポンサーリンク

関数で入れる

日付と時刻を表示する式です。

=NOW()

日付だけを表示する式です。

=TODAY()

NOWとTODAYは、最後に再計算したときの日時を返します。

更新タイミングはスプレッドシートの計算設定にも依存するため、入力時刻を固定する用途には向きません。

使いどころは「今日の日付を見出しに出す」といった、常に最新でよい場面です。

関数の結果を固定する

いったん =NOW() で出してから、値に変えることもできます。

  1. セルをコピーする
  2. 同じ場所に「値のみ貼り付け」する(WindowsはCtrl+Shift+V、MacはCommand+Shift+V)

貼り付けた後に数式バーを確認し、関数が消えて日時の値になっていることを確かめてください。

日付の見た目を変える

秒まで出したい、逆に日付だけにしたい、という場合は表示形式で変えます。

「表示形式」>「数字」から、日付や時刻の形を選べます。

中の値は同じで、見え方だけが変わります。

Googleフォームの回答時刻

フォームの回答をスプレッドシートに集めている場合、タイムスタンプの列は自動で作られます。

回答が送信された時刻が、いちばん左の列に記録されます。

回答先の連携方法はGoogleフォームの保存先設定を確認してください。

練習フォームから1件送信し、回答行の時刻とシートのタイムゾーンを照合します。

タイムスタンプ列を画面から隠すだけなら非表示を使います。

列を削除した場合の復元可否は変更履歴などの状況によるため、削除前にコピーを残してください。

メニューを押して記録する

以下のサンプルはメニューをクリックして日時を入力する仕組みです。

入力したら自動で日時が入るようにしたい場合は、後半の「入力したら自動で日時を入れる」を見てください。

このメニュー例は、入力セルを編集した時刻ではなく、メニューを実行した時点を記録します。

実行操作が必要で、押し忘れや後からの書き換えを防ぐものではありません。

GASのメニュー打刻を設定する

練習用コピーを作り、空のセルまたは連続した空の範囲で試してください。

サンプルは選択範囲の既存の値や数式を上書きします。

コードの挿入

  1. スプレッドシート上部メニューから
     「拡張機能」>「Apps Script」 を選択
  2. 開いたスクリプトエディタに、以下のコードを貼り付けます

Googleスプレッドシートのほかの操作は、まとめからご覧いただけます。

日付つきで自動コピーする方法はこちらです。

function setTimeStamp() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var time = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm');
  sheet.getActiveRange().setValue(time);
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('マイツール'); 
  menu.addItem('タイムスタンプ', 'setTimeStamp');
  menu.addToUi();
}
  • 日本時間の分単位で入力します(書式はyyyy/MM/dd HH:mm)
  • Utilities.formatDateの戻り値は文字列です

このコードはDate型の日時ではなく、日本時間を整形した文字列をセルへ渡します。

日時計算に使う場合は、入力後のセルの型を確認してください。

保存後にシートを開き直すとonOpenでカスタムメニューが追加されます。

既存のonOpenがあるプロジェクトでは、同名関数を重ねず既存処理へ統合します。

使い方

  • 打刻したい空のセル、または連続した空の範囲を選択
  • メニューバーに追加された 「マイツール」>「タイムスタンプ」 をクリック

選択範囲に同じ日時が入り、対象外のセルが変わっていないか確認します。

掲載画像は既存の画面例で、今回このコードを実行して撮影したものではありません。

メニューの「マイツール」から「タイムスタンプ」を実行し、選択した範囲に現在の日時が一括で入力された状態。

関連コードは、GitHubのMOTOKI-LLC/cg-method-codeにもあります。

記事とは更新時期が異なるため、使用する版と対応手順を確認してください。

シートのデータを整える方法は、ほかにも書いています。

入力したら自動で日時を入れる

B列に何か入力したら、同じ行のA列にその日時が自動で入るようにする方法です。

実装例はGASのonEditです。

後半の自己参照式は、実機検証が未完の参考例として分けて掲載します。

GASのonEditで自動で入れる

「拡張機能」>「Apps Script」を開き、次のコードを貼り付けて保存します。

function onEdit(e) {
  if (!e || !e.range) return;
  // 単一セルの手入力専用。複数セルの貼り付けは処理しない。
  if (e.range.getNumRows() !== 1 || e.range.getNumColumns() !== 1) return;
  const sheet = e.range.getSheet();
  if (sheet.getName() !== 'シート1') return; // 対象のシート名
  if (e.range.getColumn() !== 2) return;      // B列を編集したときだけ
  const row = e.range.getRow();
  if (row === 1) return;                      // 1行目(見出し)は除く
  const stamp = sheet.getRange(row, 1);       // A列に記録する
  if (e.range.getValue() === '') {
    stamp.clearContent();                     // B列を消したら日時も消す
  } else {
    stamp.setValue(new Date());
  }
}

このonEditは対象シートのB列を1セルずつ手入力した場合に動きます。

複数セルの貼り付け・一括削除は処理しません。

B列を編集するたびにA列を上書きする「最終編集時刻」の例で、最初の入力時刻を残すものではありません。

A列は専用の記録欄にし、元データをコピーしてから試してください。

実行ボタンは使わず、同じonEditを別のトリガーにも重複登録しないでください。

シート名と列の番号は、自分の表に合わせて書き換えます。

練習コピーのB2へ文字を入力し、A2に日時が入ることを確認してください。

B2を変更するとA2が更新され、B2を空にするとA2も消える想定です。

実行ボタンから呼ぶとイベント情報がないため、このコードは何もせず終了します。

スクリプト・APIによる書き込みや数式の再計算では動きません。

実行制限やイベントの取りこぼしもあり、改ざん防止の監査ログにはなりません。

Googleのシンプルトリガーの制約を確認してください。

Date値の表示時刻は、シートの「ファイル」→「設定」でタイムゾーンを確認します。

A列は「表示形式」→「数字」で日時の表示を選んでください。

参考:反復計算を使う自己参照式

次の式は自己参照を使う参考例です。

反復計算の設定はファイル全体に影響するため、業務ファイルで直接変更せずコピー上で試します。

「ファイル」>「設定」の「計算」で反復計算をオンにし、変更前の設定を控えます。

A2セルに次の式を入れて、下の行にコピーします。

=IF(B2="","",IF(A2="",NOW(),A2))

意図する動作は、B2が空ならA2も空、B2への入力時にA2が空ならNOW()、A2に値があればその値を返すものです。

ただし、自己参照の初期値や再計算設定によって期待どおりに保持できない場合があります。

B2の削除・再入力、ファイル再読み込みも含めた実機確認は未完です。

重要な記録の固定方法として保証せず、値入力またはGASの用途を選んでください。

自分のセルを参照する式なので、反復計算をオンにしないとエラーになります。

日時が数字で表示されたときは、「表示形式」>「数字」>「日時」を選びます。

スポンサーリンク

確認範囲と練習を戻す手順

2026年10月25日に、PCブラウザー版の公式資料と掲載コードを照合しました。

今回はキーボード操作、GASの実行、フォーム送信、自己参照式の実機試験を行っていません。

練習を戻すときは、今回追加したコードや式だけを外し、変更したセルを保存済みコピーと照合します。

反復計算を変更した場合は、元の設定へ戻して既存の計算結果も確認してください。

まず空の1セルで選んだ方法を試し、再読み込み後の値と表示時刻を確認してから対象を広げます。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

スプレッドシート・GASのおすすめ書籍

作業環境の作り方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次