• Service invoked too many times in a short time: exec qps. Как исправить?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Главное, что можно сделать из простого - это вместо 50 вызовов делать один вызов на диапазон.
    Код (грубый пример):
    function GETDATE(input) {  
      if (input) {
        if (typeof input.map === "function") return input.map(GETDATE);
        return Utilities.formatDate(new Date(), "GMT+03:00", "HH:mm:ss");
      } else
        return '';
    };
    В самой таблице нужно будет не растягивать формулу, как обычно, а указать ее в первой ячейке, но в параметры передать диапазон:
    =GETDATE(A3:A53)

    Это должно немного снизить нагрузку. Когда пересчитывается весь столбец A3:A53, то по цепочке произойдет не 50 запросов, а один. Хотя визуально обновится весь столбец с датами.

    Далее нужно смотреть, как устроена сама таблица. Если в A3 формула и она постоянно пересчитывается, то это плохо.

    Еще такое (не очень красивое) решение. Можно сделать кнопку, которую, предполагается, нужно нажимать не часто. То есть пользователь редактировал таблицу минут 10, а затем нажимает кнопку, и соответствующий скрипт проставляет даты. Погрешность увеличится, удобство уменьшится, и отдельный вопрос, как это всё сделать, но в лимиты можно будет влезть.
    Ответ написан
    6 комментариев