Google Sheets - Отслеживать текущий выбор ячеек?
Как получить выбранную ячейку / диапазон? спросили 3,5 года назад, но я надеюсь, что с тех пор, возможно, был достигнут некоторый прогресс.
Я хотел бы создать интерактивную электронную таблицу, в которой есть логическая сетка, которая будет отображать дополнительную информацию о состоянии выбранной в данный момент ячейки в статическом месте, позволяя пользователям быстро перемещаться с помощью клавиш со стрелками.
Ссылаясь на предыдущий экземпляр этого вопроса, я попытался использовать пользовательскую функцию ниже, чтобы получить адрес ячейки, хотя это не очень динамично.
function currentCell() {
return SpreadsheetApp.getActive().getActiveRange().getA1Notation();
}
При тестировании эта функция возвращает адрес ячейки, из которой вызывается функция. Я пытался нажать F5 при выделении другой ячейки, но ничего не произошло. Я также перетащил формулу через выделение, и каждая ячейка содержит только свой собственный адрес (согласно документации, он должен содержать диапазон).
Я также прочитал статью Энрике о кешировании с 2012 года, и хотя я не до конца ее понимаю, я понял, что мы не можем получить скрипты, которые обновляются без внесения изменений или ручного обновления формул.
В идеале я хотел бы, чтобы текущая ячейка отслеживалась без каких-либо дополнительных запросов от пользователя, кроме навигации по клавише со стрелкой или щелчка для выбора ячейки, но если нажатие неизменяющей клавиши (например, Enter) позволит отслеживать, это будет хорошо, Мне также нужна только выбранная ячейка, а не диапазон, если это облегчает задачу.
Явный вопрос: возможно ли отследить положение выбранной в данный момент ячейки в Google Sheets и сохранить ее в отдельной ячейке? Если нет, есть ли способ сделать это без изменения значений ячеек?
РЕДАКТИРОВАТЬ: Добавление примера для ясности. В этом концептуальном примере А2 =currentCell()
как описано выше. Если бы я нажал правую клавишу со стрелкой, A2 обновился бы для отображения I4
, так как теперь это текущий выбор.
РЕДАКТИРОВАТЬ 2: Ответ Джейсона Олсхорна на выбранные диапазоны электронных таблиц монитора приложений Google, по- видимому, позволяет отображать текущий выбор (диапазон) во вводимом тексте HTML. Я хотел бы сделать это, но хранить значение в статической ячейке на листе, а не вводить текст. Я новичок в написании сценариев в Sheets и действительно знаю только то, что нашел для решения этой проблемы, поэтому, если я что-то пропускаю, пожалуйста, дайте мне знать. Я посмотрел пример листа Джейсона, и мне не было ясно, что на самом деле там происходит.
3 ответа
Вам нужно будет применить методику, предложенную в разделе Как сделать так, чтобы на боковой панели отображались значения из ячеек?, Это заключается в использовании клиентского кода для постоянного извлечения значений из электронной таблицы и последующего выполнения соответствующей задачи.
Один из подходов заключается в использовании боковой панели с полем ввода для установки отслеживаемых ячеек и другим полем ввода для установки ячейки назначения.
Вам придется использовать
onSelectionChange
событие в сценарии приложения, чтобы зафиксировать любое изменение выбора, а затем получить имя диапазона и поместить его в нужную ячейку.
Что-то вроде приведенного ниже:
function onSelectionChange(e) {
const range = e.range;
//Return in case of multi cell selection
if(range.getNumRows() !== 1 || range.getNumColumns() !== 1) return;
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A2").setValue(range.getA1Notation());
}
Вы можете увидеть официальную документацию здесь