Штатного программируемого скроллинга в SpreadsheetApp я не нашёл. Наверное, есть этому какое-то разумное объяснение, связанное с какой-нибудь асинхронностью веб-приложений, не всегда понимаемой людьми, привыкшими безраздельно командовать своими VBA-макросами в локальной среде своего ПК. Лично я, например, тоже пока еще не всегда понимаю, но я стремлюсь :)
В общем, написал скриптовую функцию setAnchor(), которая по замыслу имитирует подобный скроллинг. При ее запуске в середине работы с таблицей всё происходит, как надо. Когда же запускаю тот же код в событийной функции onOpen(), чтобы типа всё красиво автоматически при открытии - то хоть ты тресни! - не выполняется второй оператор sheet.setActiveSelection('C56').
Хотя мне как-то показалось, что курсор на какое-то мгновение всё-таки замирает на ячейке C56 и потом пролетает вниз до C300. Т.е. как бы операторы setActiveSelection выполняются в обратном порядке, или, если быть еще более точным, то выполняются сверху вниз по строкам таблицы... Но не буду делать более никаких умозаключений, может быть какой умник когда-нибудь напишет об этом и всё объяснит - тогда и почитаем. А пока - просто поимеем в виду. Кстати, возможно что-то может зависеть и от конкретного браузера (я тестировался в Chrome).
Еще раз подчеркиваю - проблема "недострела" до ячейки C56 существует только при открытии таблицы, когда код setAnchor() исполняется внутри onOpen(). Ну, а чтобы быстренько исправить этот "недострел" можно воспользоваться соответствующей командой из "User Menu", которое любезно появляется в строке меню таблицы после отработки onOpen().
[vba]
Код
function onOpen() {
var ui = SpreadsheetApp.getUi(); ui.createMenu('User Menu') .addItem("Бросить якорь в C56", 'setAnchor') .addToUi();
// setAnchor(); // в этом месте отрабатывает как-то не полностью... (( не будем выполнять здесь! }
function setAnchor() {
var ss = SpreadsheetApp.getActiveSpreadsheet() var sheet = ss.getSheetByName('Лист1'); sheet.activate(); sheet.setActiveSelection('C300'); // первый "прыжок" - заведомо ниже, не на один экран sheet.setActiveSelection('C56'); // возврат с выходом в нужную точку при обратном скроллинге
}
[/vba] Если кто еще не знает, текст функций надо скопировать и вставить в Редактор скриптов (по меню Google-таблицы "Инструменты | Редактор скриптов"). Функцию onOpen() НЕ надо настраивать как триггер - среда обрабатывает ее автоматически по предопределенному имени.
P.S. rownong27, я вставил свой код в таблицу по Вашей ссылке: https://goo.gl/zy3MB0 . Не пугайтесь!
Штатного программируемого скроллинга в SpreadsheetApp я не нашёл. Наверное, есть этому какое-то разумное объяснение, связанное с какой-нибудь асинхронностью веб-приложений, не всегда понимаемой людьми, привыкшими безраздельно командовать своими VBA-макросами в локальной среде своего ПК. Лично я, например, тоже пока еще не всегда понимаю, но я стремлюсь :)
В общем, написал скриптовую функцию setAnchor(), которая по замыслу имитирует подобный скроллинг. При ее запуске в середине работы с таблицей всё происходит, как надо. Когда же запускаю тот же код в событийной функции onOpen(), чтобы типа всё красиво автоматически при открытии - то хоть ты тресни! - не выполняется второй оператор sheet.setActiveSelection('C56').
Хотя мне как-то показалось, что курсор на какое-то мгновение всё-таки замирает на ячейке C56 и потом пролетает вниз до C300. Т.е. как бы операторы setActiveSelection выполняются в обратном порядке, или, если быть еще более точным, то выполняются сверху вниз по строкам таблицы... Но не буду делать более никаких умозаключений, может быть какой умник когда-нибудь напишет об этом и всё объяснит - тогда и почитаем. А пока - просто поимеем в виду. Кстати, возможно что-то может зависеть и от конкретного браузера (я тестировался в Chrome).
Еще раз подчеркиваю - проблема "недострела" до ячейки C56 существует только при открытии таблицы, когда код setAnchor() исполняется внутри onOpen(). Ну, а чтобы быстренько исправить этот "недострел" можно воспользоваться соответствующей командой из "User Menu", которое любезно появляется в строке меню таблицы после отработки onOpen().
[vba]
Код
function onOpen() {
var ui = SpreadsheetApp.getUi(); ui.createMenu('User Menu') .addItem("Бросить якорь в C56", 'setAnchor') .addToUi();
// setAnchor(); // в этом месте отрабатывает как-то не полностью... (( не будем выполнять здесь! }
function setAnchor() {
var ss = SpreadsheetApp.getActiveSpreadsheet() var sheet = ss.getSheetByName('Лист1'); sheet.activate(); sheet.setActiveSelection('C300'); // первый "прыжок" - заведомо ниже, не на один экран sheet.setActiveSelection('C56'); // возврат с выходом в нужную точку при обратном скроллинге
}
[/vba] Если кто еще не знает, текст функций надо скопировать и вставить в Редактор скриптов (по меню Google-таблицы "Инструменты | Редактор скриптов"). Функцию onOpen() НЕ надо настраивать как триггер - среда обрабатывает ее автоматически по предопределенному имени.
Там в моем файле https://goo.gl/zy3MB0 было обсуждение вопроса. Решили что проще через комментарий якорь выставляться. Gustav вам все равно большое спасибо за ответ. Ответственно подходите к вопросу
Там в моем файле https://goo.gl/zy3MB0 было обсуждение вопроса. Решили что проще через комментарий якорь выставляться. Gustav вам все равно большое спасибо за ответ. Ответственно подходите к вопросуrownong27
Решили что проще через комментарий якорь выставлять
Что ж, "хозяин - барин"! Это Ваш выбор.
Тоже освоил этот способ. Прикольно. Буду знать, но применять в таком контексте - вряд ли. Из-за того, что: 1. При переходе внутри файла по гиперссылке фактически открывается новое окно (новая сессия) для работы с тем же файлом. Сколько раз нажмете на гиперссылку - столько новых окон откроется. 2. У ячейки назначения обязательно должен присутствовать комментарий, который немного раздражает. 3. Как такового скроллинга не происходит - ячейка назначения после перехода возникает в центре экрана.
Мой скрипт, вызываемый через "User Menu" (работоспособность которого я, кстати, восстановил) в этих же моментах выгодно отличается Из-за того, что: 1. Переход выполняется чисто внутри файла, без открытия новой сессии. И, заметьте, из любой ячейки всех листов, а не только из ячейки с гиперссылкой. 2. Никаких отметок ячейки назначения не требуется. 3. Скроллинг происходит так, что строка с ячейкой назначения после перехода оказывается первой на экране (первой в видимой в данный момент части таблицы).
Некоторое неудобство скрипта связано с тем, что он начинает работать правильно только со 2-го раза. Это тоже связано с некоторыми "непонятками", которые я описываю в своем предыдущем посте (№ 4). Как я понял, пошерстив Сеть, это какой-то баг Google, который они еще не исправили.
А способ с комментарием мне интересен, в первую очередь, для возможности входа в нужное место (ячейку) таблицы ИЗВНЕ, т.е. применяя ссылку в адресной строке браузера или в теле другого документа.
И на заметку. Параметр "disco=...", который присутствует в ссылке на комментарий, не имеет отношения к дискотеке и, вероятно, расшифровывается как "discussion comment" ("дискуссионный комментарий", "комментарий обсуждения"). Но парни из Google - с юмором!
Решили что проще через комментарий якорь выставлять
Что ж, "хозяин - барин"! Это Ваш выбор.
Тоже освоил этот способ. Прикольно. Буду знать, но применять в таком контексте - вряд ли. Из-за того, что: 1. При переходе внутри файла по гиперссылке фактически открывается новое окно (новая сессия) для работы с тем же файлом. Сколько раз нажмете на гиперссылку - столько новых окон откроется. 2. У ячейки назначения обязательно должен присутствовать комментарий, который немного раздражает. 3. Как такового скроллинга не происходит - ячейка назначения после перехода возникает в центре экрана.
Мой скрипт, вызываемый через "User Menu" (работоспособность которого я, кстати, восстановил) в этих же моментах выгодно отличается Из-за того, что: 1. Переход выполняется чисто внутри файла, без открытия новой сессии. И, заметьте, из любой ячейки всех листов, а не только из ячейки с гиперссылкой. 2. Никаких отметок ячейки назначения не требуется. 3. Скроллинг происходит так, что строка с ячейкой назначения после перехода оказывается первой на экране (первой в видимой в данный момент части таблицы).
Некоторое неудобство скрипта связано с тем, что он начинает работать правильно только со 2-го раза. Это тоже связано с некоторыми "непонятками", которые я описываю в своем предыдущем посте (№ 4). Как я понял, пошерстив Сеть, это какой-то баг Google, который они еще не исправили.
А способ с комментарием мне интересен, в первую очередь, для возможности входа в нужное место (ячейку) таблицы ИЗВНЕ, т.е. применяя ссылку в адресной строке браузера или в теле другого документа.
И на заметку. Параметр "disco=...", который присутствует в ссылке на комментарий, не имеет отношения к дискотеке и, вероятно, расшифровывается как "discussion comment" ("дискуссионный комментарий", "комментарий обсуждения"). Но парни из Google - с юмором! Gustav
1. При переходе внутри файла по гиперссылке фактически открывается новое окно (новая сессия) для работы с тем же файлом. Сколько раз нажмете на гиперссылку - столько новых окон откроется.
Не страшно, Google Таблицы предназначены для совместной работы разных пользователей. Поэтому если у себя самого пару экранов отрылось одной и той же страницы - без проблем.
Мой скрипт, вызываемый через "User Menu" (работоспособность которого я, кстати, восстановил) в этих же моментах выгодно отличается Из-за того, что: 1. Переход выполняется чисто внутри файла, без открытия новой сессии. И, заметьте, из любой ячейки всех листов, а не только из ячейки с гиперссылкой. 2. Никаких отметок ячейки назначения не требуется. 3. Скроллинг происходит так, что строка с ячейкой назначения после перехода оказывается первой на экране (первой в видимой в данный момент части таблицы).
Оке буду иметь в виду для реализации некоторых типов задач.
И на заметку. Параметр "disco=...", который присутствует в ссылке на комментарий, не имеет отношения к дискотеке и, вероятно, расшифровывается как "discussion comment" ("дискуссионный комментарий", "комментарий обсуждения"). Но парни из Google - с юмором!
Да еще те юмористы:)
_______________________________
У меня тут появился актуальны вопрос по настройке консолидации (объединение данных) Google Таблиц. Тему уже создал на этом форуме: http://www.excelworld.ru/forum/23-23640-1 Прошу помочь разобраться (т.к. ждут проекты, которые зависят от решения этой проблемы). Могли бы глянуть и отписаться в той теме?
1. При переходе внутри файла по гиперссылке фактически открывается новое окно (новая сессия) для работы с тем же файлом. Сколько раз нажмете на гиперссылку - столько новых окон откроется.
Не страшно, Google Таблицы предназначены для совместной работы разных пользователей. Поэтому если у себя самого пару экранов отрылось одной и той же страницы - без проблем.
Мой скрипт, вызываемый через "User Menu" (работоспособность которого я, кстати, восстановил) в этих же моментах выгодно отличается Из-за того, что: 1. Переход выполняется чисто внутри файла, без открытия новой сессии. И, заметьте, из любой ячейки всех листов, а не только из ячейки с гиперссылкой. 2. Никаких отметок ячейки назначения не требуется. 3. Скроллинг происходит так, что строка с ячейкой назначения после перехода оказывается первой на экране (первой в видимой в данный момент части таблицы).
Оке буду иметь в виду для реализации некоторых типов задач.
И на заметку. Параметр "disco=...", который присутствует в ссылке на комментарий, не имеет отношения к дискотеке и, вероятно, расшифровывается как "discussion comment" ("дискуссионный комментарий", "комментарий обсуждения"). Но парни из Google - с юмором!
Да еще те юмористы:)
_______________________________
У меня тут появился актуальны вопрос по настройке консолидации (объединение данных) Google Таблиц. Тему уже создал на этом форуме: http://www.excelworld.ru/forum/23-23640-1 Прошу помочь разобраться (т.к. ждут проекты, которые зависят от решения этой проблемы). Могли бы глянуть и отписаться в той теме?rownong27