У меня есть раздел заголовка с тремя гиперссылками на разные области листа.
При переходе к каждому разделу я хотел бы обновить значение (или каким-либо другим способом), которое я могу использовать для условного форматирования заголовка (слово активного диапазона — черный текст, два других — серые).
Я пробовал onChange(), но, похоже, это срабатывает только тогда, когда я добавляю/удаляю строки. onEdit не будет работать, так как я ничего не редактирую, чтобы перейти к этому разделу.
Получение активного диапазона — один из способов сделать это, но как мне заставить его работать при щелчке по ссылке?
Я попробовал функцию active() в скрипте приложений, но ее запуск занимает слишком много времени (около 3-4 секунд).
Есть идеи, которые я пропустил?
Спасибо
редактировать: https://docs.google.com/spreadsheets/d/1dLub0PcCpeqtae3Ut8Up6sU2OLOPA8ULvVD7MfT46mk/edit#gid=0
Я связал файл с доказательством концепции. В каждой ячейке раздела вверху есть ссылка на раздел на этой вкладке.
Что мне нужно, так это то, что если отображается раздел (например, раздел 2 - зеленый), ячейка в заголовке, говорящая «Раздел 2», станет зеленой.
Если отображается раздел 3 (синий), ячейка в заголовке с разделом 3 станет синей.
То же самое при нажатии на ссылку в каждой ячейке -> если она перейдет к разделу 2, ячейка с разделом 2 в заголовке станет другого цвета (зеленого).
Покажите свой код. Как создать минимальный воспроизводимый пример
Пытаться:
function onSelectionChange(e) {
var range = e.range;
var col = range.getColumn();
if (range.getRow() === 7
&& (col === 1 || col === 2 || col === 3)) {
SpreadsheetApp.getActiveSheet().getRange(7, 1, 1, 3).setFontColor("grey");
range.setFontColor("black");
}
}
Результат:
Привет. Не знаю, почему у вас onChange работает, а у меня нет. В любом случае это не сработает, поскольку мне нужно, чтобы кнопки ссылок менялись ПОСЛЕ того, как вы нажмете на ссылку. docs.google.com/spreadsheets/d/…
Привет. Трудно сказать, так как я не видел вашей реализации.
«Мне нужно, чтобы кнопки ссылок менялись ПОСЛЕ того, как вы нажмете на ссылку». Это новая информация. Я считаю, что это следует добавить в основной пост, а не в комментарий.
Правильно ли я понимаю, что если сложить первоначальные пожелания с добавленными позже, то в вашем задании теперь будет не 2 цвета (черный и белый), а уже 5 (черный, белый, синий, красный и зеленый)?
Цвета не имеют значения, они нужны для облегчения понимания. Файл, которым я поделился, имеет 2 функции onChange. Один вручную устанавливается как триггер и срабатывает при взаимодействии с зоной. Другой должен просто покрасить фон в красный цвет (это не работает). Мне просто нужно покрасить верхние кнопки в любой цвет, когда этот раздел виден.
Да, дело не в количестве цветов, а в изменении правил игры на ходу. Изначально речь шла об изменении цвета текста («слово активного диапазона — черный текст, остальные 2 — серые»). Сейчас вы говорите об изменении цвета фона («раскрасьте фон»). Вот я и пытаюсь понять, это новые данные вместо старых или в дополнение к ним?
Так что я очень ценю ваш интерес, но вы неправильно поняли вопрос. Вопрос был такой: «При переходе к каждому разделу я хотел бы обновить значение (или каким-либо другим способом), которое я могу использовать для условного форматирования заголовка (слово активного диапазона — черный текст, два других — серые)». Мне нужно обновить ЗНАЧЕНИЕ на основе ДИАПАЗОНА, в который я попадаю при нажатии на ссылку. Цвета (фон, шрифт) не имеют значения. Мне нужно значение с ДИАПАЗОНОМ (или СТРОКОЙ), в котором я нахожусь после нажатия ссылки.
Существует ошибка с событиями onChange. Они будут работать только при обновлении. В итоге я получил этот код:
function onSelectionChange(e) {
var range = e.range;
sheet = SpreadsheetApp.getActiveSheet()
row = range.getRow()
if (row < 50 && row > 4) {
sheet.getRange("H2").setValue(row)
} else if (row < 100 && row >= 50) {
sheet.getRange("H2").setValue(row)
} else if (range.getRow() >= 100) {
sheet.getRange("H2").setValue(row)
}
}
Это обновит H2 текущей активной строкой. На основании этого значения я условно форматирую текст в заголовке.
Я должен извиниться за мое плохое знание английского языка. К сожалению, я не могу понять
a header section with 3 hyperlinks to different areas of the sheet
иAs I jump to each section, I would like to update a value (or some other way) that I can use to conditional format the header (the active range word is black text, the other 2 are gray).
. Могу ли я спросить вас о деталях?