У меня есть таблица с двумя листами внутри с именем «Sheet1» и «Sheet2». У меня есть сценарий, работающий на выберите пункт меню:Google Script getActiveRange
function foo(){
var oSheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"),
oSheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
Logger.log(oSheet1.getActiveRange().getValues());
Logger.log(oSheet2.getActiveRange().getValues());
} // foo
Я выбираю в браузере в Лист1 первый диапазон, а затем нажмите на Лист2 и выберите второй диапазон, отличный от первого. Я нажимаю элемент меню, запускаю foo(). Logger просматривает тот же результат для oSheet1 и oSheet2. Зачем? И как я могу получить выбранный диапазон на неактивных листах?
Вот таблица с полным доступом https://docs.google.com/spreadsheets/d/1lfQl9H1PW2lKL-4YJir7uxl-ZMnDR6Zn1_FndG07WGY/edit#gid=1264703349
Первый Range Image - https://i.stack.imgur.com/GBdtF.png Второй Range Image - https://i.stack.imgur.com/Qcivq.png – roskoshinsky
Это работает, если вы ставите ';' точка с запятой после строки 1 и var в начале строки 2. Конечно, вам придется просматривать журналы, и вы будете смотреть на пару двухмерных массивов. Таким образом, он не будет выглядеть точно так же, как ваша электронная таблица. Но вы должны использовать, чтобы перемещать ваши данные таким образом, потому что это по крайней мере на порядок быстрее, чем возиться с ячейками. – Cooper
Cooper, вы имеете в виду function foo() { var oSheet1 = SpreadsheetApp.getActiveSpreadsheet(). GetSheetByName ("Sheet1"); var oSheet2 = SpreadsheetApp.getActiveSpreadsheet(). GetSheetByName ("Sheet2"); Logger.log (oSheet1.getActiveRange(). GetValues ()); Logger.log (oSheet2.getActiveRange(). GetValues ()); SpreadsheetApp.getUi(). Alert (oSheet1.getActiveRange(). GetValues ()); SpreadsheetApp.getUi(). Alert (oSheet2.getActiveRange(). GetValues ()); } // foo - Я был бы удивлен, если бы точка с запятой спасла ситуацию. И этот журнал событий показывает два одинаковых результата с разными вариантами листа. – roskoshinsky