Home > Software engineering >  Want to apply this auto timestamp app script to multiple tabs
Want to apply this auto timestamp app script to multiple tabs

Time:01-15

function onEdit(e) { 
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('AutoGR');
  var actRng = sheet.getActiveRange();
  var editColumn = actRng.getColumn();
  var rowIndex = actRng.getRowIndex();
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
  var dateCol = headers[0].indexOf("Date")   1;
  var orderCol = headers[0].indexOf("Batch")   1;
  var new_date = new Date();
  if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol) { 
    sheet.getRange(rowIndex, dateCol).setValue(new_date).setNumberFormat("MM-dd-yyyy"); 
  }
}

This code adds static time stamp upon update of column name with batch. Now I want to apply this to multiple tabs how can I apply this. I tried adding multiple sheet name in this code but it didn’t work

CodePudding user response:

Adding support for multiple sheets

function onEdit(e) {
  const sh = e.range.getSheet();
  const shts = ['AutoGR'];//add more sheet names
  const idx = shts.indexOf(sh.getName());
  if (~idx ) {
    const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('AutoGR');
    var actRng = sh.getActiveRange();
    var editColumn = actRng.getColumn();
    var rowIndex = actRng.getRowIndex();
    var headers = sh.getRange(1, 1, 1, sh.getLastColumn()).getValues();
    var dateCol = headers[0].indexOf("Date")   1;
    var orderCol = headers[0].indexOf("Batch")   1;
    var new_date = new Date();
    if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol) {
      sh.getRange(rowIndex, dateCol).setValue(new_date).setNumberFormat("MM-dd-yyyy");
    }
  }
}

Note I just added the support for multiple sheets but I'm not interested in debugging the rest of your code.

Bit Wise Not

CodePudding user response:

Resolved but unable to post code.

  •  Tags:  
  • Related