MrrrDude
MrrrDude

Reputation: 21

Google sheets onEdit stopped working out of nowhere

Can someone please help with, for some reason out of nowhere the "onEdit" function stopped working for me. Yesterday everything worked perfectly fine and I checked the authorization but for some reason the following onEdit() script no longer works for me? I also get the "Cannot read property "range" from undefined" error.

function onEdit(e) {
  insertRow(e);
  timeStamp(e);
}

function insertRow(e) {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = e.range;
  if(sh.getName()!="Test")return;
  var colIValue=sh.getRange(e.range.rowStart,9).getValue();
  var colHValue=sh.getRange(e.range.rowStart,8).getValue();
  if (colHValue=="Yes" & e.range.getColumn()==9 & colIValue==true){
    sh.insertRowsAfter(e.range.rowStart, Number(sh.getRange(e.range.rowStart,4).getValue())-1);
  }
}

function timeStamp(e) {
  var sh=e.range.getSheet();
  if(sh.getName()!="Test"){return;}
  if(e.range.columnStart<7) {
    var ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"MM/dd/yy HH:mm");
    sh.getRange(e.range.rowStart,7,e.range.rowEnd-e.range.rowStart+1,1).setValue(ts);
  }
}

Upvotes: 1

Views: 124

Answers (1)

Cooper
Cooper

Reputation: 64032

Try this:

function onEdit(e) {
  //e.source.toast('Flag1');
  insertRow(e);
  timeStamp(e);
}

function insertRow(e) {
  //e.source.toast('flag2');
  var sh=e.range.getSheet();
  var range = e.range;
  if(sh.getName()!="Test")return;
  var colIValue=sh.getRange(e.range.rowStart,9).getValue();
  var colHValue=sh.getRange(e.range.rowStart,8).getValue();
  //the next line is always false unless you have a checkbox in column9 and you set it up with a custom value of 'yes' for true.
  if (colHValue=="Yes" && e.range.columnStart==9 && colIValue==true){
    sh.insertRowsAfter(e.range.rowStart, Number(sh.getRange(e.range.rowStart,4).getValue())-1);
  }
}

function timeStamp(e) {
  //e.source.toast('flag3');
  var sh=e.range.getSheet();
  if(sh.getName()!="Test"){return;}
  if(e.range.columnStart<7) {
    var ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"MM/dd/yy HH:mm");
    sh.getRange(e.range.rowStart,7,e.range.rowEnd-e.range.rowStart+1,1).setValue(ts);
  }
}

Upvotes: 1

Related Questions