Ошибка «В этом диапазоне уже есть лист с другим набором заголовков»Python

Программы на Python
Ответить
Anonymous
 Ошибка «В этом диапазоне уже есть лист с другим набором заголовков»

Сообщение Anonymous »

Программа работает как надо, то есть заполняет таблицу Google Таблиц, но по какой-то причине при выполнении этого кода выводится ошибка В этом диапазоне уже есть рабочий лист с другим набором заголовков. Никаких пробелов и никаких (на первый взгляд) проблем нет. Я не понимаю, почему. Я бы сохранил его, но хочу, чтобы мой код не содержал ошибок, даже незначительных.

Код: Выделить всё

import pygsheets
from datetime import datetime

class GoogleTable:
def __init__(self, credence_service_file: str, googlesheet_file_url: str) -> None:
self.credence_service_file = credence_service_file
self.googlesheet_file_url = googlesheet_file_url

def _get_googlesheet_by_url(self):
try:
client = self._get_googlesheet_client()
sheets = client.open_by_url(self.googlesheet_file_url)
return sheets
except Exception as e:
raise RuntimeError(f"Ошибка подключения к Google Таблице: {e}")

def _get_or_create_sheet(self, sheet_title: str):
sheets = self._get_googlesheet_by_url()
normalized_title = sheet_title.strip()

try:
# Проверяем существующие листы
for sheet in sheets.worksheets():
if sheet.title.strip().lower() == normalized_title.lower():
print(f"Лист найден: {sheet.title}")
return sheet

# Если лист не найден, создаем новый
worksheet = sheets.add_worksheet(normalized_title)
print(f"Создан новый лист: {normalized_title}")
return worksheet
except Exception as e:
raise RuntimeError(f"Ошибка при обработке листа: {e}")

def _get_googlesheet_client(self):
try:
return pygsheets.authorize(service_file=self.credence_service_file)
except Exception as e:
raise RuntimeError(f"Ошибка авторизации Google API: {e}")

def find_admin(self, admin_id: str) -> bool:
worksheet = self._get_or_create_sheet("Админы")
worksheet.refresh()

headers = worksheet.get_row(1)
if "ID" not in headers:
return False

col_index = headers.index("ID") + 1
all_values = worksheet.get_all_values()

for row in all_values[1:]:
if len(row) >= col_index and row[col_index - 1] == admin_id:
return True
return False

def add_admin(self, admin_id: str, full_name: str, username: str, phone_number: str) -> None:
try:
worksheet = self._get_or_create_sheet("Админы")
if self.find_admin(admin_id):
print(f"Админ с ID {admin_id} уже существует.")
return

current_time = datetime.now().strftime("%H:%M %d.%m.%Y")
new_row = [full_name, admin_id, username, phone_number, current_time]
worksheet.append_table(new_row, start="A1", dimension="ROWS", overwrite=False)
print(f"Добавлен новый админ: {full_name}.")
except Exception as e:
print(f"Ошибка добавления админа: {e}")
raise
Пытался решить проблему через ChatGPT. Конечно предлагает варианты, но все равно вылезает такая ошибка. Искал в интернете варианты, но тщетно

Подробнее здесь: https://stackoverflow.com/questions/793 ... -title-set
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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