Как выделить (пометить) активную строку в листах Google? - PullRequest
0 голосов
/ 27 января 2020

Условное форматирование не помогает в этом. Я перепробовал много скриптов, которые публикуются онлайн, но ни один из них не работает.

Та же проблема здесь: https://support.google.com/docs/thread/4469470?hl=en

1 Ответ

1 голос
/ 27 января 2020

Ответ:

К сожалению, это невозможно сделать.

Дополнительная информация:

Основная причина, по которой это не может быть сделано то, что Sheets API и Google Apps Script не имеют прослушивателей, когда активная ячейка на листе изменяется. Кроме того, нет прослушивателей, нажимающих кнопки или кнопки, если нажимаются кнопки или кнопки не вносить изменения или изменения в лист.

Тестирование и обоснование:

У меня возникла путаница с Приложением Script, чтобы выяснить, Я мог бы создать какой-то обходной путь, хотя это заканчивалось столкновением с другими препятствиями.

Там - это способ заставить фон активной строки менять цвет, что можно легко сделать в Apps Script с чем-то вроде:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var currRow = ss.getActiveCell().getRow();
sheet.getRange(currRow + ":" + currRow).setBackground("#F4C2C2");

Зная это и зная, что я не могу вызвать триггер одним щелчком, я создал вместо этого надстройку Sheets с встроенной в нее функцией JavaScript. документа HTML, который вызывает s Метод сценария приложения с указанным c интервалом времени:

<script>
    function poll() {
      setInterval(update, 500);
    }
    function update() {
      google.script.run.rowHighlighter();
    }
</script>

со следующей функцией rowHighlighter() внутри файла code.gs:

function rowHighlighter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var currRow = ss.getActiveCell().getRow();

  var l = PropertiesService.getUserProperties().getProperty("currRow");
  if (l) {
    sheet.getRange(l + ":" + l).setBackground("#FFFFFF");  
  } 

  sheet.getRange(currRow + ":" + currRow).setBackground("#F4C2C2");
  PropertiesService.getUserProperties().setProperties({"currRow": currRow});
}

Я думал, что это Можно было бы вызвать эту функцию из боковой панели надстройки Sheets и использовать класс Apps Script PropertiesService для сохранения текущей выбранной строки, чтобы при щелчке в другом месте цвет можно было сбросить.

Хотя это, казалось, дало положительные результаты, это продолжалось всего несколько секунд - к сожалению, после этого квоты на скрипты приложений попадают, а ошибки в консоли, как видно из конца редактора скриптов приложений, показывают, что необходимо некоторое регулирование поэтому не так много запросов скриптов приложений. Конечно, хотя это и есть то, что вы могли бы сделать * 1040, увеличение интервала, с которым функция update() вызывается в дополнении <body>, снижает реальную актуальность приложения и всю функциональность. перерывы.

Короче; это не может быть сделано Как скрипту приложений, так и API листов не хватает функциональности, и попытка создать что-то, что имитирует его, приведет к тому, что вы будете использовать всю свою квоту, когда ограничения учетной записи будут нарушены.

Я знаю, что это, как правило, плохие новости, но Надеюсь, это вам пригодится!

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...