Как пропускать ряд если там уже есть данные? pygsheets

Рейтинг: 0Ответов: 1Опубликовано: 30.06.2023

Делаю бота на aiogram. Пользователь вводит данные которые записываются в google sheets.
Как пропускать ряд если в нем уже есть данные? Есть ли какая то функция в pygsheets? Или придется делать ручками? Логика такая у каждого id юзера свой ряд.

UPD. Ошибка при append_table()

Task exception was never retrieved
future: <Task finished name='Task-18' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=<HttpError 400 when requesting https://sheets.googleapis.com/v4/spreadsheets/1tDUk9g6PYVFKjJ7BWQwX5mMnSDxxRdaWLywJBFIFLYQ/values/%27%D0%9B%D0%B8%D1%81%D1%82%20%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%20%D0%BE%D0%B4%D0%B8%D0%BD%27%21A2%3AA4:append?valueInputOption=USER_ENTERED&insertDataOption=OVERWRITE&alt=json returned "Invalid value at 'data.values[0]' (type.googleapis.com/google.protobuf.ListValue), "asd"". Details: "[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'field': 'data.values[0]', 'description': 'Invalid value at \'data.values[0]\' (type.googleapis.com/google.protobuf.ListValue), "asd"'}]}]">>
Traceback (most recent call last):
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 415, in _process_polling_updates
    for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
    return await asyncio.gather(*tasks)
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in process_update
    return await self.message_handlers.notify(update.message)
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "c:\Users\Ramil\Desktop\Telegram\Order\main.py", line 36, in process_surname
    wks.append_table(name ,start='A2', end='A4',
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\pygsheets\utils.py", line 214, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\pygsheets\worksheet.py", line 1142, in append_table
    response_json = self.client.sheet.values_append(self.spreadsheet.id, values, dimension, range=self._get_range(start, end),
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\pygsheets\sheet.py", line 268, in values_append
    return self._execute_requests(request)
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\pygsheets\sheet.py", line 496, in _execute_requests
    response = request.execute(num_retries=self.retries)
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\googleapiclient\_helpers.py", line 130, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "C:\Users\Ramil\Desktop\Telegram\Order\.venv\lib\site-packages\googleapiclient\http.py", line 938, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://sheets.googleapis.com/v4/spreadsheets/1tDUk9g6PYVFKjJ7BWQwX5mMnSDxxRdaWLywJBFIFLYQ/values/%27%D0%9B%D0%B8%D1%81%D1%82%20%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%20%D0%BE%D0%B4%D0%B8%D0%BD%27%21A2%3AA4:append?valueInputOption=USER_ENTERED&insertDataOption=OVERWRITE&alt=json returned "Invalid value at 'data.values[0]' (type.googleapis.com/google.protobuf.ListValue), "asd"". Details: "[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'field': 'data.values[0]', 'description': 'Invalid value at \'data.values[0]\' (type.googleapis.com/google.protobuf.ListValue), "asd"'}]}]">

Ответы

▲ 0

Вам нужен метод добавления данных снизу.

У pygsheet это append_table() https://pygsheets.readthedocs.io/en/stable/worksheet.html#pygsheets.Worksheet.append_table

    wk1.append_table(data,start='A2', end=None, 
            dimension='ROWS', overwrite=False)