до 10 000 строк и когда в Гугл таблице много листов/формул и надо получить один кэш (лист).
Можете подсказать как можно ускорить чтение и запись Гугл таблицы с ориентиром на таблицу 50 000 строк и 10 столбцов (без лимитов и квот)?
Практические советы.
SheetsAPI.Spreadsheets.Values.update( { values: data }, ssId , '${sheetName}'!+range.getA1Notation(), { valueInputOption: 'USER_ENTERED' }) на объемах от 40тыс строк работает быстрее примерно на 20% чем setValues(), но есть особенности при записи значений null, дат и при выходе за границы тек.листа.
Спасибо. К сожалению, есть квоты и лимиты.
А что, есть выход за квоты по апи? В таком случае стоит искать способ получать не все данные, а только нужную часть.
Как фильтровать данные до получения?
Можно доп лист для фильтрации на основании формулы Filter параметры и операторы фильтра в ячейках Первым запросом передаём параметры фильтра Flush Забираем значения
Очень сомнительны запросы превышающие данные квоты. В каком случае нужно больше 300 запросов в минуту?
Создать отдельный лист и данные пропустить через FILTER. Как я понимаю, скрипт больше времени тратит на получение таблицы (книги) - открытие с пересчётом, а чтение данных из листа не так сильно влияет на скорость. Количество строк влияет на открытие книги (получить таблицу - книгу с пересчётом). Если добавить ещё лист + функцию массива, то можно уменьшить скорость. Поправьте, если я не прав.
300 или 60 для пользователя от имени которого развернут скрипт?
6 минут на работу скрипта обхожу, но стараюсь этого не делать
В минуту? Честно выходите? 1 запрос в секунду? Да ладно.)
Конечно если распределить - нет, а если в секунду получу несколько запросов? И остальные 59 секунд не получу ничего. Условно. Например: Сделал рекламу и ожидаю наплыв пользователей.
Что-то путаете. На минуту квота не выставится. Ответит 429 ошибкой, потребует сбавить обороты, но на минуту никто никого блочить не станет. Такое может наступить если параллельно запустите запросы, для этого нужно быть чуть чокнутым, рассчитывая на то что SpreadsheetApp не станет замедлять работу скрипта. У него скорее всего под капотом такое же ограничение на количество одновременных запросов. В примере своём вы показали что работаете в gas. Условно - добраться до квоты в gas у вас не получится.
У меня получалось делать асинхронные запросы к сторонним API , т.е. время на работу пакета запросов, равнялось времени самого долгого скрипта, а не сумме. Почему бы, в данном случае, не сделать несколько запросов к разным диапазонам одной таблицы асинхронно? Но в таблице желательно предусмотреть уникальный ключ, чтобы собирая данные исключить дубли, подстраховаться. )
В таком случае предусмотрел и предугадал что даже ассинхронные запросы могут выпасть с ошибкой 429 и что сделаешь паузу (не в 1 минуту) и повторишь запрос.)
Здесь надо уже смотреть задачу детальнее, может быть поменять что-то в архитектуре. Насколько актуально получать сразу все данные сразу, а ен частями с задержкой.
Вот это уже интересно 👇 "На минуту квота не выставится." Правильно ли понимаю, что 60 можно израсходовать за секунду?
Или Вы хотели сказать, что можно параллельно обработать запросы при пиковой нагрузке: - часть через Sheets API; - часть через SpreadsheetApp; - часть через кэш. Если да, отличная идея.
https://habr.com/ru/articles/722970/
Плохая идея. Что такое данные из кеша и как они связаны с тем что данные нужны из таблицы?
Задача справится с пиковой нагрузкой и максимально ускорить работу (чтение и запись данных, иногда несколько листов) с ориентиром на 50 000 строк и 10 столбцов (50 000 не на всех листах).
Если речь начинает идти про нагрузки, да еще и пиковые, то вам надо смотреть в сторону своего сервера. )
Это не ответ на вопрос про кеш.)
В кеше данные из листа целиком.
А какая _практическая_ задача требует регулярную перезапись 500тыс ячеек?
гуглец делает сервисы не для того что бы осчастливить человечество, а что бы зарабатывать)) А квоты преодолеваются. - разнесением функционала на разные аки. - время исполнения функций - фраментируется. - тригеры делаются диспачером - функционал переносится на внешнее исполнение - уменьшаются оплатой ака ...
А что такое диспатчер для триггеров?
Обсуждают сегодня