Googleスプレッドシートで入力時刻を自動記録するGASコード

Googleスプレッドシートで単語リストや学習記録を作るとき、「いつ入力したか」を自動で記録したい場合があります。

たとえば、B列に「調べる語」を入力したときに、同じ行のH列へ自動で日時を入れるようにすると、あとから学習履歴を確認しやすくなります。

今回のコードでは、次のような動きをします。

B列に文字を入力すると、同じ行のH列に現在の日時が入ります。

たとえば、B3に語を入力すると、H3に日時が入ります。B10に語を入力すると、H10に日時が入ります。

また、B列の内容を書き換えた場合は、H列の日時も新しい日時に更新されます。つまり、このコードは「最初に入力した日時」ではなく、「最後に入力・変更した日時」を記録する仕組みです。

B列の内容を削除した場合は、同じ行のH列の日時も削除されます。これにより、語を消したのに日時だけが残ってしまうことを防げます。

このコードでは、B列やH列をアルファベットで直接指定しているわけではありません。Google Apps Scriptでは、列を番号で指定します。

A列は1、B列は2、C列は3というように数えます。そのため、B列は「2」、H列は「8」として指定します。

GASコードの入力方法
Googleスプレッドシートを開き、「拡張機能」→「Apps Script」をクリックします。
表示された画面に、下のGASコードをコピー&ペーストしてください。

function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  const range = e.range;

  // ===== 列番号の設定 =====
  // Google Apps Scriptでは、列を番号で指定する
  // A列は1、B列は2、C列は3……という数え方をする

  const WORD_COLUMN = 2; // B列:「調べる語」を入力する列
  const TIME_COLUMN = 8; // H列:「時刻」を記録する列

  // 編集されたセルがB列以外なら、何もしない
  // ここで「B列だけを対象にする」と指定している
  if (range.getColumn() !== WORD_COLUMN) return;

  // 1行目は見出しなので、編集されても何もしない
  if (range.getRow() === 1) return;

  // 編集された行番号を取得する
  const row = range.getRow();

  // B列に入力された内容を取得する
  const word = range.getValue();

  // 編集された行と同じ行のH列を指定する
  // たとえばB3を編集した場合はH3を指定する
  // B10を編集した場合はH10を指定する
  const timeCell = sheet.getRange(row, TIME_COLUMN);

  // B列が空になったら、同じ行のH列も空にする
  if (word === "") {
    timeCell.clearContent();
    return;
  }

  // B列に入力・変更があったら、同じ行のH列に現在日時を入れる
  timeCell.setValue(new Date());

  // H列に入れる日時の表示形式を指定する
  timeCell.setNumberFormat("yyyy/MM/dd HH:mm:ss");
}

このコードで特に重要なのは、次の2行です。

const WORD_COLUMN = 2; // B列:「調べる語」を入力する列
const TIME_COLUMN = 8; // H列:「時刻」を記録する列

WORD_COLUMN = 2 は、B列を意味しています。つまり、B列を「調べる語」を入力する列として使うという意味です。

TIME_COLUMN = 8 は、H列を意味しています。つまり、H列を「時刻」を記録する列として使うという意味です。

そして、次の部分で「B列以外は無視する」と指定しています。

if (range.getColumn() !== WORD_COLUMN) return;

この行があるため、C列やD列を編集しても、H列の日時は更新されません。B列を編集したときだけ、日時が記録されます。

また、次の部分で、同じ行のH列を指定しています。

const timeCell = sheet.getRange(row, TIME_COLUMN);

row には、編集された行番号が入ります。TIME_COLUMN には、H列を意味する8が入っています。

そのため、B3を編集した場合はH3、B10を編集した場合はH10に日時が入ります。

このコードを使うと、次のようなスプレッドシートを作ることができます。

No.|調べる語|よみ|英訳|母語訳|説明URL|画像URL|時刻

B列の「調べる語」に入力すると、H列の「時刻」に自動で日時が記録されます。

コードを使うには、Googleスプレッドシートの上部メニューから「拡張機能」→「Apps Script」を開き、コードを貼り付けて保存します。

これで、B列に語を入力・変更するたびに、H列へ日時が自動で記録されるようになります。手作業で日時を入力する必要がなくなるため、語彙学習の記録や作業履歴の管理に便利です。

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

この記事を書いた人

GoodMorning!

デジタルの海原を冒険しながら、美食の宝を探し求める探検家です。テクノロジーの世界を舞台に、新しい発見を求めて、キーボードの海を横断。そして、実世界では、隅々まで足を運んで、舌鼓を打つ価値のある美味しいお店を見つけ出します。

私の使命は、小さなITの豆知識から始まり、心を満たすグルメスポットの紹介まで、あなたの日常にちょっとしたスパイスを加えること。画面の向こう側から、気軽に楽しめる話題を届けたいのです。ここでは、私が「これは!」と思った技術的な小話や、舌の記憶に残るような食べ物屋さんを紹介していきます。

このWebサイトは、ITとグルメ、二つの世界を融合させた、まさにデジタルと現実の融合点。ふらっと立ち寄って、新たな発見や、ほっこりするような話題で一息ついていただけたら幸いです。知識の海を冒険し、味覚の旅を楽しみましょう。毎日を少しだけ特別なものに変える、そんな情報をお届けします。

GoodMorning!

I am an explorer who ventures across the digital sea in search of gastronomic treasures. In the world of technology, I traverse the sea of keyboards in search of new discoveries. And in the real world, I visit every nook and cranny to find a delicious restaurant worth tantalizing your taste buds.

My mission is to add a little spice to your everyday life, starting with little IT tidbits and ending with foodie spots that fill your heart. I want to bring you topics that you can easily enjoy from the other side of the screen. Here, I'm going to share with you some of the technical tidbits and I will introduce small technical stories and food shops that will leave a lasting impression on your taste buds.

This Web site is truly a fusion point of digital and reality, combining the two worlds of IT and gourmet. I hope you will stop by and take a breather with new discoveries and dusty topics. Come explore the sea of knowledge and enjoy a journey of taste. I will bring you the information that will change your everyday life into something a little more special.

目次