Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trigger when user switches between sheets

Is there a way on to run a script whenever the user switches between sheets in a Google Sheets Spreadsheet?

More or less like onOpen, but instead of running when the document is opened, it should fire every time the user switches to another sheet.

like image 540
JLouis Avatar asked Jul 29 '26 14:07

JLouis


1 Answers

Here is my work-around for onSheetChange:

function saveActiveSheet() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var actsheet = ss.getActiveSheet();
    // The onSelectionChange() function executes in a separate thread
    // which does not use any script global variables, so use the
    // PropertiesService to maintain the user global state.
    var userProperties = PropertiesService.getUserProperties();
    userProperties.setProperty('ACTIVE_SHEET', actsheet.getSheetName());
}

function onSheetChange(e) {
    // Do anything needed after a new sheet/tab selection

}

function onSelectionChange(e) {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    // Get current sheet name and compare to previously saved sheet
    var currentactsheet = ss.getActiveSheet();
    var currentactsheetname = currentactsheet.getSheetName();
    var userProperties = PropertiesService.getUserProperties();
    var actsheetname = userProperties.getProperty('ACTIVE_SHEET');
  
    if (currentactsheetname !== actsheetname) { // New sheet selected
        saveActiveSheet();
        onSheetChange(e);   // Call custom sheet change trigger
    }
    // Do anything needed when a different range is selected on the same sheet
    else {
        var range = e.range;

    }
}

function onOpen(e) {
    saveActiveSheet();
}
like image 83
Dave Avatar answered Aug 01 '26 09:08

Dave