Google Apps Scriptで以下のようなスクリプトを入力しました。
logSheet.getRange(1, 7).setValue("変更前");に編集前のセルの値が入るようにしたいのですが、いろいろ探し、実践してもうまくいきません。
undefinedというコードやrangeというコードが出ており、取得できずにいます。
oldValueのコードを入れ込みはどのようにすればよろしいでしょうか?
そのほかに方法などあればご教示いただきたいです。
function onMyEdit(e) {
//Log保存用シートの名前
var logSheetName = 'log';
// スプレッドシート
var ss = SpreadsheetApp.getActiveSpreadsheet();
// スプレッドシート名
var ssName = ss.getName();
// 選択シート
var sheet = ss.getActiveSheet();
// 選択シート名
var sheetName = sheet.getName();
// Logシートなら何もしない
if (sheetName == logSheetName) {
return;
}
// 選択セル範囲
var range = sheet.getActiveRange();
// セル範囲の行番号
var rowIndex = range.getRowIndex();
// セル範囲の列番号
var colIndex = range.getColumnIndex();
// getRange(始点行, 始点列, 取得する行数, 取得する列数)
var v = sheet.getRange(rowIndex, colIndex,1,1).getValue();
//内容が空だ
if (v == '') {
v = 'Delete';
}
var oldValue = sheet.getRange(rowIndex, colIndex,1,1)
//更新者のメールアドレス
var email = Session.getActiveUser().getEmail();
//ここからLogシートに書き込み
//Log保存用シート
var logSheet = ss.getSheetByName(logSheetName);
//引数で指定した行の前の行に1行追加
logSheet.insertRowBefore(1);
logSheet.getRange(1, 1).setValue("更新日");
logSheet.getRange(1, 2).setValue("更新時間");
logSheet.getRange(1, 3).setValue("更新者");
logSheet.getRange(1, 4).setValue("シート名");
logSheet.getRange(1, 5).setValue("行番号");
logSheet.getRange(1, 6).setValue("列番号");
logSheet.getRange(1, 7).setValue("変更前");
logSheet.getRange(1, 8).setValue("更新内容");
//日付
logSheet.getRange(2, 1).setNumberFormat('yyyy/mm/dd(ddd)');
logSheet.getRange(2, 1).setValue(new Date());
//時刻
logSheet.getRange(2, 2).setNumberFormat('h:mm:ss');
logSheet.getRange(2, 2).setValue(new Date());
//更新者
logSheet.getRange(2, 3).setValue(email);
//シート名
logSheet.getRange(2, 4).setValue(sheetName);
//行番号
logSheet.getRange(2, 5).setValue(rowIndex);
//列番号
logSheet.getRange(2, 6).setValue(colIndex);
logSheet.getRange(2, 7).setValue(oldValue);
//変更セルの内容(Stringフォーマットにする)
logSheet.getRange(2, 8).setNumberFormat('@');
logSheet.getRange(2, 8).setValue(v);
}