Как ускорить работу Apps Script в Google Sheets средствами Google Cloud Platform (GCP)?
В Google Spreadsheets создал меню, из меню перехожу по листам (около 60 листов). При переходе на лист начинает работать скрипт именно для этого листа. Скрипт протягивает формулу G7:G500 на каждом листе. Когда в ячейки получаю результат формулы, применяю метод getValue() и заполняю тот же диапазон G7:G500 setValue().
При переходе на третий или четвертый лист, начинает подвисать и перестает работать.
Смотрел в сторону default и standard project. Смотрел в сторону квот и ограничений.
Предложите в какую сторону смотреть? Нужно получить бесперебойную производительность в таблицах Google! Заранее благодарен!
Ответы (2 шт):
Каждое обращение к листу жрет ресурсы. Бэст практисом предполагаются редкие (только вынужденные) обращения к листу. Т.е. Вы cначала забираете входящие данные с диапазона (Range) листа, например, A7:F500 в массив одним getValues(), рассчитываете формулой внутри скрипта выходные значения и помещаете их в массив ResultArray из 494 элементов, а затем одним setValues() вставляете этот массив в диапазон
.getRange('G7:G500').setValues(ResultArray)
Если не ошибаюсь, то эту задачу через Sheets API можно решить в 2 запроса:
По крайней мере это будет работать для независимых (относительно положения на листах) формул.
Sheets API работает через Advanced Services в самих скриптах.