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列へ日時が自動で記録されるようになります。手作業で日時を入力する必要がなくなるため、語彙学習の記録や作業履歴の管理に便利です。