Массовый экспорт кадров данных GSPREAD на отдельные листы без срабатывания ограничений на запросы на запись API.Python

Программы на Python
Anonymous
Массовый экспорт кадров данных GSPREAD на отдельные листы без срабатывания ограничений на запросы на запись API.

Сообщение Anonymous »

Я исчерпаю квоту API gsheet для запросов на запись при записи относительно небольших фреймов данных в одну электронную таблицу.
Фреймы данных хранятся в словаре. КЛЮЧ используется для имени ЛИСТА, а ЗНАЧЕНИЕ — это экспортируемый фрейм данных.
Сейчас я просматриваю фреймы данных в цикле, создавая ЛИСТ и сохраняя данные.
gc = gspread.oauth(credentials_filename=credential_path("credentials.json"),
authorized_user_filename=credential_path("token.json")
)

gc_sh = gc.create('rote_output_' + yyyymmddhhss())

# (rote_data is the dictionary of dataframes)
for k, v in rote_data.items():
gc_sh.add_worksheet(title=k, rows=100, cols=20)
worksheet = gc_sh.worksheet(k)
worksheet.update([v.columns.values.tolist()] + (v.fillna('')).values.tolist())
worksheet.freeze(rows=1)

Похоже, что четыре «операции» в цикле рассматриваются как отдельные вызовы, и поэтому, если у меня есть 15 кадров данных, я мгновенно обрабатываю 60 запросов на запись, вызывая блок API.
Есть ли способ выполнять обновления как «массовый» запрос, чтобы не выйти за эти ограничения? Документация по пакетному обновлению() не содержит подробностей, и я не уверен, что можно создать, а затем сохранить на разных листах, используя эту формулу, что было бы идеально.
** РЕДАКТИРОВАТЬ:
Как создать несколько листов в электронной таблице с помощью gspread и Python?
Из этого вопроса/ответа видно, что пакетное обновление может иметь возможность сделайте это, хотя не ясно, как бы я совместил запрос на создание листа с фактическим обновлением данных на каждом листе
client = # Please use your client.

employee_names = ["Jonny", "Emma",,,] # Please set the sheet names. spreadsheetId = "###" # Please set your spreadsheet ID.

requests = [
{
"addSheet": {
"properties": {
"title": e,
"gridProperties": {"rowCount": 100, "columnCount": 20},
}
}
}
for e in employee_names ]
spreadsheet = client.open_by_key(spreadsheetId)
spreadsheet.batch_update({"requests": requests})


Подробнее здесь: https://stackoverflow.com/questions/786 ... g-api-writ

Вернуться в «Python»