169 похожих чатов

Обращаюсь к опытным по GAS. По моим анализам CacheService полезно использовать

до 10 000 строк и когда в Гугл таблице много листов/формул и надо получить один кэш (лист).
Можете подсказать как можно ускорить чтение и запись Гугл таблицы с ориентиром на таблицу 50 000 строк и 10 столбцов (без лимитов и квот)?
Практические советы.

27 ответов

34 просмотра

SheetsAPI.Spreadsheets.Values.update( { values: data }, ssId , '${sheetName}'!+range.getA1Notation(), { valueInputOption: 'USER_ENTERED' }) на объемах от 40тыс строк работает быстрее примерно на 20% чем setValues(), но есть особенности при записи значений null, дат и при выходе за границы тек.листа.

𝙺𝚒𝚛𝚒𝚕𝚕 𝙽𝚊𝚜 Nas
SheetsAPI.Spreadsheets.Values.update( { ...

Спасибо. К сожалению, есть квоты и лимиты.

Севак Спартакович Арутюнян
Спасибо. К сожалению, есть квоты и лимиты.

А что, есть выход за квоты по апи? В таком случае стоит искать способ получать не все данные, а только нужную часть.

Dmitriy
А что, есть выход за квоты по апи? В таком случае ...

Как фильтровать данные до получения?

Севак Спартакович Арутюнян
Как фильтровать данные до получения?

Можно доп лист для фильтрации на основании формулы Filter параметры и операторы фильтра в ячейках Первым запросом передаём параметры фильтра Flush Забираем значения

Севак Спартакович Арутюнян
Спасибо. К сожалению, есть квоты и лимиты.

Очень сомнительны запросы превышающие данные квоты. В каком случае нужно больше 300 запросов в минуту?

volond
Можно доп лист для фильтрации на основании формулы...

Создать отдельный лист и данные пропустить через FILTER. Как я понимаю, скрипт больше времени тратит на получение таблицы (книги) - открытие с пересчётом, а чтение данных из листа не так сильно влияет на скорость. Количество строк влияет на открытие книги (получить таблицу - книгу с пересчётом). Если добавить ещё лист + функцию массива, то можно уменьшить скорость. Поправьте, если я не прав.

Роман Игнатов
Очень сомнительны запросы превышающие данные квоты...

300 или 60 для пользователя от имени которого развернут скрипт?

Dmitriy
А что, есть выход за квоты по апи? В таком случае ...

6 минут на работу скрипта обхожу, но стараюсь этого не делать

Роман Игнатов
В минуту? Честно выходите? 1 запрос в секунду? Да ...

Конечно если распределить - нет, а если в секунду получу несколько запросов? И остальные 59 секунд не получу ничего. Условно. Например: Сделал рекламу и ожидаю наплыв пользователей.

Севак Спартакович Арутюнян
Конечно если распределить - нет, а если в секунду ...

Что-то путаете. На минуту квота не выставится. Ответит 429 ошибкой, потребует сбавить обороты, но на минуту никто никого блочить не станет. Такое может наступить если параллельно запустите запросы, для этого нужно быть чуть чокнутым, рассчитывая на то что SpreadsheetApp не станет замедлять работу скрипта. У него скорее всего под капотом такое же ограничение на количество одновременных запросов. В примере своём вы показали что работаете в gas. Условно - добраться до квоты в gas у вас не получится.

Роман Игнатов
Что-то путаете. На минуту квота не выставится. Отв...

У меня получалось делать асинхронные запросы к сторонним API , т.е. время на работу пакета запросов, равнялось времени самого долгого скрипта, а не сумме. Почему бы, в данном случае, не сделать несколько запросов к разным диапазонам одной таблицы асинхронно? Но в таблице желательно предусмотреть уникальный ключ, чтобы собирая данные исключить дубли, подстраховаться. )

Alexⁿ
У меня получалось делать асинхронные запросы к сто...

В таком случае предусмотрел и предугадал что даже ассинхронные запросы могут выпасть с ошибкой 429 и что сделаешь паузу (не в 1 минуту) и повторишь запрос.)

Роман Игнатов
В таком случае предусмотрел и предугадал что даже ...

Здесь надо уже смотреть задачу детальнее, может быть поменять что-то в архитектуре. Насколько актуально получать сразу все данные сразу, а ен частями с задержкой.

Роман Игнатов
Что-то путаете. На минуту квота не выставится. Отв...

Вот это уже интересно 👇 "На минуту квота не выставится." Правильно ли понимаю, что 60 можно израсходовать за секунду?

Роман Игнатов
Что-то путаете. На минуту квота не выставится. Отв...

Или Вы хотели сказать, что можно параллельно обработать запросы при пиковой нагрузке: - часть через Sheets API; - часть через SpreadsheetApp; - часть через кэш. Если да, отличная идея.

Плохая идея. Что такое данные из кеша и как они связаны с тем что данные нужны из таблицы?

Роман Игнатов
Плохая идея. Что такое данные из кеша и как они св...

Задача справится с пиковой нагрузкой и максимально ускорить работу (чтение и запись данных, иногда несколько листов) с ориентиром на 50 000 строк и 10 столбцов (50 000 не на всех листах).

Севак Спартакович Арутюнян
Задача справится с пиковой нагрузкой и максимально...

Если речь начинает идти про нагрузки, да еще и пиковые, то вам надо смотреть в сторону своего сервера. )

Роман Игнатов
Это не ответ на вопрос про кеш.)

В кеше данные из листа целиком.

А какая _практическая_ задача требует регулярную перезапись 500тыс ячеек?

Севак Спартакович Арутюнян
Спасибо. К сожалению, есть квоты и лимиты.

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

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта