I was wondering if there were a way to get which range of cells were edited,
and which sheet was edited, using this code (modified from a previous
poster):
// create a spreadsheet just for logs and enter it here
var LOGS_SHEET_ID = "Lost Sheet ID String";
var LOG_SHEET_INDEX = 0;
var LOGS_STARTED = false;
var logSheet = null;
var logColumn = null;
var logRow = null;
function clearLogs() {
var logSpreadSheet = SpreadsheetApp.openById(LOGS_SHEET_ID);
var logSheet = logSpreadSheet.getSheets()[LOG_SHEET_INDEX];
logSheet.clear();
}
function startLogs() {
if (!LOGS_STARTED) {
LOGS_STARTED = true;
var logSpreadSheet = SpreadsheetApp.openById(LOGS_SHEET_ID);
logSheet = logSpreadSheet.getSheets()[LOG_SHEET_INDEX];
// make a new row
logSheet.insertRows(2, 1); //(distance,insert qty)
logRow = 2;
logColumn = 2;
logSheet.getRange(2, 1).setValue(new Date().toUTCString());
}
}
function writeError(e, optMsg) {
startLogs();
// write the edit into the next cell
msg = (optMsg ? optMsg+'...':'') + e.name + '-' + e.message;
logSheet.getRange(2, 2).setValue(msg); //Error message not used when
called "on edit" - returns "undefined -- undefined"
logSheet.getRange(2, 3).setValue(e.user); //The account that made the edit
logSheet.getRange(2, 4).setValue(e.Sheeet); //The sheet that was edited
logSheet.getRange(2, 5).setValue(e.Range); //Does not work - returns
"undefined"
//logSheet.getRange(2, 6).setValue(e.value); //Old value before edit - Not
sure how to extract this data
logSheet.getRange(2, 7).setValue(e.value); //New value after edit - Does
not work when multiple values are changed
}
function writeLog(msg) {
startLogs();
// write the msg into the next cell
logSheet.getRange(2, 2).setValue(msg);
}