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

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

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

27 ответов

31 просмотр

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тыс ячеек?

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

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта