Производительность скриптов Google Sheets с медленной пользовательской функцией - PullRequest
0 голосов
/ 11 февраля 2019

Настройка: у меня есть лист Google, где я хотел бы запустить пользовательскую функцию, реализованную с помощью скрипта.Этот сценарий используется для выполнения относительно продолжительного процесса поиска и декодирования URL (10 мс на вызов, в зависимости от пропускной способности и проверки связи).Пользовательская функция использует один столбец в качестве входных данных и возвращает результат.

Проблема: Когда мой лист Google открыт, столбец, который использует этот расчет, обновляется.Это останавливает лист Google на 10 секунд, пока каждая ячейка в столбце не будет пересчитана.Это будет только хуже, когда я добавлю в свою таблицу.

Вопрос: Могу ли я изменить скрипт своей функции или изменить настройку в листах Google, чтобы медленная пользовательская функция рассчитывалась только тогда, когдаячейка ввода изменена?

Для всех, кому интересно, вот демонстрационный лист с моей проблемой

1 Ответ

0 голосов
/ 02 мая 2019

В моем ответе на В листах Google я могу обернуть стандартную функцию в пользовательскую функцию для контроля, когда она запускается? Я поделился идеей иметь пару кнопок, называемых "freeze" / "unfreeze"«контролировать, когда будет выполнен пересчет« дорогих формул ».

В этом случае вы можете« заморозить »диапазон с помощью пользовательской функции перед закрытием электронной таблицы, чтобы при следующем открытии она открывалась быстреезатем, когда вам нужно обновить замороженный диапазон, вы «размораживаете» его.

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

  • Глобальная переменная для хранения формулы, если она всегда будет одинаковой
  • copyTo, чтобы перезаписать диапазон результатов формулы значениями, подобными copy-только для вставки значений
  • clear, чтобы удалить результаты формулы, вставленные ранее
  • setFormula, чтобы добавить формулу обратно в электронную таблицу.

Затем яЯ понял, что могу улучшить, выпустив бесплатное дополнение Google Sheets , которое использует PropertiesService для реализации «хранилища формул» с функциями добавления / удаления / вывода списка формул и динамического меню вместо кнопок..

Еще одна попытка - использовать управляемый по времени триггер, который запускается, скажем, ночью, на тот случай, если вы забыли заморозить диапазон для результатов пользовательской функции.

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