-2

I am not a coder but try to build an inventory tracking tool using google java script. I am having "TypeError: Cannot read property 'range' of undefined" for below code. Not sure, how resolve it. Please help me resolve this.

function onEdit(e) {
  var range = e.range;
  var spreadSheet = e.source;
  var spreadSheetName = spreadSheet.getActiveSpreadsheet().getName();
  var searchColumn = range.getColumn();
  var searchRow = range.getRow();

  //DEFINE ALL ACTIVE SHEET
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  //DEFINE MENU SHEET
  var menuSheet = ss.getRangeByName("Menu");
  var inventorySheet = ss.getSheetByName("Inventory");

  Logger.log('Column: ' + searchColumn + ' Row: ' + searchRow + ' Value:' + e.value + ' spreadSheetName: ' + spreadSheetName);

  if(searchColumn == 2 && searchRow == 4 && e.value != '' && spreadSheetName == 'Menu') {
    var partNumber = e.value;

    //LAST ROW ON INVENTORY SHEET
    var lastRow = inventorySheet.getLastRow() + 1;
    var foundRecord = false;

    for(var j = 2; j < lastRow; j++) {
      //UPDATE EXISTING QUANTITY AT FROM LOCATION
      if(inventorySheet.getRange(j,1).getValue() == partNumber) {
        var nextRow = menuSheet.getLastRow() + 1;

        menuSheet.getRange(nextRow,1).setValue([inventorySheet.getRange(j,1).getValue()]).setFontSize(12).setFontWeight("bold");
        menuSheet.getRange(nextRow,2).setValue([inventorySheet.getRange(j,1).getValue()]).setFontSize(12).setFontWeight("bold");
        menuSheet.getRange(nextRow,3).setValue([inventorySheet.getRange(j,1).getValue()]).setFontSize(12).setFontWeight("bold");
        foundRecord = true;
      }

    }

    if(foundRecord == false) {
      menuSheet.getRange(10,1).setValue(['(NO RECORDS FOUND)']).setFontSize(12).setFontWeight("bold");
    }


 }
Michele Pisani
  • 13,567
  • 3
  • 25
  • 42
  • 2
    it seems that `e` is undefined inside `onEdit`... where is this function being called? – Calvin Nunes Jan 26 '21 at 21:20
  • Which line throws the error? (I'm guessing the first line of the function.) What do you expect the object on that line to be and why? – David Jan 26 '21 at 21:21

1 Answers1

0

If you are running the code from inside the script editor, you will get a range error. In the case of a simple onEdit() trigger, you can only test the code by actually editing a cell. The e event variable will not have anything assigned to it unless you actually edit a cell. That e variable will be assigned an event object when the event (a cell edit) happens.

Michele Pisani
  • 13,567
  • 3
  • 25
  • 42