A列の任意のセルを編集した時、B列に自動で編集した日時を入力するということをやっています。
※日時を入力する列にすでにデータが入っている場合は上書きされるので、データが入っていない列を指定して下さい。
ポイント
1. A列が編集されたら、B列に編集した日時を入力する。
if(col == 1){
var date = new Date();
sh.getRange(row, 2).setValue(date);
}
コード.gs
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var range = sh.getActiveRange();
var row = range.getRow();
var col = range.getColumn();
if(col == 1){
var date = new Date();
sh.getRange(row, 2).setValue(date);
}
}
A列を編集すると、B列に編集した日時が入力されます。
再度同じA列のセルを編集すると、B列の日時が更新されます。
if文を消すと、どの行を編集してもB列に編集日時が更新されるようになります。
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var range = sh.getActiveRange();
var row = range.getRow();
var col = range.getColumn();
//if(col == 1){
var date = new Date();
sh.getRange(row, 2).setValue(date);
//}
}
追記:もっと短く書いてみる
編集した行の10列目に日時を入力する
function onEdit() {
const col = 10;
const sheet = SpreadsheetApp.getActiveSheet();
const row = sheet.getActiveRange().getRow();
sheet.getRange(row, col).setValue(new Date());
}
指定したシートの指定した行以降のセルが編集された時に実行する
上の例では一行目を編集すると常にB列に日付の更新が入るため、一行目をヘッダにしている場合は二行目からを対象にしたいと思うはず。
そして複数のシートがある場合は、B列を自動で更新されたくないシートもあるはず。
ということで、指定したシートの2行目以降のセルが編集されたら、B列に更新日時を自動入力するというコードも書いてみました。
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var sh_id = sh.getSheetId();
var range = sh.getActiveRange();
var row = range.getRow();
if (sh_id == 0) {
if (row > 1) {
var date = new Date();
sh.getRange(row, 2).setValue(date);
}
}
}
