リストの編集をしたら自動で更新日時を書き込んでくれるツール
スプレッドシートの1列目を編集した際に、同じ行の2列目へ現在の日時を自動入力するGASスクリプトの紹介です。
手動での記録漏れを防ぎたい方におすすめです。
このブログは、Google Apps Script(GAS)を使った自作ツールの記録や、開発の過程での気づきをまとめたものです。
丁寧な解説というより、「こんなこともGASでできるんだ」というアイディアのきっかけになれば幸いです。
やりたかったこと
業務で使うスプレッドシートで、「いつ更新したか」を毎回記録していました。
最初はショートカットで日時を入力していましたが、たまに忘れてしまい困っていました。
そこで「編集したら自動で日時を入れてくれるようにしたい」と思い、このツールを作りました。
使ったロジック・ポイント
今回の更新日時記録ツールでは、GASのイベントトリガーを使って以下のような処理を行っています。
① 編集されたセルの情報を取得
onEdit(e)イベントで編集操作を検知e.rangeから行・列の位置を取得- 対象となる列・行かどうかをチェック
② 処理対象シートを制限
- 特定のシート名だけ処理対象にする
- 別シートで反応しないようガード
③ 日時を書き込む
new Date()で現在日時を取得- 同じ行の2列目に日時を記録
コード例
このコードはシートの編集をきっかけに動きます。対象シート・行・列を確認してコードを保存し、シート上で対象セルを編集して動作を確認してください。編集時の情報を使うため、エディタの実行ボタンで直接実行する方法とは異なります。
以下のコードをスプレッドシートのスクリプトエディタに貼り付ければ、すぐに使えます。
// リストシートで1列目が編集されたら、2列目に現在日時を記録
function onEdit(e) {
const sheetName = 'リスト'; // 対象のシート名
const range = e.range;
const sheet = range.getSheet();
if (sheet.getName() !== sheetName) return;
const row = range.getRow();
const col = range.getColumn();
if (col === 1 && row >= 3) {
const date = new Date();
sheet.getRange(row, 2).setValue(date);
}
}
メモ・反省・次回やりたいこと
- 条件判定が甘いと意図しないセルにも反応してしまうので注意が必要でした。
- シート名でフィルタをかけないと、他のシートでも動いてしまうので必ずチェックするようにしています。
- 次は「誰が編集したのか」など、履歴ログを別シートに残す仕組みを作ってみたいです。
関連リンク
次に学べる内容や、関連する実例はこちらをご覧ください。
自分の業務に自動化機能を追加したい方へ
更新日時の記録や、編集に合わせた処理など、リスト管理を自動化する機能を追加したい方はご相談ください。今の作業と希望する自動化を伺い、対応できる範囲をご案内します。