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);
}

Reply via email to