Скрипт не имеет прямого отношения к пользовательскому интерфейсу Sheets относительно активных ячеек, листов и т. Д., По крайней мере, если вы используете электронную таблицу с привязкой к контейнеру и запускаете скрипт с макросом или надстройкой внутри интерфейса электронных таблиц (насколько я понимаю, вы делаете). Но в этом случае вы сможете работать только с активными ячейками электронной таблицы, связанной с контейнером.
Подводя итог, функции getActiveSheet () и getActiveCell () будут возвращать только правильное значение для электронной таблицы с привязкой к контейнеру, запуская скрипт внутри электронной таблицы (макрос или надстройку) и используя функции «getActive ...» чтобы получить электронную таблицу, лист или диапазон (вместо openById ()) [1]. Например:
var ssThis = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet=ssThis.getActiveSheet();
var cellThis=activeSheet.getCurrentCell();
В любых других случаях в открываемой электронной таблице всегда будут возвращаться первый лист и первый celL (A1). По крайней мере, вы используете функцию «activ ()» [2] или «setActive…» [3], чтобы установить активную ячейку или лист, но для этого вам нужно знать активную ячейку.
[1] https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getactive
[2] https://developers.google.com/apps-script/reference/spreadsheet/range
[3] https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#setactiverangerange