Такие функции, как setActiveSheet (), setActiveRange (), activAsCurrentCell () изменят представление пользовательского интерфейса, но только в активном сеансе пользователя, в котором выполняется сценарий, поэтому необходимо использовать Spreadsheet.getActiveSpreadsheet ();вместо openById ().
Вы можете использовать эти функции из пользовательского меню или триггера onEdit, чтобы изменить активный лист в пользовательском интерфейсе, из которого они были запущены, но это не повлияет на другие открытые копии листа, для этого или других пользователей.
Если вы пытаетесь выполнить запуск другим способом, когда код не выполняется в контексте текущего сеанса пользователя, вы не увидите никакого влияния на сторону пользовательского интерфейса.
/* this does not work */
function getByIDJumpByActive(){
var spreadsheet= SpreadsheetApp.openById('1u3d8Auoi3CJNqZgLiui2oKIB3FDYOwAHLq59zWY5fNk');
var sheet = spreadsheet.getSheetByName('Sheet3');
spreadsheet.setActiveSheet(sheet);
spreadsheet.toast('opened by id and jumped by active sheet');
}
/* the below all work within the active user session. */
function jumpByRange() {
var spreadsheet= SpreadsheetApp.getActiveSpreadsheet();
var range = spreadsheet.getRange('Sheet2!A1');
range.activateAsCurrentCell();
spreadsheet.toast('jumped by active cell');
}
function jumpByActive(){
var spreadsheet= SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Sheet3');
spreadsheet.setActiveSheet(sheet);
spreadsheet.toast('jumped by active sheet');
}
function onOpen(){
var doc = SpreadsheetApp.getUi();
var menu = doc.createMenu('Switch');
menu.addItem('by range','jumpByRange');
menu.addItem('by active','jumpByActive');
menu.addItem('get by ID and jump by active','getByIDJumpByActive');
menu.addToUi();
}
function onEdit(){
jumpByActive();
}