Задать вопрос
Ответы пользователя по тегу Google Sheets
  • Как скриптом запретить перенос ячейки, но при этом разрешить копирование и очищение ячейки?

    @newxdigital Автор вопроса
    ilya kanavin , благодарю за вариант с =INDIRECT("A1"). Он, действительно работает, однако очень сильно падает производительность таблицы, так как функция INDIRECT запускается каждый раз при изменении любой ячейки в листе, а таких ссылок в нем более десятка тысяч.

    Однако обдумав комментарий Alexander Ivanov (благодарю за грамотное объяснение), возникла идея создать решение не на стороне интерфейса, а на стороне сервера.

    Что если сделать скрипт на стороне сервера, который, например, каждые 2 часа проходит по таблице (заранее заданным строкам), находит ячейки с формулами и просто перезаписывает в них правильные формулы? Если брать наш пример, в котором ячейку А1 сдвинули на ячейку А2 и ссылки сбились:
    6018ef476dc06604708054.png
    с точки зрения формул выглядит так:
    6018ef6ac3f00530907245.png
    В нем формулы первой строки теперь указывают на ячейку второй строки (что для нашей задачи неверно), а формулы второй строки стали битыми (что для нашей задачи также неверно).

    Поэтому можно сделать скрипт, который на стороне сервера прошелся по этим двум строкам и сделал следующее:
    6018efc2d4728322078936.png
    это будет выглядеть вот так:
    6018efd6e3a5c950482650.png
    результат получился такой: формулы в первой строке вновь ссылаются на ячейку А1, а формулы второй строки на ячейку А2.

    Если брать более приближенный пример к нашей задачи с несколькими тысячами ссылок, то у нас есть блок ячеек с исходной информацией B2:F4 и далее множество аналогичных по размеру колонок и строк блоков с ячейками, которые ссылаются на эти исходные ячейки
    6018fa1d8c341578624567.png

    скрипту необходимо будет пробежать по всем ячейкам этих строк и заменить формулы на новые формулы по схеме знак равно "=" + "Название столбца, на который ссылается ячейка" + "Номер строки, в которой находится эта текущая ячейка"

    С номером строки тут все понятно, он вычисляется из самой обрабатываемой ячейки. А с номером столбца посложнее, тут надо подумать как его вычислять.

    Что скажете насчет такого варианта?
    Ответ написан
    4 комментария