Связать код регистрации в боте с добавлением данных в гугл таблицу

Пишу бота на aiogram на Pyhton. Столкнулся с проблемой. У меня есть файл хранящий обработчики и файл с кодом для работы в гугл таблицах. После того как обработчики для регистрации в боте отрабатывают регистрационные данные пользователя должны добавляться в гугл таблицу. Но я не очень сильно понимаю как подружить это дело. Для наглядности ниже фрагменты кода: Handlers:

from app.database.models import add_data_to_sheet
class Register(StatesGroup):
    name = State()
    number = State()
    teleID = State()
    purpose = State()


    @router.callback_query(F.data == 'Registration')
async def reg(callback: CallbackQuery, state: FSMContext):
    await callback.answer('Начните регистрацию')
    await state.set_state(Register.name)
    await callback.message.answer('Введите ваше имя')


@router.message(Register.name)
async def register_name(message: Message, state: FSMContext):
    await state.update_data(name=message.text)
    await state.set_state(Register.teleID)
    await message.answer('Введите ваше имя пользователя Telegram')


@router.message(Register.teleID)
async def register_age(message: Message, state: FSMContext):
    await state.update_data(TeleID=message.text)
    await state.set_state(Register.purpose)
    await message.answer('Напишите какой вопрос вас интересует')


@router.message(Register.purpose)
async def register_age(message: Message, state: FSMContext):
    await state.update_data(purpose=message.text)
    await state.set_state(Register.number)
    await message.answer('Отправьте ваш номер телефона', reply_markup=kb.get_number)


sheet_id = ''


@router.message(Register.number, F.contact)
async def register_number(message: Message, state: FSMContext):
    await state.update_data(number=message.contact.phone_number)
    data = await state.get_data()
    message_text = (f'Ваше имя: {data["name"]}\n'
                    f'Ваше имя телеграм: {data["TeleID"]}\n'
                    f'Номер: {data["number"]}\n'
                    f'Ваш вопрос: {data["purpose"]}')

    # Разделяем данные после двоеточия
    split_data = message_text.split(':')
    name = split_data[1].split('\n')[0].strip()
    telegram_id = split_data[2].split('\n')[0].strip()
    number = split_data[3].split('\n')[0].strip()
    purpose = split_data[4].strip()

    # Добавляем данные в Google Таблицу
    await add_data_to_sheet(sheet_id, {'name': name, 'TeleID': telegram_id, 'number': number, 'purpose': purpose})

    await message.answer(message_text)
    await state.clear()

Models, где хранится код для работы с таблицей:

from googleapiclient.discovery import build
from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
SERVICE_ACCOUNT_FILE = os.path.join(BASE_DIR, 'credentials.json')

credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)


def add_data_to_sheet(google_service_instance, sheet_id, data):
    range_name = 'Лист1!A1:D5'  # Укажите здесь диапазон ячеек, куда вы хотите добавить данные

    value_range_body = {
        'majorDimension': 'ROWS',
        'values': data
    }

    request = google_service_instance.spreadsheets().values().append(
        spreadsheetId=sheet_id,
        range=range_name,
        valueInputOption='USER_ENTERED',
        body=value_range_body
    )

    response = request.execute()
    print('Данные успешно добавлены в таблицу.')

Что в конечном итоге мне нужно сделать и что я делаю неправильно для того, чтобы проект работал корректно, то есть после того как пользователь введет нужные данные, они добавятся в гугл таблицу?


Ответы (0 шт):